Skip to main content
Every failure returns the same shape. Anything other than a 2xx has an error object:

Types

Codes worth handling

What to retry

Retry 429 and 5xx. Do not retry 4xx of any other kind, because the request will fail the same way every time.
When retrying a write, send an Idempotency-Key. A retried request carrying the same key will not apply the change twice, which matters most for POST /v1/expense-transfers, where a duplicate would move money twice.

A note on 5xx messages

api_error always returns a generic message. Internal failures can carry database or provider detail, and none of that crosses the public boundary. The request_id is how we look up what actually happened.