Errors
Branch on the HTTP status code. A failure returns the same envelope with description carrying the reason, and no machine-readable code.
Bridge uses conventional HTTP status codes. A failure returns the same envelope, with data absent and description carrying the reason.
{ "description": "No financial account exists for the given account number" }
| Code | Meaning |
|---|---|
| 400 | The request was malformed or failed validation. description names the problem. |
| 401 | Missing, invalid, expired or revoked credentials. |
| 403 | Authenticated, but not permitted to do this. |
| 404 | No such resource, within this tenant. |
| 409 | The request conflicts with existing state. |
| 410 | The thing you referenced has expired. |
| 429 | Rate limited. Back off and retry. See Rate limits. |
| 500 | Something failed on our side. |
| 503 | A dependency is unavailable. This is the status where retrying the same request is the right response. |
Branch on the status code, never on the description. There is no machine-readable error code on the wire today, and the description is prose for a person. A client that pattern-matches on error text breaks on a copy edit.
A timeout is not a failure you can assume. If a money movement times out, retry it with the same idempotency key: you’ll get the original result, never a second movement. See Idempotency.