Every non-2xx returns a structured body - never bare HTML. Branch on the type slug.
400
idempotency_key_required
A write request is missing a valid `Idempotency-Key`.
401
unauthenticated
Missing or invalid bearer token.
403
forbidden_scope
Key is valid but lacks the ability for this endpoint.
404
not_found
The resource doesn't exist or isn't yours.
405
method_not_allowed
The route does not support this HTTP method.
409
idempotency_conflict
The idempotency key was reused with different request data.
422
unprocessable
Validation failed. `details.errors` contains field errors.
429
rate_limited
You're going too fast. `Retry-After` is set.
500
server_error
Our side broke. Includes a `trace_id` for support.
502
provider_error
An upstream payout, refund, or mail provider rejected the request.