Contract snapshot 0.101.0 · Deployment and client release availability follow the integration note for your environment.
Read error.retry
All current routes use the ErrorEnvelope contract. Check the error code and retry advice rather than guessing from the status alone. Retain x-request-id for support without logging credentials.
Recover the right way
Refresh an expired session; correct invalid input; review missing scopes. A not-found response may also protect an organisation boundary. Do not probe other organisations’ resource IDs.
Avoid duplicate writes
A timeout does not prove a write failed. Read the known resource’s state before retrying approval, key creation or refund requests. Never fall back to an older API automatically after an uncertain write.
Service failures
Handle unavailable services and incomplete results explicitly. Do not replace an error with an invented empty dataset or a zero balance.
Design useful error messages
Tell the user which action failed, whether the result is known and what can safely happen next. Invalid input needs a correction; unavailable services need an explicit unavailable state. Keep diagnostic identifiers for support, but exclude bearer tokens, API keys and raw private payloads from logs and screenshots.
Separate a retry from another execution
Reads can often be retried according to the returned advice, while an uncertain write needs a state check first. Bound automated attempts and keep the original request context. Never convert an exhausted retry into a fabricated success, zero cost or empty delivery.
Published error codes
These codes come from this OpenAPI snapshot. Use the returned error.status, error.retry and message together; a code alone does not authorise another execution.
invalid_requestinvalid_jsonunauthenticatedsession_expiredkey_expiredkey_revokedcredits_exhaustedover_quoteplan_requiredprice_changedforbiddenorg_missingscope_missingnot_entitledprivate_dataaccess_controlnot_foundquote_expiredquote_already_approvedrefund_refusedcatalogue_refusednot_for_saleexport_not_readydownload_expiredidempotency_conflictstale_versionpackage_not_readyupload_not_readycost_changedbilling_profile_missingexport_not_availableunknown_capabilityschema_retiredpayload_too_largeunsupported_media_typerate_limitedinternalevidence_unavailablepayment_provider_unavailablecheckout_unavailableinvoicing_unavailableunavailable
Published retry advice
The contract permits these values for error.retry:
fix_requestrefresh_credentialsneverafter_resetbounded