Errors
Every non-2xx response carries an RFC 9457 problem document with application/problem+json content type.
Shape
{
"type": "https://api.datocapital.com/problems/validation-failed",
"title": "Validation failed",
"status": 400,
"detail": "Query parameter 'page_size' must be between 1 and 100.",
"instance": "/v3/companies",
"request_id": "K9JWVA4TOL8BETYWLETJBFYG4P"
}
request_id is also returned as the X-Request-Id response header on every response (success or failure). Quote it when filing a bug; we can replay the exact request from the audit log.
Common types
| type | HTTP | cause |
|---|---|---|
validation-failed | 400 | Bad path or query parameter. |
missing-credentials | 401 | No Authorization header. |
invalid-credentials | 401 | Bearer token unknown. |
plan-insufficient | 403 | Endpoint is gated above your plan. |
resource-not-found | 404 | UEC / id is unknown to the public surface. |
rate-limited | 429 | Per-user-minute window exceeded. |
upstream-error | 502 | An upstream service failed unexpectedly. |
upstream-timeout | 504 | An upstream service did not respond in time. |
internal-error | 500 | Unhandled. request_id us โ these are bugs. |
What you won't see
- HTML error pages.
- Stack traces in
detail. - Internal IDs leaking into
detailstrings โ only public identifiers ever surface.