When interacting with Apollo API endpoints, it helps to understand the status codes that might be returned.
To find a status code for an endpoint:
- Go to the reference documentation for an endpoint such as people API search.
- By default, the Response section of the reference docs shows an example response with a
200status. To view other status codes, click the EXAMPLE drop-down, then select a status code. - The status you select appears in the response section.
You don't need to supply an API key to review the Apollo-generated example response or other status codes. Check out How to Test API Endpoints to perform your own testing and generate unique responses.
The error_details object
error_details objectApollo is moving every API error onto one machine-readable shape. Where an endpoint has been migrated, its error response carries an error_details object alongside the fields it already returned. For example:
{
"error": "Invalid access credentials.",
"error_details": {
"code": "AUTH.AUTHENTICATION.CREDENTIALS_MISSING",
"message": "This request carried no credential Apollo could authenticate.",
"suggestions": [
{ "label": "Send your API key in the X-Api-Key header", "header": "X-Api-Key" },
{ "label": "Check how to authenticate against the Apollo API", "url": "https://docs.apollo.io/reference/authentication" }
],
"context": {}
}
}A refusal that has context to give returns it wrapped, one object per key:
"context": {
"window": { "value": "hourly", "description": "The rate-limit window your request exceeded" }
}| Field | What it's for |
|---|---|
code | A stable identifier in the form DOMAIN.CATEGORY.REASON. Branch your code on this, not on the message. |
message | A human-readable explanation. The wording can change, so don't match on it. |
suggestions | Ordered, actionable next steps. Each carries a label, and where relevant a url, parameter, parameters (array), header, example, or retry_after_seconds. On a rate-limit refusal, retry_after_seconds is the value to back off by. |
context | Values from your request that explain the refusal. Each entry is an object, not a bare value: {"value": "hourly", "description": "The rate-limit window your request exceeded"}. Absent when the error needs no context. |
Readerror_details, not the legacy fieldsMost migrated errors still return their original root-level fields (
error,error_code,message) next toerror_details. Some already returnerror_detailson its own —GET /organizations/enrichis one, so a 422 from it has noerrorkey at all. On 16 February 2027 the legacy fields are removed everywhere anderror_detailsbecomes the only error payload. Move any logic that reads a root-level error field ontoerror_details.codenow.
Common status codes
Most Apollo API endpoints share the following status codes. Some endpoints return additional, endpoint-specific codes and error messages — always check the Response examples on that endpoint's reference page for exact details.
| Status code | Meaning | Common cause | error_code |
|---|---|---|---|
401 | Unauthorized | Your API key or access token is missing or invalid, or your account is no longer active. See Authentication. | INVALID_ACCESS_TOKEN (OAuth access tokens) |
403 | Forbidden | Your plan doesn't include API access, or the endpoint isn't available through the public API for your credentials. Contact Apollo if you believe this is an error. | API_INACCESSIBLE |
404 | Not found | The requested record doesn't exist or isn't accessible with your credentials. Double-check the ID in your request. | — |
422 | Unprocessable entity | Your request was received but couldn't be processed — usually a validation error or an invalid or missing parameter. The response body describes the specific issue; the exact shape varies by endpoint. | varies by endpoint |
429 | Too many requests | You've exceeded your rate limit. Rate-limit details are returned in the response headers. See Rate Limits. | — |
500 | Internal server error | An unexpected error occurred on Apollo's side. Retry the request; if it persists, contact Apollo. | — |
Status ReportNot all API status codes are currently documented by Apollo. This documentation contains the most common codes.