Getting Started
The Zippex Delivery API lets you request, manage, and track same-day deliveries programmatically. This guide walks you through the core integration flow from first API key to production-ready tracking.
Base URL
https://api.zippex.com
All requests require an Authorization: Bearer zx_live_... header. Use a zx_test_ key to experiment in sandbox mode.
What you will build
A typical Zippex integration follows one predictable loop:
- Create or access your account and store your API keys securely.
- Request a quote to price the delivery and confirm ETA.
- Create a delivery using that quote and attach your own metadata.
- Track progress with polling or webhooks, then switch to a live key when ready.
If you are new to the platform, start in test mode with a zx_test_ key and move to a zx_live_ key only after your quote, delivery creation, tracking, and webhook flows are working end to end.
Step 1: Create your account and get API keys
Create your Zippex account to receive API keys for both environments. You will get a test key (zx_test_...) for sandbox work and a live key (zx_live_...) for production traffic.
/v1/merchants/registerCreate a new Zippex account and receive API keys.
business_namestringrequiredYour business or store name.
emailstringrequiredContact email for the account.
phonestringrequiredContact phone number in E.164 format.
addressobjectrequiredBusiness address with street, city, province, and postal_code.
curl -X POST https:"color:#6a9955">//api.zippex.com/v1/merchants/register \
-H "Content-Type: application/json" \
-d '{
"business_name": "Coastal Bites",
"email": "hello@coastalbites.ca",
"phone": "+16045550123",
"address": {
"street": "350 W Georgia St",
"city": "Vancouver",
"province": "BC",
"postal_code": "V6B 6B1"
}
}'{
"id": "merch_a1b2c3d4",
"business_name": "Coastal Bites",
"email": "hello@coastalbites.ca",
"api_keys": {
"test": "zx_test_abc123def456",
"live": "zx_live_xyz789ghi012"
},
"created_at": "2026-03-10T14:00:00Z"
}Step 2: Get a delivery quote
Before creating a delivery, request a quote to see the estimated fee and ETA. Quotes are valid for 15 minutes.
/v1/quotesRequest a delivery quote with upfront pricing.
pickup_addressstringrequiredFull pickup address.
dropoff_addressstringrequiredFull dropoff address.
package_sizestringoptionalOne of small, medium, or large. Defaults to small.
curl -X POST https:"color:#6a9955">//api.zippex.com/v1/quotes \
-H "Authorization: Bearer zx_test_abc123def456" \
-H "Content-Type: application/json" \
-d '{
"pickup_address": "350 W Georgia St, Vancouver, BC V6B 6B1",
"dropoff_address": "2085 Main St, Vancouver, BC V5T 3C3"
}'{
"id": "qt_r4s5t6u7",
"fee": 899,
"currency": "cad",
"eta_minutes": 28,
"distance_km": 4.2,
"expires_at": "2026-03-10T14:15:00Z",
"created_at": "2026-03-10T14:00:00Z"
}Step 3: Create a delivery
Use the quote ID to create a delivery at the quoted price. Zippex handles driver assignment automatically.
/v1/deliveriesCreate a new delivery from a quote.
quote_idstringrequiredID from a valid, unexpired quote.
pickup_namestringrequiredContact name at pickup.
pickup_phonestringrequiredContact phone at pickup.
dropoff_namestringrequiredRecipient name.
dropoff_phonestringrequiredRecipient phone number.
descriptionstringoptionalPackage description for the driver.
metadataobjectoptionalUp to 20 key-value pairs of your own data.
curl -X POST https:"color:#6a9955">//api.zippex.com/v1/deliveries \
-H "Authorization: Bearer zx_test_abc123def456" \
-H "Content-Type: application/json" \
-d '{
"quote_id": "qt_r4s5t6u7",
"pickup_name": "Coastal Bites",
"pickup_phone": "+16045550123",
"dropoff_name": "Jane Smith",
"dropoff_phone": "+16045550456",
"description": "1x Birthday cake — handle with care",
"metadata": {
"order_id": "ORD-4521"
}
}'{
"id": "del_m8n9o0p1",
"status": "created",
"fee": 899,
"currency": "cad",
"pickup": {
"address": "350 W Georgia St, Vancouver, BC V6B 6B1",
"name": "Coastal Bites",
"phone": "+16045550123"
},
"dropoff": {
"address": "2085 Main St, Vancouver, BC V5T 3C3",
"name": "Jane Smith",
"phone": "+16045550456"
},
"description": "1x Birthday cake — handle with care",
"metadata": {
"order_id": "ORD-4521"
},
"created_at": "2026-03-10T14:01:00Z"
}Step 4: Track your delivery
Poll the tracking endpoint for real-time driver location and ETA updates. For production, we recommend webhooks for status change notifications instead of polling.
/v1/deliveries/{deliveryId}/trackingGet real-time tracking for a delivery.
curl https:"color:#6a9955">//api.zippex.com/v1/deliveries/del_m8n9o0p1/tracking \
-H "Authorization: Bearer zx_test_abc123def456"{
"delivery_id": "del_m8n9o0p1",
"status": "in_transit",
"driver": {
"name": "Alex M.",
"phone": "+16045550100",
"location": {
"lat": 49.2827,
"lng": -123.1207
}
},
"eta_minutes": 12,
"updated_at": "2026-03-10T14:22:00Z"
}Use polling when you need a live map or ETA in your UI. Use webhooks when you need your backend to react to status changes such as driver assignment, pickup, delivery, or cancellation.
Next steps
- Authentication — API key types, secure storage, test vs. live mode
- Quotes — pricing inputs, expiry, and quote retrieval
- Deliveries — delivery lifecycle, metadata, listing, and cancellation
- Tracking — polling strategy, live tracking URLs, and sandbox behavior
- Webhooks — receive real-time delivery status updates
- Sandbox — test your integration end-to-end before go-live
- API Reference — full endpoint list in one place