Skip to main content
Every error — from FastAPI’s own request validation, an auth/role check, a rate limit, or a failure deep inside the SDK — is normalized into the same JSON shape:
request_id also comes back as the X-Request-ID response header (and is accepted as a request header too, so a caller can supply their own correlation id). It’s the same id this server logs the request under — grep the logs for it to find exactly what happened server-side.

HTTP status codes and code values

Example: plan limit reached

Example: a job failure

Example: request validation failure

FastAPI’s own body/query validation (wrong type, missing required field at the HTTP layer) includes a details array with the exact validation errors: