QUOTES
Quote a delivery
roadrunnerzw.com/api/v1/quotes
Prices a trip and confirms we will deliver to it, before you commit.
Pass the returned id as quote_id when creating the delivery to lock
this fee. Quotes expire after 15 minutes and may be used once.
An unserviceable address is returned as an error rather than a quote with a flag, because an error is harder to ignore.
curl -X POST https://roadrunnerzw.com/api/v1/quotes \
-H 'Authorization: Bearer rr_live_your_key_id' \
-H 'X-RR-Timestamp: $(date +%s)' \
-H 'X-RR-Signature: $SIGNATURE' \
-H 'Content-Type: application/json' \
-d '{
"pickup": {
"address": "10 Example Avenue, Harare, Zimbabwe"
},
"dropoff": {
"address": "45 Example Road, Harare, Zimbabwe",
"phone": "+263770000000"
},
"items_value": 2500
}'
{
"id": "qte_01JAV3K2QX8M4N7P",
"object": "quote",
"serviceable": true,
"pricing_mode": "per_km",
"distance_metres": 15400,
"delivery_fee": {
"amount": 1540,
"currency": "USD"
},
"fee_reason": "per_km",
"expires_at": "2026-09-21T14:45:00+02:00"
}
Body
-
pickupobjectWhere it would be collected. Leave it out and we use the pickup address held on your account.
-
addressstringStreet address including the suburb.
-
-
pickup_locationstringA saved pickup location by id (pl_…), instead of
pickup. -
dropoffobject REQUIREDWhere it would be going. This is what the price is measured to.
-
addressstring REQUIREDStreet address including the suburb. The more exact it is, the closer the quote is to what you will be charged.
-
phonestringThe recipient's number, if you have it. We check it is Zimbabwean, so a quote fails here rather than at booking.
-
countrystringDefaults to Zimbabwe. We deliver inside Zimbabwe only.
-
-
items_valueintegerWhat the goods are worth, in cents. Some accounts waive the delivery fee above a basket value; this is how we know.
-
service_levelstringHow fast you need it:
standard,expressorscheduled. Express costs more and scheduled can cost less; what your account pays for each is on your profile page.One of
standardexpressscheduled -
cash_to_collectintegerCash the courier will collect on delivery, in cents. Some accounts carry a handling fee on this, so leaving it out of a quote makes the quote lower than the booking.
Responses
201 Created
A price for this trip. Pass id as quote_id when creating the delivery to lock it. Expires after 15 minutes and may be used once.
401 Unauthenticated
The signature, key or timestamp did not check out. Also returned for a revoked key, and for a timestamp more than 300 seconds from ours.
403 Forbidden
The key is valid but was not issued the scope this endpoint requires. Scopes are fixed at issue, so this needs a new key rather than a retry.
422 Validation failed
The request was understood and refused. Same envelope as every other error; details names each field at fault, so retrying unchanged will fail the same way.
429 Too many requests
Too many requests for this client. Back off and retry; the response carries Retry-After and X-RateLimit-* headers.