Errors
All errors return JSON with an error code and a human-readable message.
Example
{
"error": "insufficient_stops",
"message": "Solde de stops insuffisant : achetez un pack.",
"required": 12,
"balance": 3
}Status codes
| Status | error | Meaning |
|---|---|---|
| 400 | invalid_request | Invalid body (the message names the field). |
| 400 | sandbox_limit | Too many stops for sandbox (max 10). |
| 400 | sandbox_addresses_unsupported | Street addresses not supported in sandbox. |
| 401 | unauthorized | Missing, invalid or revoked key. |
| 402 | insufficient_stops | Insufficient balance (`required` and `balance` provided). |
| 422 | geocoding_failed | An address could not be geocoded. |
| 429 | sandbox_rate_limited | Sandbox limit reached (`Retry-After` header). |
| 502 | optimization_failed | Computation failed — no stops charged. |
| 503 | sandbox_unavailable | Sandbox temporarily unavailable. |
429 · Retry-After
When sandbox rate limits are hit, respect the Retry-After header (seconds) before retrying.