Reference

Errors and recovery

Public API failures use one response envelope so clients can tell validation, authentication, quota, rate-limit, and server outcomes apart.

Error shape

{
  "code": 422,
  "msg": "Invalid parameter format or value",
  "data": null
}

HTTP status reference

HTTP
400
Meaning
Invalid or missing request parameters, including a refused query tree
Client action
Correct the request before retrying
HTTP
401
Meaning
Missing or invalid API key
Client action
Provide a valid Bearer key
HTTP
402
Meaning
Credits exhausted
Client action
Review quota and plan state
HTTP
403
Meaning
Key disabled, expired, or missing scope
Client action
Use an active key with the required scope
HTTP
404
Meaning
Route or selected record not found
Client action
Check the path or omit unavailable records
HTTP
422
Meaning
Invalid parameter format or value
Client action
Fix the named field
HTTP
429
Meaning
Rate limit exceeded
Client action
Back off before retrying
HTTP
500
Meaning
Internal server error
Client action
Retry only with bounded backoff
HTTP
503
Meaning
Capability unavailable
Client action
Treat the feature as unavailable

Query Spec refusals

A query tree is translated before anything runs, so these all arrive as a 400 and none of them cost a Credit. The Query Spec page explains the grammar behind each one.

Message
At least one search condition is required.
What triggered it
An empty where tree
Fix
Add a condition. An unfiltered sweep of the corpus is not available
Message
Unsupported query field. See the documented field list.
What triggered it
A field name that is not in this dataset's list
Fix
Check the dataset's field table. The three datasets do not share one vocabulary, so a name from another one is refused here
Message
Unsupported operator. Allowed: eq, in, match, gte, lte, exists.
What triggered it
Two operators in one leaf, no operator, an operator the field does not accept, or a number sent as a string
Fix
One operator per leaf, matched to the field kind. Split a bounded range into an all of two leaves
Message
Each query node must be one of: all, any, not, a scope, or a field condition.
What triggered it
A node shape the grammar does not have, or an extra key on a leaf
Fix
Remove the extra key, or wrap the conditions in a composer
Message
Unsupported date value. Use YYYY-MM-DD or a documented relative value such as now-6m.
What triggered it
A date form outside the documented set, or an offset past the maximum
Fix
Use YYYY-MM-DD, or now-<n>d, now-<n>m, now-<n>y inside the published limits
Message
Field is not available inside <scope>.
What triggered it
A field used inside a scope that does not group it
Fix
Move the condition outside the scope, or use a field the scope covers
Message
Nested scopes cannot be nested inside one another.
What triggered it
has_experience inside has_education, or similar
Fix
Keep scopes at the same level and combine them with all or any
Message
Query nesting exceeds the maximum depth of 6.
What triggered it
A tree nested deeper than six levels
Fix
Flatten the tree. Most queries need two or three levels
Message
Query exceeds the maximum of 64 conditions.
What triggered it
More than 64 leaves in one tree
Fix
Split the work across several queries, or use in with a list instead of many any branches