application/problem+json, with a stable code you can branch on.
A decision is never an error.
deny and escalate are 200 responses that carry a decision,
reasons and sometimes a remedy. Their codes are listed in Reason codes.The problem format
The OAuth endpoints are the exception: their
400
and 401 responses use the format their RFCs define, such as
{"error": "invalid_grant", "error_description": "…"}, so OAuth libraries can read them. Each
endpoint lists its error values. Their 429 and 5xx responses are problem details.
Handling errors
- Branch on
code, then onstatus. Treat an unknowncodeby its status. - Retry only the codes marked below, and always with the same
Idempotency-Key. A new key on an unknown outcome can run the request twice. See Idempotency. - When an error stops a check, do not generate a named talent. When it stops a generation, do not deliver the output. See Failure modes.
Error codes
400 Bad request
401 Unauthorized
403 Forbidden
platform_not_permitted applies only when you name a license. Without one, the check is decided
instead: when no license the licensee holds covers the talent on your platform, the result is a
200 with decision: "deny" and the reason code
platform_not_licensed.
404 Not found
409 Conflict
413 Payload too large
422 Unprocessable
429 Too many requests
5xx Server errors
Related
Reason codes
Why a use was denied or escalated, and what to show.
Idempotency
Retry safely with the same key.