Skip to main content

Error envelope

All EQX API errors return a consistent JSON envelope:
{
  "statusCode": 400,
  "message": "quote has expired",
  "error": "Bad Request"
}
FieldTypeDescription
statusCodenumberHTTP status code
messagestringHuman-readable description of the error
errorstringHTTP status text

HTTP status codes

CodeMeaningCommon causes
400Bad RequestInvalid request body, validation failure, expired quote
401UnauthorizedMissing or invalid Bearer token
403ForbiddenYour token does not have permission for this operation
404Not FoundThe requested resource does not exist or is not visible to your workspace
409ConflictIdempotency key collision with different request body
422Unprocessable EntityRequest is well-formed but cannot be processed (e.g. insufficient float)
429Too Many RequestsRate limit exceeded — back off and retry
500Internal Server ErrorUnexpected server-side error — contact support if persistent

Retries

  • 4xx errors: Do not retry without changing the request. The request is structurally invalid or the resource state won’t change.
  • 429 errors: Implement exponential back-off. Respect the Retry-After header if present.
  • 5xx errors: Safe to retry with exponential back-off. Use your idempotency key so the operation is not duplicated.
  • Network timeouts: Replay the original request with the same Idempotency-Key — EQX will return the cached result if the first attempt succeeded.

Rate limits

EQX enforces per-token rate limits. The limits are returned in response headers on every request:
HeaderDescription
X-RateLimit-LimitTotal requests allowed per window
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetUnix timestamp when the window resets