Skip to content
ROAD RUNNER

QUOTES

Quote a delivery

POST 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.

REQUEST
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
  }'
RESPONSE 201
{
    "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

  • pickup object

    Where it would be collected. Leave it out and we use the pickup address held on your account.

    • address string

      Street address including the suburb.

  • pickup_location string

    A saved pickup location by id (pl_…), instead of pickup.

  • dropoff object REQUIRED

    Where it would be going. This is what the price is measured to.

    • address string REQUIRED

      Street address including the suburb. The more exact it is, the closer the quote is to what you will be charged.

    • phone string

      The recipient's number, if you have it. We check it is Zimbabwean, so a quote fails here rather than at booking.

    • country string

      Defaults to Zimbabwe. We deliver inside Zimbabwe only.

  • items_value integer

    What the goods are worth, in cents. Some accounts waive the delivery fee above a basket value; this is how we know.

  • service_level string

    How fast you need it: standard, express or scheduled. Express costs more and scheduled can cost less; what your account pays for each is on your profile page.

    One of standard express scheduled

  • cash_to_collect integer

    Cash 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.