Sandbox
Test the API for free with otg_test_… keys. No purchase, never charged.
Limits
| Param | Type | Description |
|---|---|---|
Stops per calloptional | ≤ 10 | Hard limit — returns 400 sandbox_limit beyond. |
Calls per minuteoptional | ≤ 20 | 429 with Retry-After when exceeded. |
Stops per dayoptional | ≤ 200 | Paris calendar day. 429 when exceeded. |
Locationsoptional | lat/lng only | No street addresses — geocoding is disabled in sandbox. |
Engineoptional | VROOM | May differ slightly from production (no Google fallback). |
Example
curl https://app.otiggo.com/api/v1/optimize \
-H "Authorization: Bearer otg_test_..." \
-H "Content-Type: application/json" \
-d '{
"start": { "latitude": 48.8566, "longitude": 2.3522 },
"end": { "latitude": 48.8566, "longitude": 2.3522 },
"stops": [
{ "id": "A", "latitude": 48.87, "longitude": 2.30 },
{ "id": "B", "latitude": 48.86, "longitude": 2.33 }
]
}'200
{
"order": ["B", "A"],
"waypoints": [
{ "id": "B", "order": 1, "latitude": 48.86, "longitude": 2.33 },
{ "id": "A", "order": 2, "latitude": 48.87, "longitude": 2.30 }
],
"totalDistanceKm": 6.1,
"estimatedTimeMin": 32,
"schedule": [
{ "colisId": "B", "arrivee": "2026-10-20T05:40:00Z" },
{ "colisId": "A", "arrivee": "2026-10-20T05:52:00Z" }
],
"departAt": "2026-10-20T05:30:00Z",
"returnAt": "2026-10-20T06:02:00Z",
"lateStops": null,
"stopsCharged": 0,
"sandbox": true,
"sandboxStopsRemainingToday": 198
}Sandbox-specific errors
400 sandbox_limit— too many stops in one call400 sandbox_addresses_unsupported— address instead of coordinates429 sandbox_rate_limited— minute or daily cap hit503 sandbox_unavailable— engine temporarily down