application/problem+json errors based on Request for Comments (RFC) 9457. Use the stable code, retry flags, and response headers instead of parsing detail text.
Parse the Problem Details fields
Each error response contains the same strict fields:
The following response shows the public shape. Values vary by problem class:
Interpret HTTP status classes
Use the status to classify the failure before inspecting its code:
Protected operations use these stable
503 codes:
OAuth and OpenID Connect protocol endpoints use their protocol error grammar. They can return standard challenges instead of Problem Details.
Decide whether to retry
Treatsubmission_uncertain as the stronger safety signal. If it is true, do not send the financial mutation again.
Follow these rules in order:
- If
submission_uncertainistrue, read the referenced operation until its state changes. - If
retryableisfalse, do not repeat the identical request. Atruevalue only permits evaluating a retry after the stated condition is resolved; it never overridessubmission_uncertainor authorizes resubmitting an uncertain mutation. - If the response includes
Retry-After, wait for that interval. - If a DPoP challenge includes
DPoP-Nonce, create a new proof with that nonce. - For a mutation whose OpenAPI operation requires
Idempotency-Key, retry only the identical request intent with its original key. For reads or protocol requests, follow that operation’s documented retry requirements.
Preserve the request identifier
Every response includesX-Request-Id. The same value appears in a Problem Details body as request_id.
You may send X-Request-Id with 8 to 128 characters from A-Z, a-z, 0-9, ., _, ~, or -. Perflo replaces an invalid value with a generated identifier.