Maxmove LogoDocs

Test mode

Build and test your integration with mm_test_ keys: simulated deliveries, the Robocourier, signed webhooks, and forced failure scenarios.

View as Markdown

Requests with a test key (mm_test_…) go to the same base URL and accept the same requests as live keys. Test deliveries are never dispatched to a courier and never billed.

The Robocourier#

A simulated courier, the Robocourier, moves every test delivery through the full status sequence, about 20 seconds per step:

StatusWebhook event sent
pendingdelivery.created when the delivery is created
courier_assigneddelivery.courier_assigned
at_pickupdelivery.courier_arrived
picked_updelivery.status_updated
in_transitdelivery.status_updated
at_dropoffdelivery.courier_arrived
delivereddelivery.delivered

The events are signed exactly like live events, so you can test your signature verification end to end. Test events only go to webhook endpoints that were registered with a test key. Test deliveries don't send delivery.eta_updated or delivery.pod_submitted.

On the tracking endpoint, the Robocourier's position moves on a straight line from pickup to dropoff.

Test failure handling#

Create the delivery with test_scenario to make it fail at a fixed point:

test_scenarioWhat happens
courier_cancelledThe delivery is cancelled right after courier_assigned.
delivery_failedThe delivery is cancelled after at_dropoff.
{
  "pickup": { … },
  "dropoff": { … },
  "vehicle_type_id": "courier",
  "test_scenario": "courier_cancelled"
}

Live keys reject test_scenario with 400 invalid_request.

You can also cancel a test delivery yourself with POST /v1/deliveries/{deliveryId}/cancel while it is pending, courier_assigned, or at_pickup.

What is separate in test mode#

  • Data. Deliveries, quotes, webhook endpoints, idempotency keys, and external_id values of test and live mode are invisible to each other.
  • Rate limit. Test keys can send 120 requests per minute, live keys 600. See Rate limits.

Fleet orders have no test mode#

Fleet orders always land on your real dispatch board, so there is nothing to simulate. POST /v1/fleet/orders and GET /v1/fleet/orders/{fleetOrderId} answer 403 live_key_required for test keys. See Fleet order ingestion.

Go live#

Create a live key in Settings → API keys and replace the test key. Register your webhook endpoints again with the live key, because endpoints belong to one mode. Live deliveries are billed on your workspace's monthly invoice; see Billing.

Did this answer your question?