Error catalog
Every error response uses the application/problem+json (RFC 9457) format.
The type field points to the catalog page for its code:
https://docs.skipo.com/errors/{code}. The code is a stable contract —
branch your logic on it.
code | HTTP | Retryable? | Title |
|---|---|---|---|
validation_error | 400 | no | Validation error |
unauthorized | 401 | no | Unauthorized |
invalid_signature | 401 | no | Invalid signature |
clock_skew | 401 | yes | Clock skew too large |
nonce_reused | 401 | yes | Nonce already used |
key_expired | 401 | no | API key expired |
key_revoked | 401 | no | API key revoked |
insufficient_scope | 403 | no | Insufficient scope |
ip_not_allowed | 403 | no | IP address not allowed |
two_factor_required | 403 | no | Two-factor required |
permission_denied | 403 | no | Permission denied |
api_access_disabled | 403 | no | API access disabled |
not_found | 404 | no | Resource not found |
conflict | 409 | no | Conflict |
idempotency_conflict | 409 | no | Idempotency conflict |
key_limit_reached | 409 | no | API key limit reached |
quotation_expired | 410 | yes | Quotation expired |
unprocessable | 422 | no | Unprocessable request |
rate_limited | 429 | yes | Rate limit exceeded |
internal_error | 500 | yes | Internal server error |
downstream_unavailable | 502 | yes | Downstream service unavailable |
maintenance | 503 | yes | Service under maintenance |
service_degraded | 503 | yes | Service degraded |