Build delivery into your product

A REST API to quote, create, and track same-day deliveries — with signed webhooks, idempotent requests, a test-mode simulator, and carrier-side fleet order ingestion.

Quote → create → track

Price a route, create the delivery at the quoted price, and follow the courier with ETA and live position.

Signed webhooks

HMAC-signed events for every status change, with retries, DLQ, and replay. Verify with your endpoint secret.

Test mode

mm_test_ keys run a Robocourier simulator through the full lifecycle — integrate end to end before going live.

Fleet ingestion

Fleet keys push orders from your customers’ systems straight into your dispatch board.

Authentication

Authenticate with an organization-scoped API key in the x-api-key header. Live keys (mm_live_) create real orders; test keys (mm_test_) create simulated deliveries that never dispatch a courier. Issue and revoke keys from your Maxmove dashboard, scoped to exactly the resources you need.

Quickstart

Discover a vehicle type, quote a route, then create the delivery with the same route, a contact for pickup and dropoff, and an Idempotency-Key. Poll tracking until the delivery arrives. Replace the key and quote id with your own.

# 1. Discover vehicle types
curl https://api.maxmove.com/v1/vehicle-types \
  -H "x-api-key: $MAXMOVE_KEY"

# 2. Quote a route
curl -X POST https://api.maxmove.com/v1/quotes \
  -H "x-api-key: $MAXMOVE_KEY" -H 'content-type: application/json' \
  -d '{
    "pickup":  { "address": "Ehrenstraße 15, Köln", "latitude": 50.9385, "longitude": 6.9469 },
    "dropoff": { "address": "Königsallee 27, Düsseldorf", "latitude": 51.2233, "longitude": 6.7768 },
    "vehicle_type_id": "courier"
  }'

# 3. Create the delivery: the quoted route plus pickup and dropoff contacts.
#    quote_id locks the quoted price; Idempotency-Key makes retries safe.
curl -X POST https://api.maxmove.com/v1/deliveries \
  -H "x-api-key: $MAXMOVE_KEY" -H 'content-type: application/json' \
  -H 'Idempotency-Key: order-4711' \
  -d '{
    "quote_id": "qt_…",
    "pickup": {
      "address": "Ehrenstraße 15, Köln", "latitude": 50.9385, "longitude": 6.9469,
      "contact": { "name": "Shop Ehrenstraße", "phone": "+49 221 0000000" }
    },
    "dropoff": {
      "address": "Königsallee 27, Düsseldorf", "latitude": 51.2233, "longitude": 6.7768,
      "contact": { "name": "Erika Muster", "phone": "+49 170 0000000" },
      "instructions": "Ring at reception"
    },
    "vehicle_type_id": "courier",
    "external_id": "order-4711"
  }'

# 4. Track until delivered
curl https://api.maxmove.com/v1/deliveries/del_…/tracking \
  -H "x-api-key: $MAXMOVE_KEY"

Endpoints

POST/v1/quotesQuote a route (valid 5 minutes)
POST/v1/deliveriesCreate a delivery for a route, optionally at a quoted price
GET/v1/deliveries/{id}/trackingLive tracking: ETA, courier position, polyline
POST/v1/deliveries/{id}/cancelCancel before the courier picks up
GET/v1/deliveries/{id}/proof-of-deliveryProof of delivery (signatures, photos)
POST/v1/webhooksRegister a webhook endpoint
POST/v1/fleet/ordersPush an order into your fleet dispatch board