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