Skip to main content
Use this endpoint to see exactly what your API key can do: which endpoints your account can call, which response fields each returns, the rate limit that applies to you per endpoint, and what each one costs your account in credits. It is read-only — to change your access, contact your Crustdata account manager.
This endpoint is free — checking your permissions does not consume any credits. It is rate limited to 300 requests per minute.

Endpoint

Authenticate with your API key in the Authorization header and send the required x-api-version: 2025-11-01 header — requests without it return 400. Permissions are account-wide: every API key on your account starts with the same access. An admin can narrow an individual key further — see Per-key endpoint access.

Filter, or the response is hard to read

Unfiltered, this endpoint returns all 32 product endpoints, and every entry lists each response field your account can and cannot receive as a dot-path string. That is 1,929 field strings in total, and /company/enrich alone contributes 558 enabled and 58 disabled. As compact JSON on a single line the whole payload is around 76 KB, which is why --format json on the CLI gives you a wall of text. Start with a single endpoint to learn the shape:
That entry is five fields long and fits on a screen. Then widen with category or status. If you do want everything, pipe it through jq and drop the field lists:

Query parameters

All parameters are optional filters and combine with AND. A filter that matches nothing returns 200 with an empty endpoints array, not a 404.

Example request

Search endpoints carry the filter side too. /person/search prices both — filtering on a premium group and receiving it are independent charges per result, and the filter-only GitHub units appear under premium_filters alone:
Search entry (trimmed)
The standard list prices behind these per-account numbers are on the pricing page.

Response fields

How to read the prices

Every price is your account’s own price, read from your billing configuration — a negotiated or contract rate shows here as the rate you actually pay. Endpoints omit the keys that do not apply to them: an enrich endpoint has no premium_filters, and an endpoint with no extras carries base_credits alone. In premium_filters and premium_fields, field is a path prefix: a root such as experience covers every path beneath it, and the longest matching prefix wins, so dev_platform_profiles.repos is priced by its own entry rather than by dev_platform_profiles. The two sides are independent — filtering on a field and receiving it are separate charges — and sorting on one is free. A field priced to filter on but never returned by the endpoint appears only in premium_filters.

How to read the field lists

  • On an enabled endpoint, fields.disabled lists the specific fields your plan does not include — the endpoint works, but those fields are omitted from its responses.
  • On a disabled endpoint, fields.enabled is empty and fields.disabled lists everything the endpoint can return — the full set you would unlock by enabling it.
  • Batch endpoints (/batch/...) list the fields of the job envelope they return (batch_id, status, status_url, and so on), not the fields of the records the job produces. Read the matching non-batch endpoint’s entry for those. A batch endpoint with no field-gated payload lists nothing at all.
  • Field names are dotted paths (for example basic_info.company_type) matching the response structure of the endpoint. Both lists are sorted, and so is the endpoints array itself.

Errors

Per-key endpoint access

Account permissions set the ceiling for every key on the account. A workspace admin can restrict an individual key to a subset of those endpoints on the API Keys page in your dashboard. A key with no restriction can call everything the account has enabled. Calling an endpoint the key is not allowed to use returns 403:
The status and error.type match an account-level permission failure, so clients need no new handling. The message names the endpoint that was refused.

When a request asks for a disabled field

Naming a field from fields.disabled in a request returns 403 before any work happens, so X-Credits-Used is 0. The metadata entry splits the fields the account was refused from the ones it holds, so you can retry with a narrower fields list:
403 field denied
permitted_fields is the account’s whole grant list for that endpoint, so in a real response it runs to hundreds of dot-paths. The example above is trimmed. Batch endpoints (/batch/...) return the same status and error.type and put the permitted list in the message instead of in metadata. The message below is trimmed the same way: on a wide grant the real one carries every permitted dot-path and runs to tens of kilobytes, so size your log lines for it.
403 field denied on a batch endpoint
Resending the same body gets you the same 403. Send a narrower fields list to get the rest of the record, or book the call the message links to and have the field enabled.

What to do next

  • Check your balance — see Credits before large batches.
  • Understand per-endpoint limits — see Rate limits.
  • See what fields cost — review Pricing for credit costs per endpoint.