Errors
Validation errors
Section titled “Validation errors”A 400 lists every offending field at once:
{ "success": false, "error": { "id": "validation.partner_payload_invalid", "message": "dropoffs.0.address.latitude: latitude is required", "details": "[{\"field\":\"dropoffs.0.address.latitude\",\"message\":\"latitude is required\"}]" }}details is a JSON array of { field, message } objects. Field paths are
dot-joined with array indices inline: dropoffs.0.address.latitude.
Status codes
Section titled “Status codes”| Code | Meaning |
|---|---|
400 |
Payload rejected. See error.details. |
401 |
Key missing, malformed, revoked — or its account can no longer create orders. |
404 |
No order for that external_order_id. |
409 |
A concurrent request is creating this order. Retry shortly. |
429 |
Rate limit for this key exceeded. |
Rate limiting
Section titled “Rate limiting”The limit is per key, per minute. The current value is in the
GET /ping response as
rate_limit_per_minute.
On 429, back off and retry with an increasing interval.
About 401
Section titled “About 401”A 401 does not always mean a typo in the key. It is also returned when:
- the key has been revoked in the dashboard;
- the owning account is disabled;
- the owner is no longer a customer and cannot create orders.
GET /ping tells you which key you are using.