HTTP errors
The API follows a predictable HTTP error code format. Each status maps to one SDK exception, and all of them subclassHollerithError.
- 401 —
AuthenticationError— There is an issue with your API key (for example, it’s mistyped, revoked, or expired). See Get your API key. - 403 —
PermissionDeniedError— Your API key does not have permission to use the specified resource. - 404 —
NotFoundError— The requested job or fitted context was not found, or it aged out. - 409 —
ConflictError— The request conflicts with the current state of a resource, such as an idempotency key reused with a different body. - 413 —
ValidationError— The request exceeds the maximum allowed number of bytes. - 422 —
ValidationError— The request, or the table inside it, could not be processed. - 429 —
QuotaExceededError— Your organization has hit a rate limit, or its daily quota. - 500 —
ServerError— An unexpected error has occurred internal to Hollerith’s systems. - 503 —
ServiceUnavailableError— A worker or the cache is temporarily unavailable.
Request size limits
Exceed the upload ceiling and you get a 413
payload_too_large, raised before the table is
read. Exceed any of the others and you get a 422 dataset_too_large. See
Limits for the cell budget these interact through, and for the per-minute
request rate behind 429.
Error shape
The API returns errors as JSON with a top-level object that always includes acode and a
category value, plus a requestId for easier tracking and debugging. For example:
code, the stable identifier and one of 27. Never branch on problem, cause, or
fix — the server rewrites those per instance.
Not every error is an envelope: a body that fails to parse returns a bare
{"error": "invalid_json"} with no code and no request id, which the SDK cannot type. Catch
HollerithError at the outer edge of any integration, not only the subclasses you expect.
SDK error types
The Python SDK raises typed exceptions instead of returning raw JSON. Every exception exposescode, problem, cause, fix, and request_id.
Request ID
Every error response includes a uniquex-hollerith-request-id header, and a typed error
repeats it as requestId in the body. If you need to report an issue, include that value — it
is logged server-side against the same request.
A bare invalid_json or invalid_request response carries none, and neither do errors the SDK
raises before any request goes out. Quote the code and the call you made instead.
Error codes
TheWhat to do column is the fix string the API returns for that code.
auth — 401, AuthenticationError
permission — 403, PermissionDeniedError
quota — 429, QuotaExceededError
validation — 413 and 422, ValidationError
not_found — 404, NotFoundError
conflict — 409, ConflictError
unavailable — 503, ServiceUnavailableError
server — 500, ServerError
Next steps
Troubleshooting
Symptom-to-fix tables for common issues
Limits
Learn about the constraints Hollerith is optimized for