Delivery quotes, on your website.
Show live Travo prices for parcels, travel, haulage and drivers on your own site or app. One REST call, your API key, and a price in Naira.
curl -X GET 'https://app.travo.ng/v1/service-quotes' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "pickup": {...}, "dropoff": {...}, "entities": [{"type":"parcel"}], "service": "<service id>", "single": true }' # → { "id": "quote_uK83KEA", # "amount": 566180, "currency": "NGN", ... }
Overview
The Travo API gives your website or app access to the same pricing engine that powers travo.ng. Send a pickup and a delivery location, choose a service, and get a live price back.
Typical flow: your customer enters details on your site, your server calls the API with your key, and you show the price with the Travo logo and links.
https://app.travo.ng/v1 · HTTPS only, JSON bodies, amounts in kobo (₦5,661.80 = 566180).Authentication
Send your secret API key as a Bearer token on every request. Keys are issued per website or company and can be revoked at any time.
Authorization: Bearer YOUR_API_KEY Content-Type: application/json Accept: application/json
Need a key? Request access with your company name and website. Each key is issued for one website, so please tell us which website you will use it on.
Get a quote
| Field | Type | Required | Description |
|---|---|---|---|
| pickup | object | Yes | Pickup place (see Place object) |
| dropoff | object | Yes | Delivery or destination place |
| service | string | Yes | Service ID from Service IDs |
| service_type | string | Except Travel | Service type of the chosen service |
| entities | array | Yes | Always [{ "type": "parcel" }] |
| single | boolean | Yes | Always true. Returns one quote. |
GET request that reads a JSON body, the same way the curl example below does. Use Content-Type: application/json. Some HTTP clients drop the body on GET requests, so if you get a "field is required" error, test with curl first.curl -X GET 'https://app.travo.ng/v1/service-quotes' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"pickup": {
"street1": "Victoria Island, Lagos",
"location": { "type": "Point", "coordinates": [3.4216, 6.4281] }
},
"dropoff": {
"street1": "Ikeja, Lagos",
"location": { "type": "Point", "coordinates": [3.3515, 6.6018] }
},
"entities": [{ "type": "parcel" }],
"service": "32b07dd9-33ba-43d7-b27f-59b76bbc409c",
"service_type": "ship-a-parcel-or-package-send-parcel",
"single": true
}'{
"id": "quote_uK83KEA",
"amount": 566180,
"currency": "NGN",
"items": [
{ "details": "Base Fee", "amount": 150000, "currency": "NGN", "code": "BASE_FEE" },
{ "details": "Service Fee", "amount": 416180, "currency": "NGN", "code": "BASE_FEE" }
],
"request_id": "request_eVntVpb"
}amount is the total in kobo. Divide by 100 to show Naira. id is the quote ID, keep it for reference. Only service and service_type change between services.
Service IDs
Use the Service ID in the service field, with the matching service_type. Each ID is one option with its own price. For Send Parcel, choose the ID that matches the parcel weight.
Send Parcel
service_type: ship-a-parcel-or-package-send-parcel
| Option | Service ID |
|---|---|
| Up to 1 kg | 32b07dd9-33ba-43d7-b27f-59b76bbc409c |
| 2.01 to 2.5 kg | a82479f9-8d14-4dcb-b5c1-71c9e456d570 |
| 2.51 to 3 kg | 59400ffd-11d2-4768-a9ae-a3d86c9d00ac |
| 3.01 to 3.5 kg | be985ea0-ce91-476e-b6dc-b6c698103131 |
| 3.51 to 4 kg | 34be13dd-2ea2-4246-9bd2-66c98ac33ef7 |
| 4.01 to 4.5 kg | 3c7858ee-f2d7-48c1-95fc-40f3bd382d2c |
| 4.51 to 5 kg | fe4fb778-5eca-40bd-a997-7d4b762e99d2 |
| 5.01 to 5.5 kg | f5cd8a17-6723-445f-b77d-db5f3713957d |
| 5.51 to 6 kg | dd0cd7c2-4bb4-4628-9468-bdffb1f8177b |
| 6.01 to 7 kg | 25d8118e-ebff-4742-8da7-8f9f7abcb142 |
| 7.01 to 8 kg | 45659774-7a31-4994-8ad3-31d8fb2bf8b5 |
| 8.01 to 9 kg | 1860243e-1bdc-4a8f-a50c-84317b4b42e8 |
| 9.01 to 10 kg | b61fbb31-2361-4dc3-9b16-cc6735a78cc1 |
| 10.01 to 11 kg | 13e28f94-bf3a-4a14-ab8c-c713d2efed0e |
| 11.01 to 12 kg | ec09a906-f224-4552-9fc7-c00abf2b5a9e |
| 12.01 to 13 kg | 17269244-6d9c-428d-93b0-1484d1ab33a5 |
| 13.01 to 14 kg | 4414b293-de9b-4911-8e9d-70b674bf270d |
| 14.01 to 15 kg | 55bbb20d-d50b-44ea-8d45-ff60e33c2cc4 |
| 15.01 to 16 kg | 3d09d256-7520-4cd4-84d5-58007794538b |
| 16.01 to 17 kg | 4849084b-84ac-491b-84bd-0cba6515dbe3 |
| 17.01 to 18 kg | c65b2f67-4987-49e5-9afe-5b65a139a3d8 |
| 18.01 to 19 kg | 3aacbb5b-5be1-4c71-88eb-aae58d21a902 |
| 19.01 to 20 kg | 753f0e94-7c25-4358-bb05-91c598495632 |
| 20.01 to 30 kg | df243b05-708c-4088-88c3-af26f39e7c00 |
| 30.01 to 40 kg | d89ad206-a7f6-4f34-891d-c88c027ec6bd |
| 40.01 to 50 kg | 9a3f5e8b-91e4-4b04-ab9a-e35b2f977020 |
| Ship a Barrel (220 litre) | 9de4d00e-a8a4-4aeb-b844-0f5d72eaeb86 |
Travel
service_type: not required
| Option | Service ID |
|---|---|
| Single Ticket (Standard) | de1b6aa0-eb64-48e8-9ce9-006f4735745d |
Haulage
service_type: haulage-book-a-van-or-truck
| Option | Service ID |
|---|---|
| Small Van (Korope) | eaf7fa38-5c81-4aad-bd59-699e84d1caf1 |
| Medium Van (Up to 3 Tons) | 612ab201-ce27-4c38-a099-e8649b9d9f8f |
| Closed Body Truck (7 Tons) | 0c3006dd-c579-4c4e-af78-944ba9eb8838 |
| Closed Body Truck (15 Tons) | 97469c66-c207-4959-902e-882ac88e74e8 |
| Heavy Duty Truck (30 Tons) | 79c8bf27-e308-41f4-aa3c-1283dd6d5808 |
| Heavy Duty Truck (40 Tons) | d27ac161-f687-44d4-93f7-e5b7ef3178bb |
| Flatbed Truck (30 Tons) | 156c6fe5-3f0e-4cd4-8f91-cdb4aec32c72 |
| Flatbed Truck (40 Tons) | ec19665c-0ead-4a0c-81b9-7322b69be399 |
| Tow Truck - Single Vehicle Recovery & Delivery | 32e171e4-7e80-4260-a843-cad8fabc943f |
Driver
service_type: driver-book-a-cardriver
| Option | Service ID |
|---|---|
| Small Car (3 passengers) | 6ecee57f-6454-4cce-bc31-e12ed8a53220 |
| Large Car (5 passengers) | 2304eb86-caea-45e7-85c2-fcc15f9111e5 |
| Mini Bus (14 passengers) | 0fb4b66e-b611-435d-940d-ee747dc30dc3 |
| Coach (60 passengers) | ec7b78a8-dadd-46c0-abfb-a3f6e22532cf |
| FOOD DISPATCH RIDER | f441dc5c-8f94-457e-9180-aae72c575e6a |
Parcels above 50 kg: please contact Travo for a custom quote.
Objects & fields
Place
| Field | Required | Notes |
|---|---|---|
| street1 | Yes | Address text |
| name | No | Place name, for example an airport or landmark |
| location.type | Yes | Always Point |
| location.coordinates | Yes | [longitude, latitude]. Longitude comes first. |
Convert your customer's address to coordinates with a geocoding service (for example Google Geocoding) before calling the API.
Errors
{
"error": "The pickup field is required.",
"errors": [ "The pickup field is required." ]
}| Status | Meaning |
|---|---|
401 | Missing or invalid API key. Check the Authorization header. |
405 | Wrong method. Use GET for /v1/service-quotes. |
422 | Missing or invalid field. The errors list names each problem. |
429 | Too many requests. Wait and retry. |
5xx | Server error. Retry later or contact support. |
Try it: live quote form
Enter your details and start typing an address, then pick it from the suggestions to see a live Travo quote. Partners can also see how the branding and payment details are shown.
Request API keys
Tell us your company and the website where you will use the API. We issue one key per website.
Branding rules
Websites that show Travo quotes must display the Travo logo and link to both Travo sites next to the price.
- Show the Travo logo:
https://services.travo.ng/wp-content/uploads/2025/04/blog-logo.png - Link to travo.ng and services.travo.ng
- Show prices as
amount / 100in Naira
Developer support
Integrating? Message the line with the "DEV API:" prefix for routing to someone technical, or email hello@travoservices.com.
