Skip to main content
Exa APIs signal failures with standard HTTP status codes and a JSON error body.

HTTP status codes

URL-level failures from /contents are reported in the statuses field of a successful 200 response, not as request-level errors. See Content fetch status tags.

Error response structure

Error responses return a requestId, a human-readable error message, and a machine-readable tag:
Include the requestId when contacting support for faster troubleshooting.
The set of tags is open-ended and tag names are self-explanatory. Branch on the HTTP status code first and treat unrecognized tags as additional detail rather than parse failures.

Common error tags

Account, billing, and access

Request validation

Payment protocols

Requests paid through x402 or MPP can also return:

Content fetch status tags

When /contents receives multiple URLs, one URL can fail while the others succeed. URL-level failures are returned in the statuses field and do not fail the request:
httpStatusCode describes the target page, not the /contents response. These status tags are specific to /contents; /search does not return a statuses field.

Getting help

  • Check Exa Status when 500, 503, or 504 errors persist.
  • Check Rate Limits for current limits.
  • Review the endpoint’s API reference for request requirements.
  • Contact hello@exa.ai with the response status, error body, and requestId.
Last modified on September 15, 2026