All integrations

Crustdata

DATA · DATA & ANALYTICS

Company and people search, enrichment, and live professional-network lookups on their own key.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

crustdata_delete_watch_by_dataset_by_watch_idWRITE

Cancel one entity watch. DESTRUCTIVE and not reversible through this API: the watch stops running and Crustdata publishes no un-cancel endpoint. via DELETE /watch/{dataset}/{watch_id}

api
crustdata_delete_watch_by_dataset_search_by_watch_idWRITE

Cancel one discovery watch. DESTRUCTIVE and not reversible through this API: the watch stops running and Crustdata publishes no un-cancel endpoint. via DELETE /watch/{dataset}/search/{watch_id}

api
crustdata_delete_watch_by_watch_idWRITE

Cancel one watch by its numeric id. DESTRUCTIVE and not reversible through this API: the watch stops running and Crustdata publishes no un-cancel endpoint. Its recorded runs stay readable. via DELETE /watch/{watch_id}

api
crustdata_get_account_creditsREAD

Read the account's credit summary. The balance sits under the `account` key, never at the top level. Free, consumes no credits, and takes no arguments -- which is why it is the endpoint this integration probes a pasted key against. via GET /account/credits

api
crustdata_get_account_endpointsREAD

Read what this account may call, endpoint by endpoint: whether it is `enabled` or `disabled`, which response fields are enabled, the effective rate limit in requests per minute, and the account's own per-result and per-premium-field prices. THIS IS THE TOOL THAT ANSWERS "why did that call return 403". PASS A FILTER: unfiltered the response is roughly 76 KB on a single line, because the field lists run to 558 entries for `/company/enrich` alone. `path` matches one endpoint, `category` matches a product group (`Company`, `Person`, `Jobs`, `Web`, `LinkedIn & Social`, `Other`, case-insensitively) and `status` keeps only the enabled or only the disabled ones. Free. via GET /account/endpoints

api
crustdata_get_account_usage_errorsREAD

Group this account's failed API requests over a time window, optionally narrowed to particular API keys or endpoints. Free. via GET /account/usage/errors

api
crustdata_get_account_usage_eventsREAD

List this account's individual API calls, newest first, filtered by time window, API key, endpoint, product, status, status class, client surface or error, and paged with an opaque `cursor`. `hide_free` drops the calls that cost nothing. Free. via GET /account/usage/events

api
crustdata_get_account_usage_events_by_request_idREAD

Read one usage event by its request id, together with the request that was stored for it -- the call to make when an agent's earlier request needs explaining. Free. via GET /account/usage/events/{request_id}

api
crustdata_get_account_usage_summaryREAD

Aggregate this account's API usage into one row per combination of the dimensions named in `group_by` (day, product, endpoint, component, API key, client surface, client platform or status class), bucketed by day or hour over a `start`/`end` window. Free. via GET /account/usage/summary

api
crustdata_get_batchREAD

List this account's batch jobs, most recent first, optionally filtered by status and paged with an opaque `cursor`. via GET /batch

api
crustdata_get_batch_by_batch_idREAD

Read one batch job's current state: its status, counts, error message when it has one, and -- once `status` is `completed` -- its `download_url`/`download_urls`. Check `result_count` before downloading: a completed job with zero results can still carry a URL pointing at a file that was never written, which answers 404. via GET /batch/{batch_id}

api
crustdata_get_watch_by_datasetREAD

List the entity watches on one dataset -- the watches that track a FIXED set of records and report when the fields you chose change -- optionally filtered by status and paged with `limit`/`offset`. Only `person` and `company` have entity watches. via GET /watch/{dataset}

api
crustdata_get_watch_by_dataset_by_watch_idREAD

Read one entity watch on one dataset, in the same shape create, list and update return. via GET /watch/{dataset}/{watch_id}

api
crustdata_get_watch_by_dataset_by_watch_id_runsREAD

List one watch's runs on one dataset, newest first, paged by an integer `cursor`. `only_credited` narrows the page to the runs that were charged. via GET /watch/{dataset}/{watch_id}/runs

api
crustdata_get_watch_by_dataset_by_watch_id_runs_by_run_id_summaryREAD

Read one run of one watch on one dataset in full: its counts, its activity log and what each delivery channel answered. via GET /watch/{dataset}/{watch_id}/runs/{run_id}/summary

api
crustdata_get_watch_by_dataset_searchREAD

List the discovery watches on one dataset -- the watches that run a SEARCH on a schedule and report the entities that newly match -- optionally filtered by status and paged with `limit`/`offset`. via GET /watch/{dataset}/search

api
crustdata_get_watch_by_dataset_search_by_watch_idREAD

Read one discovery watch on one dataset, in the same shape create, list and update return. via GET /watch/{dataset}/search/{watch_id}

api
crustdata_get_watch_by_watch_idREAD

Read one watch by its numeric id, whichever dataset and kind it belongs to -- the dataset-agnostic address, for when all you have is the id. via GET /watch/{watch_id}

api
crustdata_get_watch_by_watch_id_runsREAD

List one watch's runs, newest first, paged by an integer `cursor`. `only_credited` narrows the page to the runs that were charged. via GET /watch/{watch_id}/runs

api
crustdata_get_watch_by_watch_id_runs_by_run_id_summaryREAD

Read one run of one watch in full: its counts, its activity log and what each delivery channel answered. via GET /watch/{watch_id}/runs/{run_id}/summary

api
crustdata_patch_watch_by_dataset_by_watch_idWRITE

Change an entity watch's mutable settings. ONLY four keys are accepted: sending `track`, `fields`, `dataset`, `kind`, `api_version`, `filters`, `sorts` or `on` is answered 400. via PATCH /watch/{dataset}/{watch_id}

api
crustdata_patch_watch_by_dataset_search_by_watch_idWRITE

Change a discovery watch's name, config or delivery channels. ONLY those three keys are accepted: sending `filters`, `sorts`, `on`, `fields`, `dataset`, `kind` or `api_version` is answered 400. via PATCH /watch/{dataset}/search/{watch_id}

api
crustdata_patch_watch_by_watch_idWRITE

Change one watch's mutable settings by its numeric id. The accepted keys differ by kind -- an entity watch and a discovery watch take different sets, and sending a key the watch's kind does not accept is answered 400. via PATCH /watch/{watch_id}

api
crustdata_post_batch_company_enrichWRITE

Enrich many companies asynchronously, with the same identifier types and field selection as the synchronous company enrich. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/company/enrich

api
crustdata_post_batch_company_professional_network_search_liveWRITE

Run a live professional-network company search asynchronously. Provide either `filters` (a flat list of `{field, type, value}`) or a `professional_network_search_url`; omitting both is answered 400. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /batch/company/professional_network/search/live

api
crustdata_post_batch_company_searchWRITE

Run one company-search filter group asynchronously; the job walks the paginated result set server-side until `max_results` is reached or the results run out. The synchronous paging parameters (`limit`, `page`, `preview`) are ignored here. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/company/search

api
crustdata_post_batch_job_searchWRITE

Deliver every indexed job listing for a set of Crustdata company ids asynchronously. There is no `filters` or `max_results` control on this endpoint -- it walks the whole result set for those companies. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/job/search

api
crustdata_post_batch_person_contact_enrichWRITE

Look up contact details for many professional-network profile URLs asynchronously. `professional_network_profile_urls` is the only identifier type accepted and `fields` is REQUIRED -- it names which contact kinds to retrieve. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /batch/person/contact/enrich

api
crustdata_post_batch_person_enrichWRITE

Enrich many people asynchronously, with the same identifier types and field selection as the synchronous person enrich. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/person/enrich

api
crustdata_post_batch_person_identifyWRITE

Resolve many person identifiers to dataset records asynchronously. This is the one endpoint on the account with no rate limit at all. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/person/identify

api
crustdata_post_batch_person_professional_network_enrich_liveWRITE

Retrieve many professional-network profiles fresh from the web asynchronously. `professional_network_profile_urls` is the only identifier type accepted. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /batch/person/professional_network/enrich/live

api
crustdata_post_batch_person_professional_network_search_liveWRITE

Run a live professional-network person search asynchronously. Provide either `filters` or a `professional_network_search_url`; omitting both is answered 400. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /batch/person/professional_network/search/live

api
crustdata_post_batch_person_searchWRITE

Run one person-search filter group asynchronously; the job walks the paginated result set server-side until `max_results` is reached or the results run out. The synchronous paging parameters are ignored here. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/person/search

api
crustdata_post_batch_person_verifyWRITE

Check asynchronously whether professional-network profile URLs still resolve to live profiles. `professional_network_profile_urls` is required; omitting it is answered 400. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /batch/person/verify

api
crustdata_post_batch_social_post_professional_network_enrich_liveWRITE

Retrieve professional-network posts for many identifiers asynchronously. Provide exactly ONE identifier type -- profile URLs, post URLs, company professional-network URLs, Crustdata company ids, company names or company domains; none or more than one is answered 400. Each list may also be sent as a single comma-separated string. Returns immediately with a `batch_id` and a `status_url`: NO DATA comes back at submit time. Poll `crustdata_get_batch_by_batch_id` until `status` is `completed`, then read `download_url`/`download_urls` -- and check `result_count` first, because a completed job with `result_count: 0` can carry a `download_url` pointing at a file that was never written. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /batch/social_post/professional_network/enrich/live

api
crustdata_post_company_enrichWRITE

Read full company profiles from the dataset -- basic info, headcount and its growth, role distribution, funding, revenue estimates, markets, industries and locations -- by name, domain, Crustdata company id or professional-network profile URL, one entry per identifier. Provide exactly ONE identifier type per request, and name `fields` to keep the response small: the unfiltered company record carries 558 response fields. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /company/enrich

api
crustdata_post_company_identifyWRITE

Resolve 1 to 25 company names, domains, Crustdata company ids or professional-network profile URLs to the companies that match, one entry per identifier submitted. Provide exactly ONE identifier type per request. Use this to turn a messy name or domain into a `crustdata_company_id` before enriching. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /company/identify

api
crustdata_post_company_professional_network_search_liveWRITE

Run a company search against the professional network in real time, 25 results per page, from `filters` or by replaying a saved `professional_network_search_url`. Slower and more expensive than the indexed dataset search; use it when freshness matters more than cost. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /company/professional_network/search/live

api
crustdata_post_company_searchWRITE

Search Crustdata's indexed company dataset with structured `filters`, a natural-language `search` block, or both -- at least one is required -- plus sorts, field selection and cursor pagination. Build filter values with `crustdata_post_company_search_autocomplete` so a filter names values the dataset really holds. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /company/search

api
crustdata_post_company_search_autocompleteWRITE

Suggest valid values for one `/company/search` filter field, so a filter is built from values the dataset actually holds rather than from a guess that silently matches nothing. via POST /company/search/autocomplete

api
crustdata_post_job_professional_network_search_liveWRITE

Retrieve one company's job listings from the professional network at request time rather than from the index. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /job/professional_network/search/live

api
crustdata_post_job_searchWRITE

Search the indexed job-listing dataset with filters, sorts, field selection, aggregations and pagination -- what roles a set of companies is hiring for, where, and since when. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /job/search

api
crustdata_post_job_search_autocompleteWRITE

Suggest valid values for one `/job/search` field, so a filter is built from values the dataset actually holds. via POST /job/search/autocomplete

api
crustdata_post_person_contact_enrichWRITE

Look up business emails, personal emails and phone numbers for people named by professional-network profile URL or by business email -- exactly ONE identifier type per request -- optionally restricted to the contact tiers you want. The `verified` request mode costs extra per result. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /person/contact/enrich

api
crustdata_post_person_enrichWRITE

Read full person profiles from the dataset by professional-network profile URL -- current and past roles, seniority, skills, education and the company each role belongs to -- one entry per identifier. Name `fields` to keep the response small: the unfiltered person record carries 235 response fields. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /person/enrich

api
crustdata_post_person_professional_network_enrich_liveWRITE

Retrieve a person's profile from the professional network at request time, rather than from the indexed dataset. Same identifier types as the dataset enrich; slower and more expensive, and the right call when the profile changed more recently than the index. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /person/professional_network/enrich/live

api
crustdata_post_person_professional_network_search_liveWRITE

Run a person search against the professional network in real time, from `filters` plus a page number or by replaying a saved `professional_network_search_url`. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /person/professional_network/search/live

api
crustdata_post_person_searchWRITE

Search Crustdata's indexed person dataset with `filters` (optionally grouped with and/or), sorts, a result limit and cursor pagination. Build filter values with `crustdata_post_person_search_autocomplete`. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /person/search

api
crustdata_post_person_search_autocompleteWRITE

Suggest valid values for one `/person/search` filter field, so a filter is built from values the dataset actually holds. via POST /person/search/autocomplete

api
crustdata_post_social_post_professional_network_enrich_liveWRITE

Read professional-network posts at request time for exactly ONE identifier: a person's profile URL, a single post URL, or a company (name, domain, Crustdata company id or professional-network URL). Either `page` or `limit` is required -- not both -- unless a `social_post_url` names a single post. Posts come back in a `posts` array. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /social_post/professional_network/enrich/live

api
crustdata_post_social_post_professional_network_search_liveWRITE

Search professional-network posts at request time by keyword, author and date rather than reading one author's feed. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /social_post/professional_network/search/live

api
crustdata_post_social_post_searchWRITE

Search Crustdata's indexed social-post dataset -- the cheaper, less fresh counterpart to the live post search. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. PLAN-GATED: this endpoint is an enterprise/plan entitlement, so an account without it is answered 403 with `error.type: permission_error` naming the endpoint. That is the account's tier, not a broken connection and not a bad key -- read `crustdata_get_account_endpoints` to see which endpoints this account may call. via POST /social_post/search

api
crustdata_post_watch_by_datasetWRITE

Create an entity watch on one dataset: `track` names the records to watch and `fields` the fields whose change should notify. The response also reports which of the identifiers you supplied could not be read. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /watch/{dataset}

api
crustdata_post_watch_by_dataset_by_watch_id_testWRITE

Send a test notification for an existing entity watch and report what each channel answered, together with the exact envelope delivered. Every field is optional. via POST /watch/{dataset}/{watch_id}/test

api
crustdata_post_watch_by_dataset_searchWRITE

Create a discovery watch on one dataset: a saved search that runs on a schedule and notifies the channels in `on` about entities that newly match. `filters` is required on an ordinary watch; on a realtime watch (`config.is_realtime: true`) `realtime_filters` is what it runs on and `filters` becomes optional. Preview one first with `crustdata_post_watch_by_dataset_search_by_watch_id_test` or by reading the create response's `can_create`. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /watch/{dataset}/search

api
crustdata_post_watch_by_dataset_search_by_watch_id_testWRITE

Send a test notification for an existing discovery watch and report what each channel answered, together with the exact envelope delivered. Every field is optional, so an empty body is valid. via POST /watch/{dataset}/search/{watch_id}/test

api
crustdata_post_watch_by_dataset_testWRITE

Build a sample notification from an in-progress entity watch config WITHOUT saving anything -- the same `track` and `fields` a create would carry -- and report what each channel answered. via POST /watch/{dataset}/test

api
crustdata_post_web_enrich_liveWRITE

Fetch the content of one or more URLs, one result per URL requested. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /web/enrich/live

api
crustdata_post_web_search_liveWRITE

Run a web search and get ranked results with their titles, URLs and snippets. SPENDS CREDITS: Crustdata charges per result returned, and premium fields, premium filters and premium request modes cost extra per result. `crustdata_get_account_endpoints` reports this account's own per-endpoint and per-field prices, and `crustdata_get_account_credits` its remaining balance. via POST /web/search/live

api

Put Crustdata behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.