Error catalog

Every error has one envelope

All public API errors return a JSON body with a single error object containing a numeric code matching the HTTP status and a human-readable message.

Envelope

{
  "error": {
    "code": 429,
    "message": "rate limit reached"
  }
}

Status codes

StatusNameWhen it happens
400Bad requestMalformed request body or unsupported request shape.
401UnauthorizedMissing or invalid Hardcarrx API key.
402Quota exceededCurrent plan or quota cannot accept this request.
404Not foundUnknown resource — or, on /v1/responses, Responses compatibility is disabled on this deployment.
422Unprocessable entityUnsupported feature or malformed input (Responses-compat): tools, instructions, non-text modalities, or streaming. Explicit rejection — no silent emulation.
429Rate limitedRate limit reached. Back off and retry; do not retry immediately.
500Provider or service errorThe upstream provider or Hardcarrx service failed. Retry with backoff.

Retry guidance

  • 429 and 500: retry with exponential backoff and jitter. Treat 429 as a signal to reduce concurrency, not to hammer the endpoint.
  • 402: do not retry automatically. Resolve the plan or quota condition first (see usage endpoint).
  • 401, 400, 404, 422: not retryable. Fix the request, credentials, or feature choice.