Test safely in the sandbox
Use the practice server to test orders, trips and webhooks without real riders: how the simulation runs and which scenarios exist.
3 min readUpdated Developers
The sandbox (the practice server) uses the same login, estimate and order calls as production, but the order lifecycle is simulated. No real riders accept or deliver orders. Use your own login email and key there.
Its address is shown on the Developers page of the outlet portal under Try it safely first, and in the box that opens when you create your key.
How the simulation works#
Create an order with
POST /api/orderson the sandbox. It is saved asCREATEDwith real distance and pricing from your outlet settings.Optionally pass
scenario_type. It is sandbox-only. If you leave it out, the default isfull_flow.A background runner advances the order every 30 seconds: it assigns a dummy delivery executive, updates the status, writes timeline events and fires your sandbox webhook, if you set one.
Poll
GET /api/orders/:idor listen for webhooks to watch the changes.
Scenario types#
Pass scenario_type when you create the order. Production ignores this field.
scenario_type | Flow |
|---|---|
|
|
|
|
|
|
Example. Set SANDBOX_URL to the practice server address:
curl -X POST "$SANDBOX_URL/api/orders" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "drop_latitude": 12.9716, "drop_longitude": 77.5946, "customer_name": "Customer Name", "customer_phone": "+919876543210", "scenario_type": "full_flow" }'Webhooks in the sandbox#
Set a Sandbox webhook URL (optional) and a Sandbox webhook secret (optional) on the Developers page. Use the same receiver logic as for production and treat the production payload as the contract. In the sandbox, track_url points at a static demo page.
Riders and trips in the sandbox#
Riders (
/api/delivery-executives): stored in the sandbox’s own database. No email is sent and riders cannot log in. Every rider iswork_online: truewithlocation_fresh: true, andapp_download_urlisnull. Routes, fields and error codes match production.Trips:
POST /api/tripsandGET /api/trips/:tripIdwork with a stand-in optimiser. All queued orders go to one dummy rider in creation order and are always assigned.The sandbox does not support
Idempotency-Key,auto_assign=false, the approve endpoint or the list endpoint.
How long does a full flow take?
About 90 seconds: roughly 30 seconds for each of the three steps.
Can I test cancelling?
Yes. Use assign_only and then DELETE /api/orders/:id, or cancel_after_assign to see the automatic cancel.
Was this page helpful?
Related guides
Plan and approve trips for your own riders
Turn queued OUTLET orders into trips for your online riders, approve them in one call or in the portal, and read the trips back.
3 min readDevelopers
Receive order updates with webhooks
Set your webhook URL, check the X-API-SECRET header, read the order.updated payload and handle retries.
4 min readDevelopers
Add and manage your riders from your system
Create, list, update and remove your own riders with the delivery-executives endpoints, and what the rider does next.
4 min readDevelopers
Get your API credentials
Create your API key in the outlet portal, hand it over safely to your software team and make a new one when needed.
3 min readDevelopers
