Guide

Errors

Errors use normal HTTP status codes and one JSON shape.

{
  "error": {
    "code": "validation_failed",
    "message": "pickup.lat must be a number between -90 and 90.",
    "details": [
      {
        "field": "pickup.lat",
        "message": "lat must be a number between -90 and 90."
      }
    ]
  },
  "request_id": "req_3f9a1c0b7e2d4a6b8c1d"
}

Show message to people; branch on code in code. Quote request_id (also in the X-Request-Id header) when you contact support.

StatusCommon codes
401missing_api_key, invalid_api_key
403api_access_off, api_access_paused, company_inactive, test_only
404not_found
409idempotency_in_progress, order_completed, order_closed
422validation_failed, batch_invalid, business_wallet_low (details.shortfall), idempotency_key_reused, business rules such as business_off_in_zone or business_policy_*
429rate_limited (see Retry-After)
503live_unavailable, api_unavailable — retry later
500server_error — safe to retry with the same Idempotency-Key