Introduction
Welcome to the developer documentation for Deliveree, a comprehensive logistics and supply chain solution provider. Our Deliveree developer endpoints are designed to empower developers, partners, and clients to seamlessly integrate our logistics capabilities into their own systems. This document provides all the necessary information to get started with our API, including endpoints, authentication methods, and example requests.
Booking Flow
Workflow
Booking Status
To ensure comprehensive testing of the entire process and validate the correct reception of all statuses, the booking status is configured to change to the next one after 5-15 seconds. Please noted that only Sandbox environment has this setup.
Below table is all of the booking statuses:
Booking Status |
Description |
locating_driver |
Once a booking is created by the customer, the system will broadcast the booking to all available drivers for their acceptance. |
driver_accept_booking |
This status indicates that a driver has accepted the booking and is now assigned to the job. |
delivery_in_progress |
This status indicates that the driver has picked up the shipment and is currently en route to the delivery destination. |
delivery_complete |
The cargo has been successfully delivered to the designated destination, completing the delivery process. |
canceled |
Indicates that the booking has been canceled before completion. |
locating_driver_timeout |
This status indicates that the system was unable to find a driver within the allocated time period for the booking. |
Support
If you encounter any issues or have questions, our support team is here to help. You can reach out via:
Change Logs
Date |
Changes |
09 Sep 24 |
Upgrade all the endpoints from v1 to v10 to increase performance |
Getting Started
The Deliveree API offers a comprehensive suite of tools that enable clients to efficiently check prices, and create, and manage bookings. To start using the API, follow these steps:
- Sign Up: Register for a developer account by reaching to our dedicated teams in your region
- Obtain API Key: Deliveree will generate a unique Sandbox API key which enable you to explore our API.
- Read Documentation: Familiarize yourself with this documentation to understand the available endpoints and how to use them.
- Test API Calls: Use the sandbox environment to test your API calls and ensure they work as expected.
- Integrate and Deploy: Once satisfied with your tests, integrate the API into your application and move to production.
Time Display
All timestamp information in Deliveree API are presented in ISO8601 with offset.
Authentication
When your account manager sets up your account initially, you will receive an API key. It is crucial to securely store this key and refrain from embedding it in client-side code.
To authenticate API requests, include the API key in the request header with the key “Api-Key”. Requests made without this key will result in a 401 Unauthorized response.
For further assistance, please contact our team via email with your contact information, and we will promptly assist you.
curl -H 'Authorization: YOUR_API_KEY' \
'https://api.deliveree.com/public_api/v1/deliveries'
Environment URLs
To facilitate development and testing, the Deliveree API provides separate environments for sandbox and production. These environments allow you to safely test and integrate our services before going live.
- Sandbox Environment: Use this environment for testing your integration without affecting live data or operations. It’s an ideal space to simulate various scenarios and ensure your application works as expected.
- Production Environment: Once you have thoroughly tested your integration in the sandbox environment, use the production environment for live operations. This environment processes real data and transactions.
Request
Our API follows REST principles, characterized by:
- Standard HTTP verbs like GET, POST, DELETE for operations.
- Utilization of standard HTTP error responses to indicate errors.
- Authentication handled through HTTP Basic Authentication.
- Standard query encoding for all requests, with POST data encoded as application/x-www-form-urlencoded format.
Response Status
The DELIVEREE API utilizes HTTP status codes to communicate the outcome of your requests, encompassing both successful and unsuccessful responses. Detailed information is also included in JSON format to provide further context.
Response Status |
Description |
200 - OK |
Request completed as expected. |
201 - Created |
Used for requests that create new objects (i.e. Delivery). |
204 - No Content |
The server has completed the request but does not need to return a body (i.e. DELETE requests). |
304 - Not Modified |
Resource hasn’t been updated since the date provided. |
400 - Bad Request |
You did something wrong. Often a missing argument or parameter |
401 - Unauthorized |
Authentication was incorrect. |
403 - Forbidden |
The request is understood, but it has been refused or access is not allowed. |
404 - Not Found |
The requested resource could not be found. |
405 - Method Not Allowed |
Exceed the request limit. |
422 - Invalid Request |
The request body is parse-able however with invalid content or there are issues. |
50X - Errors |
Occur when something goes wrong in the Deliveree API. |
Requests that return multiple items are paginated by default, with each page containing up to 25 items. Use the page parameter to navigate through pages or specify offsets. Additionally, you can adjust the page size using the per_page parameter, supporting custom sizes of up to 100 items per page.
{
"pagination": {
"total_count": 422,
"per_page": 10,
"next_page": "?page=3&per_page=10...",
"previous_page": "?page=1&per_page=10..."
}
}
Error
Error responses contain specific details regarding the encountered issue.
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"statusCode": 401,
"code": 4010,
"message": "401 Unauthorized"
}
Webhooks
Webhooks enable you to receive real-time updates on your ongoing deliveries. By configuring a URL for us to POST updates to, you’ll receive the most current information to display to your customers.
Webhook Endpoint
To utilize webhooks, set up your web application to accept HTTP POST requests from us. These requests will include JSON objects that represent the events that have occurred. Please contact our team to configure this URL endpoint.
For every job status update, we will send a JSON payload to the configured endpoint. You can find more details about the possible statuses in our documentation.
Security
Encryption: You can use either an HTTP or HTTPS URL for webhooks. While HTTP is generally sufficient, HTTPS is recommended if your data is sensitive or if you want to protect against replay attacks.
Authentication: Each request we send includes a webhook authentication header. Since this header is the only way to verify the origin of your data, it is crucial to validate it. If the authentication header is incorrect, you should respond with a 401 Unauthorized status.
Header |
Description |
Authorization |
The unique key for a webhook which we use to authorize our requests. (This key can be generated by you) |
API Endpoints v1
Get A Delivery Quote
The first step in using the Deliveree API is to obtain a delivery quote. This helps you assess the cost and availability of our services, which may vary depending on factors such as distance and vehicle type.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
POST /public_api/v1/deliveries/get_quote
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters v1
Name |
Type |
Description |
time_type * |
string |
There are 2 time_type : “now” and “schedule”. “now” is a delivery that needs to happen now. “schedule” is a delivery in the future (at least 2 hours from current time). |
pickup_time |
datetime (ISO Time) |
For time_type=“now”, the pickup_time can be blank as the Delivery needs to happen now.For time_type=“schedule”, the pickup_time needs a value. |
vehicle_type_id |
integer |
Optional specific Vehicle Type ID.The return quotes will only for vehicle type you provide.Use this when you know exactly what vehicle type you need. |
packs |
array |
List of Pack’s informations.Include dimensions(length, width, height), weight, quantity. |
locations * |
array |
List of Short Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
extra_services |
array |
List of Extra Service (incl. normal and goods insurance). |
$ curl -X POST /public_api/v1/deliveries/get_quote \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
--data '{
"time_type": "now",
"vehicle_type_id":21,
"packs": [
{
"dimensions": [1,2,3],
"weight": 100,
"quantity": 2
},
{
"dimensions": [2,2,5],
"weight": 20,
"quantity": 1
}
],
"locations": [
{
"address": "Jl. Sultan Iskandar Muda No.21, Arteri Pondok Indah, Pd. Pinang, Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168
},
{
"address": "Gedung Inti Sentra, Jl. Taman Kemang, RT.14/RW.1, Bangka, Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"need_cod": true,
"cod_invoice_fees": 5000,
"need_pod":true
},
{
"address": "Lavenue Apartemen, Jl. Ps. Minggu Raya, RT.7/RW.2, Pancoran, South Jakarta City, Jakarta, Indonesia",
"latitude": -6.248446679393533,
"longitude": 106.84431951392108,
"recipient_name": "Duke",
"recipient_phone": "+84903856534",
"note": "Office tower, 19th floor"
}
],
"extra_services": [
{
"extra_requirement_id": 140,
"selected_amount": 1
},
{
"extra_requirement_id": 416,
"selected_amount": 1,
"extra_requirement_pricing_id": 2146
}
]
}'
An extra service is an object representing an extra service of delivery
Name |
Type |
Description |
extra_requirement_id * |
integer |
Extra service Id. |
selected_amount |
integer |
Selected amount of extra service. |
extra_requirement_pricing_id |
integer |
Extra service pricing id of goods insurance. |
name |
string |
Name of extra service. |
unit_price |
float |
Unit price of extra service. |
display_level_price |
string |
Display text for level price of goods insurance pricing. |
display_fees |
string |
Display text for fees of goods insurance pricing. |
display_fees_without_currency |
string |
Display text for fees without currency of goods insurance pricing. |
position |
integer |
Position of extra service. |
is_insurance |
boolean |
The extra service has goods insurance or not. |
Short Location v1
A location is an object representing a location. We highly recommend using latitude and longitude address for location accuracy.
Name |
Type |
Description |
address * |
string |
Address of the location. |
latitude |
float |
Latitude component of the location. |
longitude |
float |
Longitude component of the location. |
need_cod |
boolean |
The location need COD or not. |
cod_invoice_fees |
float |
The COD amount that needs to be collected by the driver at that location. Is required if need_cod is true. |
need_pod |
boolean |
The location need POD or not. |
Proof of Delivery (POD) and Cash on Delivery (COD) v1
Each location can include a POD and/or a COD (set need_cod / need_pod as true or false). Our API returns a total_fee based on our pricing by country. Note that if you request a COD, the cod_invoice_fees (amount that needs to be collected by the driver) is required.
Pack v1
Pack is kind of package you want to delivery.
Name |
Type |
Description |
dimensions * |
array |
Array [length, width, height] of pack by Centimeter. |
weight * |
float |
Weight of pack by Kilogram. |
quantity * |
integer |
Quantity of pack. |
Responses v1
We return a list of fees for all available vehicle types.
Name |
Type |
Description |
vehicle_type_id |
integer |
The ID of vehicle type (use it to create a delivery). |
vehicle_type_name |
string |
The name of vehicle type (ex. Motorbike, City Car, etc). |
time_type |
string |
Available in 2 types: “now” and “schedule”. |
total_fees |
string |
Estimated Delivery Fee for the vehicle type. |
distance_fees |
string |
The estimated fee to deliver through the locations excluding extra service and reimbursement. |
cod_pod_fees |
string |
The estimated fee for COD/POD service. |
cod_pod |
boolean |
Booking has COD/POD service. |
company_type_discount |
string |
The company discount value. |
surcharge_fees |
string |
The estimated fee for surge during the high demand. |
surcharge_adjustments |
string |
The estimated fee for special adjustment. |
way_point_fees |
string |
The estimated fee for additional location. |
commission_discount |
string |
The commission discount to driver. |
booking_extra_requirements |
array |
List of Extra Service (incl. normal and goods insurance). |
currency |
string |
Currency of the amount fee (ex. Rp, Usd, etc). |
total_distance |
float |
Total amount of distances, calculated in kilometers. |
vehicle_type |
array |
List of Vehicle Type. |
best_transit_time |
string |
The estimated transit time to the final destination. |
quick_choices |
array |
List of available quick choices. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"vehicle_type_id": 27,
"vehicle_type_name": "BMW i8",
"time_type": "schedule",
"total_fees": 169000.0,
"distance_fees": 80000.0,
"cod_pod_fees": 1000.0,
"cod_pod": true,
"company_type_discount": 8000.0,
"surcharges_fees": 0,
"surcharges_adjustments": 0,
"way_point_fees": 0.0,
"commission_discount": -0.0,
"booking_extra_requirements": [
{
"selected_amount": 2,
"extra_requirement_id": 1000,
"name": "Rope Rental",
"unit_price": 18000.0,
"position": null,
"is_insurance": false
},
{
"selected_amount": 1,
"extra_requirement_id": 998,
"name": "Goods Insurance",
"unit_price": 60000.0,
"position": null,
"is_insurance": true
}
],
"currency": "₫",
"total_distance": 10.0,
"vehicle_type": {
"id": 27,
"name": "BMW i8",
"cargo_length": 200.0,
"cargo_height": 200.0,
"cargo_width": 200.0,
"cargo_weight": 800.0,
"cargo_cubic_meter": 9.0,
"quick_choices": [
{
"id": 440,
"schedule_time": 40,
"time_type": "schedule"
},
{
"id": 531,
"schedule_time": 15,
"time_type": "now"
}
]
},
"best_transit_time": 6770,
"eta_locations_id": 2888471
}
]
}
Vehicle Type v1
Name |
Type |
Description |
id |
integer |
The ID of the vehicle. |
name |
string |
Name of the Vehicle. |
cargo_length |
float |
Cargo length of a vehicle. |
cargo_height |
float |
Cargo height of a vehicle. |
cargo_width |
float |
Cargo width of a vehicle. |
cargo_weight |
float |
Cargo weight of a vehicle. |
cargo_cubic_meter |
float |
Cargo cubic meter of a vehicle. |
quick_choices |
array |
List of available quick choices. |
Quick Choice v1
Name |
Type |
Description |
id |
integer |
Id of quick choice. |
schedule_time |
datetime |
Schedule time in minutes. |
time_type |
string |
Available in 2 types: “now” and “schedule”. |
Create A Delivery
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
POST /public_api/v1/deliveries
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Required Parameter by User Type v1
BP as Non-Bp Account v1
Name |
Type |
Description |
booking_payment_type * |
string |
Set value of Booking Payment Type equal to ‘cash’. |
customer_id * |
integer |
Customer Id is an id of a specific account, which BP wants to create. This account must be an employee of the company. |
location |
array |
Location list must contains at least 1 location with is_payer = true. |
Non-BP Account v1
Name |
Type |
Description |
location |
array |
Location list must contains at least 1 location with is_payer = true. |
Parameters v1
Name |
Type |
Description |
vehicle_type_id * |
integer |
Vehicle Type ID, provided when requesting a “Delivery Quote” (ex. 1 which is Motorbike). |
customer_id |
integer |
Customer ID. |
booking_payment_type |
string |
Booking Payment type is available in 2 types: credit and cash (apply for key from BP.) |
note |
string |
Note of for the entire delivery. This one is different from “note per location”. (ex. Fragile Item that needs good care). |
time_type * |
string |
There are 2 time_type : “now” and “schedule”. “now” is a delivery that needs to happen now. “schedule” is a delivery in the future (at least 2 hours from current time). |
pickup_time |
datetime (ISO Time) |
For time_type=“now”, the pickup_time can be blank as the Delivery needs to happen now.For time_type=“schedule”, the pickup_time needs a value. |
job_order_number |
string |
Optional Job/Order number that identifies the package. Example: “Order #690”. |
allow_parking_fees |
boolean |
Driver may have to pay for parking. |
allow_tolls_fees |
boolean |
Driver can use tolls roads. |
allow_waiting_time_fees |
boolean |
Driver may have to wait 60 min or more. |
optimize_route |
boolean |
Re-order your destinations to achieve the fastest route. |
send_first_to_favorite |
boolean |
Prioritizing booking to your favorite drivers first before everyone else. |
locations * |
array |
List of Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
require_signatures |
boolean |
Require signatures and applies to all locations. |
extra_services |
array |
List of Extra Service (incl. normal and goods insurance). |
quick_choice |
boolean |
Allow to use quick choice for time type now. It will be the pickup time for a booking. |
quick_choice_id |
integer |
id of quick choice. |
$ curl -X POST /public_api/v1/deliveries \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
--data '{
"vehicle_type_id": 1,
"note": "Fragile item that needs good care.",
"time_type": "now",
"quick_choice": true,
"quick_choice_id": 186,
"job_order_number": "66666",
"locations": [
{
"address": "Jl. Sultan Iskandar Muda No.21, Arteri Pondok Indah, Pd. Pinang, Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"recipient_name": "Duke",
"recipient_phone": "+84903398399",
"note": "Second floor, room 609"
},
{
"address": "Gedung Inti Sentra, Jl. Taman Kemang, RT.14/RW.1, Bangka, Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"recipient_name": "Nam",
"recipient_phone": "+84903856534",
"note": "First floor, right room.",
"need_cod": true,
"cod_note": "You need to get money from Nam",
"cod_invoice_fees": 5000,
"need_pod":true,
"pod_note": "You need to ..."
},
{
"address": "Lavenue Apartemen, Jl. Ps. Minggu Raya, RT.7/RW.2, Pancoran, South Jakarta City, Jakarta, Indonesia",
"latitude": -6.248446679393533,
"longitude": 106.84431951392108,
"recipient_name": "Duke",
"recipient_phone": "+84903856534",
"note": "Office tower, 19th floor"
}
],
"require_signatures": true,
"extra_services": [
{
"extra_requirement_id": 140,
"selected_amount": 1
},
{
"extra_requirement_id": 416,
"selected_amount": 1,
"extra_requirement_pricing_id": 2146
}
]
}'
Location v1
A location is an object representing a location of delivery
Name |
Type |
Description |
address * |
string |
Address of the location. |
latitude |
float |
Latitude component of the location. |
longitude |
float |
Longitude component of the location. |
recipient_name * |
string |
Name of a personal recipient at the location (our driver needs to contact person at the location, ex. Thomas Eichenberger). |
recipient_phone * |
string |
Phone number of a personal recipient at the location (our driver needs to call that person when arriving). |
is_payer |
boolean |
The recipient is payer or not |
note |
string |
Additional instructions for the driver at the location. Each location has a particular note (ex. Pickup Location: Building G2, 18th floor. Drop-off location: Ground Floor, please ring). |
status |
string |
Delivery status. |
failed_delivery_reason |
string |
Reason for failed delivery (If Delivery status is Failed). |
need_cod |
boolean |
The location need COD or not. |
cod_note |
string |
COD note. |
cod_invoice_fees |
float |
The COD amount that needs to be collected by the driver at that location. Is required if need_cod is true. |
need_pod |
boolean |
The location need POD or not. |
pod_note |
string |
POD note. |
position_trackings |
array |
List of Position Tracking. |
proof_of_delivery_photos |
array |
List of Proof of delivery photos and documents. |
signature_url |
string |
The Signature Url. |
tracking_sharing |
string |
The location tracking url. |
Responses v1
Name |
Type |
Description |
id |
integer |
ID of delivery. |
customer_id |
integer |
ID of customer. |
driver_id |
integer |
ID of driver. |
vehicle_type_id |
integer |
ID of vehicle type. |
company_id |
integer |
ID of company (if the delivery is from a Business). |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
status |
string |
Status of delivery. |
note |
text |
Note of entire delivery (not the note per location). |
total_fees |
float |
Amount Fee. |
currency |
string |
Currency of Delivery (ex. Rp, Usd, etc). |
tracking_url |
string |
URL to view status of delivery. That URL can be opened in a browser to follow the driver real-time and see the ETA to locations). |
job_order_number |
string |
Order Number. |
created_at |
datetime |
Time of Creation of the delivery (ISO Time). |
eta_from_driver_to_pickup |
integer |
ETA in seconds from current driver location to pickup location. |
distance_from_driver_to_pickup |
float |
Distance between driver and pickup location (Unit: Kilometer). |
pickup_time |
string |
Timestamp when user confirm via SMS. (ISOTime). |
completed_at |
string |
Timestamp when driver complete booking. (ISOTime). |
driver |
object |
Driver Information. In case the booking is on process, this field will be null. |
vehicle |
object |
Vehicle Information, include “plate_number” as String. |
locations |
array |
List of Location (incl. pick-up and drop-off locations). |
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": 100,
"customer_id": 22,
"driver_id": 403,
"vehicle_type_id": 1,
"company_id": 33,
"time_type": "now",
"status": "delivery_in_progress",
"note": "Just a note",
"total_fees": 500,
"currency": "Rp",
"tracking_url": "https://webapp.deliveree.com/...",
"job_order_number": "66666",
"created_at": "2016-01-29T01:35:08Z",
"eta_from_driver_to_pickup": 1800,
"distance_from_driver_to_pickup": 10.5,
"pickup_time": "2021-07-01T18:38:17+07:00",
"completed_at": null,
"driver": null,
"vehicle": {
"vehicle_attributes": {
"plate_number": null
}
},
"locations": [
{
"id": 707438,
"name": "Jl. Sultan Iskandar Muda No.21, Arteri Pondok Indah, Pd. Pinang, Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"driver_note": null,
"note": "Second floor, room 609",
"recipient_name": "Duke",
"status": "",
"failed_delivery_reason": "",
"position_trackings": [],
"proof_of_delivery_photos": [],
"signature_url": null
},
{
"id": 707439,
"name": "Gedung Inti Sentra, Jl. Taman Kemang, RT.14/RW.1, Bangka, Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"driver_note": null,
"note": "First floor, right room.",
"recipient_name": "Duke",
"status": "",
"failed_delivery_reason": "",
"position_trackings": [],
"proof_of_delivery_photos": [],
"signature_url": null
},
{
"id": 707440,
"name": "Lavenue Apartemen, Jl. Ps. Minggu Raya, RT.7/RW.2, Pancoran, South Jakarta City, Jakarta, Indonesia",
"driver_note": null,
"note": "Office tower, 19th floor",
"recipient_name": "Duke",
"status": "",
"failed_delivery_reason": "",
"position_trackings": [],
"proof_of_delivery_photos": [],
"signature_url": null
}
],
"require_signatures": true,
"booking_extra_requirements": [
{
"selected_amount": 1,
"extra_requirement_id": 140,
"name": "Extra Helper",
"unit_price": 50000,
"display_level_price": null,
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": false
},
{
"selected_amount": 1,
"extra_requirement_id": 416,
"name": "Goods Insurance",
"unit_price": 0.0,
"display_level_price": "Rp 1.000.000.000",
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": true
}
]
}
Exceed Request Limitation v1
We highly recommend you to use your longitude and latitude API services. In case, if you’re using the Geo Coordinates service from Deliveree, please note it is limited. You will see an error message if it reaches the query limit.
Odd/Even Booking ID v1
Bookings created on Sandbox with an odd-numbered booking ID will automatically be completed; while bookings with an even-numbered ID has to manually be completed by using the “Test My Booking” tab in the Sandbox API Dashboard.
For Example:
- Booking ID 12345 will automatically be completed
- Booking ID 12346 needs to be completed by the client by checking the “Test My Booking” tab in the Sandbox API Dashboard.
Get Delivery Details
You can check the delivery status at any time, but we highly recommend using webhooks if you can implement them for real-time updates.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X GET /public_api/v1/deliveries/1 \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en"
GET /public_api/v1/deliveries/{id}
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters v1
Name |
Type |
Description |
id * |
integer |
ID of Delivery. |
Responses v1
Name |
Type |
Description |
id |
integer |
ID of delivery. |
customer_id |
integer |
ID of customer. |
customer_name |
string |
Name of customer. |
driver_id |
integer |
ID of driver. |
driver |
array |
Information of Driver. |
vehicle_type_id |
integer |
ID of vehicle type. |
company_id |
integer |
ID of company (if the delivery is from a Business). |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
status |
string |
Status of delivery. |
need_confirmation |
string |
Booking has confirmed reimbursement yet. |
note |
text |
Note of entire delivery (not the note per location). |
total_fees |
float |
Amount Fee. |
currency |
string |
Currency of Delivery (ex. Rp, Usd, etc). |
tracking_url |
string |
URL to view status of delivery. That URL can be opened in a browser to follow the driver real-time and see the ETA to locations). |
job_order_number |
string |
Order Number. |
eta_from_driver_to_pickup |
integer |
ETA in seconds from current driver location to pickup location. |
distance_from_driver_to_pickup |
float |
Distance between driver and pickup location (Unit: Kilometer). |
original_estimate_values |
float |
Original estimated time to final destination. |
current_estimate_values |
float |
Current estimated time to final destination. |
current_estimate_status |
float |
Current estimated status to final destination. |
pickup_time |
string |
Timestamp when user confirm via SMS (ISOTime). |
completed_at |
string |
Timestamp when driver complete booking (ISOTime). |
created_at |
datetime |
Time of Creation of the delivery (ISO Time). |
locations * |
array |
List of Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
Driver v1
Name |
Type |
Description |
id |
integer |
ID of driver. |
name |
string |
Name of customer. |
phone |
string |
Number phone of driver. |
driver_image_url |
string |
Link avatar of driver. |
last_known_position_lat |
float |
Last latitude position of driver. |
last_known_position_lng |
float |
Last longitude position of driver. |
Position Tracking v1
Name |
Type |
Description |
id |
integer |
ID of position tracking. |
latitude |
float |
Position latitude driver tracked. |
longitude |
float |
Position longitude driver tracked. |
tracked_at |
datetime |
Position driver tracked. |
tracking_type |
string |
List of type driver trackedTracking type include types [“location_stuffing”, “location_have_arrived”, “location_accept_delivery”, “location_inside_radius”, “location_outside_radius” ]Explain :- “location_stuffing”: Driver go to location and click button “start stuffing”
- “location_have_arrived”: Driver go to location and click button “i have arrived”
- “location_accept_delivery”: Driver go to location and click button “accept delivery”
- “location_inside_radius”: Driver go to inside radius of location
- “location_outside_radius”: Driver go to outside radius of location
|
Proof of Delivery Photos and Documents v1
Name |
Type |
Description |
photo_type |
string |
Type of photo. |
photo_name |
string |
Name of photo. |
image_url |
string |
URL of photo. |
image_content_type |
string |
Photo content type. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 100,
"customer_id": 22,
"driver_id": 403,
"driver": {
"id": 403,
"name": "Duke the driver",
"phone": "+84903398399",
"driver_image_url": "https://webapp.deliveree.com/...",
"last_known_position_lat": 10.767930,
"last_known_position_lng": 106.696440
},
"vehicle_type_id": 1,
"company_id": 33,
"time_type": "now",
"status": "delivery_in_progress",
"note": "Just a note",
"total_fees": 500,
"currency": "Rp",
"tracking_url": "https://webapp.deliveree.com/...",
"job_order_number": "66666",
"eta_from_driver_to_pickup": 60,
"distance_from_driver_to_pickup": 1.2,
"created_at": "2016-01-29T01:35:08Z",
"pickup_time": "2016-02-01T01:36:08Z",
"completed_at": null,
"vehicle": {
"vehicle_attributes": {
"plate_number": "SPIL Blue 40ft - 000.01"
}
},
"locations": [
{
"address": "Jl. Sultan Iskandar Muda No.21, Arteri Pondok Indah, Pd. Pinang, Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"recipient_name": "Duke",
"recipient_phone": "+84903398399",
"note": "Second floor, room 609",
"status": "",
"failed_delivery_reason": "",
"position_trackings": [
{
"id": 1,
"latitude": -6.272444,
"longitude": 106.805534,
"tracked_at": "2016-01-29T03:35:08Z",
"tracking_type": "location_have_arrived"
},
{
"id": 2,
"latitude": -6.272444,
"longitude": 106.805534,
"tracked_at": "2016-01-29T03:55:08Z",
"tracking_type": "location_accept_delivery"
}
],
"proof_of_delivery_photos": [
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
},
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
}
],
"signature_url": "https://webapp.deliveree.com/...",
"tracking_sharing": "https://webapp.deliveree.com/..."
},
{
"address": "Gedung Inti Sentra, Jl. Taman Kemang, RT.14/RW.1, Bangka, Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"recipient_name": "Nam",
"recipient_phone": "+84903856534",
"note": "First floor, right room.",
"status": "Failed",
"failed_delivery_reason": "Recipient rejected",
"need_cod": true,
"cod_note": "You need to get money from Nam",
"cod_invoice_fees": 5000,
"need_pod":true,
"pod_note": "You need to ...",
"position_trackings": [
{
"id": 3,
"latitude": -1.003189,
"longitude": 101.972332,
"tracked_at": "2016-01-29T05:35:08Z",
"tracking_type": "location_have_arrived"
},
{
"id": 4,
"latitude": -1.003189,
"longitude": 101.972332,
"tracked_at": "2016-01-29T05:55:08Z",
"tracking_type": "location_accept_delivery"
}
],
"proof_of_delivery_photos": [
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
},
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
}
],
"signature_url": "https://webapp.deliveree.com/...",
"tracking_sharing": "https://webapp.deliveree.com/..."
},
{
"address": "Lavenue Apartemen, Jl. Ps. Minggu Raya, RT.7/RW.2, Pancoran, South Jakarta City, Jakarta, Indonesia",
"latitude": -6.248446679393533,
"longitude": 106.84431951392108,
"recipient_name": "Duke",
"recipient_phone": "+84903856534",
"note": "Office tower, 19th floor",
"status": "",
"failed_delivery_reason": "",
"position_trackings": [
{
"id": 3,
"latitude": -1.003189,
"longitude": 101.972332,
"tracked_at": "2016-01-29T05:35:08Z",
"tracking_type": "location_have_arrived"
},
{
"id": 4,
"latitude": -1.003189,
"longitude": 101.972332,
"tracked_at": "2016-01-29T05:55:08Z",
"tracking_type": "location_accept_delivery"
}
],
"proof_of_delivery_photos": [
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
},
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "https://webapp.deliveree.com/...",
"image_content_type": "image/png"
}
],
"signature_url": "https://webapp.deliveree.com/...",
"tracking_sharing": "https://webapp.deliveree.com/..."
}
],
"require_signatures": true,
"booking_extra_requirements": [
{
"selected_amount": 1,
"extra_requirement_id": 140,
"name": "Extra Helper",
"unit_price": 50000,
"display_level_price": null,
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": false
},
{
"selected_amount": 1,
"extra_requirement_id": 416,
"name": "Goods Insurance",
"unit_price": 0.0,
"display_level_price": "Rp 1.000.000.000",
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": true
}
]
}
Cancel A Delivery
A Delivery can be cancelled without fee before it has been accepted by a driver or within the 5 first minutes if the driver has not yet picked up the package.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X POST /public_api/v1/deliveries/1/cancel \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en"
POST /public_api/v1/deliveries/{id}/cancel
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters v1
Name |
Type |
Description |
id * |
integer |
ID of Delivery. |
Responses v1
We don’t return content for this API, please check the HTTP STATUS to know the result.
Get Deliveries List
List of all deliveries of a customer.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X GET /public_api/v1/deliveries \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
GET /public_api/v1/deliveries/
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters v1
$ curl -X GET /public_api/v1/deliveries?per_page=30&page=1&to_date=12%2F12%2F2021&sort_by=customer_name&order_by=desc&search=BMW+i8&status=canceled \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
Name |
Type |
Description |
page |
integer |
Define the number of pages or offsets. |
per_page |
integer |
Set up the number of items displayed per page. |
from_date |
datetime |
Bookings with pickup time less than this parameter will be filtered (format: dd/mm/yyyy). |
to_date |
datetime |
Bookings with pickup time greater than this parameter will be filtered (format: dd/mm/yyyy). |
status |
string |
To display booking status. |
search |
string |
Text search to find customer name, vehicle type and booking id. |
sort_by |
string |
Sort by id, time type, vehicle type, pickup time and customer name. |
order_by |
string |
Order by ascending and (default) descending. |
Responses v1
Name |
Type |
Description |
pagination.total_count |
integer |
Total number of results. |
pagination.per_page |
integer |
Number of result in current page. |
pagination.next_page |
string |
URL for the next page. |
pagination.previous_page |
string |
URL for the previous page. |
data |
array |
List of Delivery object. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"pagination": {
"total_count": 500,
"per_page": 25,
"next_page": "https://api.deliveree.com/public_api/{version}/...",
"previous_page": "https://api.deliveree.com/public_api/{version}/..."
},
"data": [
{
"id": 263979,
"customer_id": 5348,
"driver_id": 403,
"vehicle_type_id": 1,
"company_id": 569,
"time_type": "now",
"status": "delivery_in_progress",
"note": "Fragile item that needs good care.",
"total_fees": 400,
"currency": "฿",
"tracking_url": "http://localhost:3000/SqCkEVNiUbfLFey97",
"job_order_number": "66666",
"eta_from_driver_to_pickup": null,
"distance_from_driver_to_pickup": null,
"created_at": "2021-07-01T18:37:16+07:00",
"pickup_time": null,
"completed_at": null,
"driver": null,
"vehicle": {
"vehicle_attributes": {
"plate_number": null
}
},
"locations": [
{
"id": 707398,
"name": "buu dien thanh pho ho chi minh",
"driver_note": null,
"note": "Second floor, room 609",
"recipient_name": "Duke",
"position_trackings": [],
"proof_of_delivery_photos": [],
"signature_url": null
},
{
"id": 707399,
"name": "buu dien thanh pho ho chi minh",
"driver_note": null,
"note": "Second floor, room 609",
"recipient_name": "Duke",
"position_trackings": [],
"proof_of_delivery_photos": [],
"signature_url": null
}
],
"require_signatures": true,
"booking_extra_requirements": [
{
"selected_amount": 1,
"extra_requirement_id": 140,
"name": "Extra Helper",
"unit_price": 50000,
"display_level_price": null,
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": false
},
{
"selected_amount": 1,
"extra_requirement_id": 416,
"name": "Goods Insurance",
"unit_price": 0.0,
"display_level_price": "Rp 1.000.000.000",
"display_fees": "Free",
"display_fees_without_currency": "Free",
"position": 1,
"is_insurance": true
}
]
},
...
]
}
Delivery v1
A delivery is an object representing a delivery.
Name |
Type |
Description |
id |
integer |
ID of delivery. |
customer_id |
integer |
ID of customer. |
driver_id |
integer |
ID of driver. |
vehicle_type_id |
integer |
ID of vehicle type. |
company_id |
integer |
ID of company (if the delivery is from a Business). |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
status |
string |
Status of delivery. |
note |
text |
Note of the entire delivery (not the note per location). |
total_fees |
float |
Amount Fee. |
currency |
string |
Currency of Delivery (ex. Rp, Usd, etc). |
tracking_url |
string |
URL to view status of delivery. That URL can be opened in a browser to follow the driver real-time and see the ETA to locations. |
job_order_number |
string |
Order Number. |
created_at |
datetime |
Time of Creation of the delivery (ISO Time). |
eta_from_driver_to_pickup |
integer |
ETA in seconds from current driver location to pickup location. |
distance_from_driver_to_pickup |
float |
Distance between driver and pickup location (Unit: Kilometer). |
pickup_time |
string |
Timestamp when user confirm via SMS (ISOTime). |
completed_at |
string |
Timestamp when driver complete booking (ISOTime). |
driver |
object |
Driver Information. In case the booking is on process, this field will be null. |
vehicle |
object |
Vehicle Information, include “plate_number” as String. |
locations |
array |
List of Location (incl. pick-up and drop-off locations). |
Get Vehicle Types
We return a list vehicle types of a specific area.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X GET /public_api/v1/vehicle_types \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
GET /public_api/v1/vehicle_types
Name |
Type |
Description |
Authorization * |
string |
API Key |
Parameters v1
No need parameters.
Responses v1
Name |
Type |
Description |
ID |
integer |
ID of vehicle type. |
name |
string |
Name of vehicle type. |
cargo_length |
float |
Cargo length of vehicle type (cm). |
cargo_height |
float |
Cargo height of vehicle type (cm). |
cargo_width |
float |
Cargo width of vehicle type (cm). |
cargo_weight |
float |
Cargo weight of vehicle type (kg). |
cargo_cubic_meter |
float |
Cargo cubic meter of vehicle type (m3). |
minimum_pickup_time_schedule |
datetime |
Minimum pickup time with type schedule. |
minimum_pickup_time_fullday |
datetime |
Minimum pickup time with type full-day. |
minimum_pickup_time_fpr |
datetime |
Minimum pickup time with type fpr. |
minimum_pickup_time_fpr |
datetime |
Minimum pickup time with type fpr. |
quick_choices |
array |
List of quick choices. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"id": 27,
"name": "Closed Van",
"cargo_length": 200,
"cargo_height": 175,
"cargo_width": 180,
"cargo_weight": 1700,
"cargo_cubic_meter": 7,
"minimum_pickup_time_now": "2021-09-24T10:44:06.664+07:00",
"minimum_pickup_time_schedule": "2021-09-24T11:44:06.664+07:00",
"minimum_pickup_time_fullday": "2021-09-24T11:44:06.664+07:00",
"minimum_pickup_time_fpr": "2021-09-25T09:44:06.664+07:00",
"quick_choices": [
{
"id": 318,
"schedule_time": 15,
"time_type": "now"
},
{
"id": 319,
"schedule_time": 30,
"time_type": "now"
},
{
"id": 320,
"schedule_time": 45,
"time_type": "schedule"
}
]
},
{
"id": 82,
"name": "L300",
"cargo_length": 210,
"cargo_height": 125,
"cargo_width": 125,
"cargo_weight": 1000,
"cargo_cubic_meter": 3.3,
"minimum_pickup_time_schedule": "2021-09-24T10:44:06.684+07:00",
"minimum_pickup_time_fullday": "2021-09-24T10:44:06.684+07:00",
"minimum_pickup_time_fpr": "2021-09-25T09:44:06.684+07:00"
}
]
}
We return a list of extra services of a specific vehicle type.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X GET /public_api/v1/vehicle_types/21/extra_services \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
GET /public_api/v1/vehicle_types/{vehicle_type_id}/extra_services
Name |
Type |
Description |
Authorization * |
string |
API Key |
Parameters v1
Name |
Type |
Description |
dropoff_count |
integer |
Number of drop off. |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
Responses v1
Name |
Type |
Description |
id |
integer |
Id of extra service. |
amount |
integer |
Amount of extra service. |
unit_price |
float |
Unit price of extra service. |
name |
string |
Name of extra service. |
position |
integer |
Position of extra service. |
pricings |
array |
List of Extra Service Pricing (This is used only for goods insurance). |
pricing_method |
string |
Pricing method of extra service(“normal” or “by_options”).- “by_options”: pricing method for goods insurance.
- “normal”: pricing method for normal extra services.
|
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"id": 140,
"amount": 1,
"unit_price": 50000,
"name": "Extra Helper",
"position": 1,
"pricing_method": "normal"
},
{
"id": 416,
"amount": 0,
"unit_price": 0.0,
"name": "Goods Insurance",
"position": 2,
"pricings": [
{
"id": 2146,
"fees": 0.0,
"position": 1,
"level_price": 1000000000.0,
"display_level_price": "Rp 1 billion",
"display_fees": "Free",
"display_fees_without_currency": "Free"
}
],
"pricing_method": "by_options"
}
]
}
Name |
Type |
Description |
id |
integer |
Id of goods insurance pricing. |
fees |
float |
Fee of goods insurance pricing. |
position |
integer |
Position of goods insurance pricing. |
level_price |
float |
Level price of goods insurance pricing. |
display_level_price |
string |
Display text for level price of goods insurance pricing. |
display_fees |
string |
Display text for fees of goods insurance pricing. |
display_fees_without_currency |
string |
Display text for fees without currency of goods insurance pricing. |
Get User Profile
Get current user profile.
This API endpoint will be deprecated on 31 Mar 25. Please use version 10 instead.
Request v1
$ curl -X POST /public_api/v1/customers/user_profile \
--header "Content-Type:application/json" \
--header "Authorization: YOUR_API_KEY" \
--header "Accept-Language:en"
POST /public_api/v1/customers/user_profile
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Responses v1
Name |
Type |
Description |
name |
string |
Name of company or customer. |
user_type |
string |
Check bp_account and non_bp_account. |
country_code |
string |
User country code. |
time_zone |
string |
User time zone. |
currency |
string |
Currency (ex. Rp, Usd, etc). |
fleet_price_url |
string |
Fleet price URL. |
allow_post_payment |
string |
Allow post payment. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "Company Name",
"user_type": "bp_account",
"country_code": "ID",
"time_zone": "Bangkok",
"currency": "Rp",
"fleet_price_url": "https://www.deliveree.com/id/en/whole-vehicle-fleet-prices/",
"allow_post_payment": true
}
API Endpoints v10
Get A Delivery Quote
The first step in using the Deliveree API is to obtain a delivery quote. This helps you assess the cost and availability of our services, which may vary depending on factors such as distance and vehicle type.
Request
POST /public_api/v10/deliveries/get_quote
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters
Name |
Type |
Description |
time_type * |
string |
There are 2 time_type : “now” and “schedule”. “now” is a delivery that needs to happen now. “schedule” is a delivery in the future (at least 2 hours from current time). |
pickup_time |
string |
For time_type=“now”, the pickup_time can be blank as the Delivery needs to happen now.For time_type=“schedule”, the pickup_time needs a value. |
vehicle_type_id |
integer |
Optional specific Vehicle Type ID.The return quotes will only for vehicle type you provide.Use this when you know exactly what vehicle type you need. |
packs |
array |
List of PackInclude dimensions(length, width, height), weight, quantity. |
locations * |
array |
List of Short Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
extra_services |
array |
List of Extra Service (incl. normal and goods insurance). |
$ curl -X POST /public_api/v10/deliveries/get_quote \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
--data '{
"time_type": "now",
"vehicle_type_id":21,
"packs": [
{
"dimensions": [1,2,3],
"weight": 100,
"quantity": 2
},
{
"dimensions": [2,2,5],
"weight": 20,
"quantity": 1
}
],
"locations": [
{
"address": "Jl. Sultan Iskandar Muda No.21, Arteri Pondok Indah, Pd. Pinang, Kby. Lama, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168
},
{
"address": "Gedung Inti Sentra, Jl. Taman Kemang, RT.14/RW.1, Bangka, Mampang Prpt., Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta, Indonesia",
"latitude": -6.2608232,
"longitude": 106.7884168,
"need_cod": true,
"cod_invoice_fees": 5000,
"need_pod":true
},
{
"address": "Lavenue Apartemen, Jl. Ps. Minggu Raya, RT.7/RW.2, Pancoran, South Jakarta City, Jakarta, Indonesia",
"latitude": -6.248446679393533,
"longitude": 106.84431951392108,
"recipient_name": "Duke",
"recipient_phone": "+84903856534",
"note": "Office tower, 19th floor"
}
],
"extra_services": [
{
"extra_requirement_id": 140,
"selected_amount": 1
},
{
"extra_requirement_id": 416,
"selected_amount": 1,
"extra_requirement_pricing_id": 2146
}
]
}'
An extra requirement (or service) is an object representing an extra requirement or service of delivery
Name |
Type |
Description |
extra_requirement_id * |
integer |
Extra service Id. |
selected_amount |
integer |
Selected amount of extra service. |
extra_requirement_pricing_id |
integer |
Extra service pricing id of goods insurance. |
Short Location
A location is an object representing a location. We highly recommend using latitude and longitude address for location accuracy.
Name |
Type |
Description |
address * |
string |
Address of the location. |
latitude |
float |
Latitude component of the location. |
longitude |
float |
Longitude component of the location. |
need_cod |
boolean |
The location need COD or not. |
cod_invoice_fees |
float |
The COD amount that needs to be collected by the driver at that location. Is required if need_cod is true. |
need_pod |
boolean |
The location need POD or not. |
Proof of Delivery (POD) and Cash on Delivery (COD)
Each location can include a POD and/or a COD (set need_cod / need_pod as true or false). Our API returns a total_fee based on our pricing by country. Note that if you request a COD, the cod_invoice_fees (amount that needs to be collected by the driver) is required.
Pack
Pack is kind of package you want to delivery.
Name |
Type |
Description |
dimensions * |
array |
Array [length, width, height] of pack by Centimeter. |
weight * |
float |
Weight of pack by Kilogram. |
quantity * |
integer |
Quantity of pack. |
Responses
We return a list of fees for all available vehicle types.
Name |
Type |
Description |
vehicle_type_id |
integer |
The ID of vehicle type (use it to create a delivery). |
time_type |
string |
Available in 2 types: “now” and “schedule”. |
total_fees |
float |
Estimated Delivery Fee for the vehicle type. |
currency |
string |
Currency of the amount fee (ex. Rp, Usd, etc). |
total_distance |
float |
Total amount of distances, calculated in kilometers. |
distance_fees |
float |
The estimated fee to deliver through the locations excluding extra service and reimbursement. |
way_points_fees |
float |
The estimated fee for additional location. |
cod_pod_fees |
float |
The estimated fee for COD/POD service. |
extra_fees |
float |
The estimated fee for additional extra services. |
surcharges_fees |
float |
The estimated fee for surge during the high demand. |
surcharges_adjustments_fees |
float |
The estimated fee for special adjustment. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"vehicle_type_id": 21,
"time_type": "now",
"total_fees": 200000.0,
"currency": "Rp",
"total_distance": 9,
"distance_fees": 140000,
"way_point_fees": 5000,
"cod_pod_fees": 5000,
"extra_fees": 50000,
"surcharges_fees": 0,
"surcharges_adjustments_fees": 0
}
]
}
Create A Delivery
Request
POST /public_api/v10/deliveries
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Required Parameter by User Type
BP as Non-Bp Account
Name |
Type |
Description |
booking_payment_type * |
string |
Set value of Booking Payment Type equal to ‘cash’. |
customer_id * |
integer |
Customer Id is an id of a specific account, which BP wants to create. This account must be an employee of the company. |
locations |
array |
Location list must contains at least 1 location with is_payer = true. |
Non-BP Account
Name |
Type |
Description |
locations |
array |
Location list must contains at least 1 location with is_payer = true. |
Parameters
Name |
Type |
Description |
vehicle_type_id * |
integer |
Vehicle Type ID, provided when requesting a “Delivery Quote” (ex. 1 which is Motorbike). |
customer_id |
integer |
Customer ID. |
booking_payment_type |
string |
Booking Payment type is available in 2 types: credit and cash (apply for key from BP.) |
note |
string |
Note of for the entire delivery. This one is different from “note per location”. (ex. Fragile Item that needs good care). |
time_type * |
string |
There are 2 time_type : “now” and “schedule”. “now” is a delivery that needs to happen now. “schedule” is a delivery in the future (at least 2 hours from current time). |
pickup_time |
string |
For time_type=“now”, the pickup_time can be blank as the Delivery needs to happen now.For time_type=“schedule”, the pickup_time needs a value (ISO Time). |
job_order_number |
string |
Optional Job/Order number that identifies the package. Example: “Order #690”. |
allow_parking_fees |
boolean |
Driver may have to pay for parking. |
allow_tolls_fees |
boolean |
Driver can use tolls roads. |
allow_waiting_time_fees |
boolean |
Driver may have to wait 60 min or more. |
optimize_route |
boolean |
Re-order your destinations to achieve the fastest route. |
send_first_to_favorite |
boolean |
Prioritizing booking to your favorite drivers first before everyone else. |
marked_as_favorite |
boolean |
Mark this booking as favorite. |
locations * |
array |
List of Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
require_signatures |
boolean |
Require signatures and applies to all locations. |
extra_services |
array |
List of Extra Service (incl. normal and goods insurance). |
estimate_transit_times_attributes |
object |
Information of Estimate Transit Time. |
discount_code |
string |
Discount code. |
booking_location_tracking_attributes |
object |
Information of Location Tracking. |
$ curl 'https://api.sandbox.deliveree.com/public_api/v10/deliveries' \
--header 'Authorization:YOUR_API_KEY' \
--header 'Content-Type:application/json' \
--header "Accept-Language:en" \
--data '{
"vehicle_type_id": 21,
"booking_payment_type": "credit",
"note": "Please be careful!",
"time_type": "schedule",
"pickup_time": "2024-08-13T16:30:32+07:00",
"job_order_number": "sb-668e35617d13f9eddcf101f1",
"allow_parking_fees": true,
"allow_tolls_fees": true,
"allow_waiting_time_fees": true,
"send_first_to_driver": false,
"marked_as_favorite": true,
"locations": [
{
"address": "Jl. Tugu Monas No.1, Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta 10110, Indonesia",
"latitude": -6.17537,
"longitude": 106.82711,
"recipient_name": "Erna",
"recipient_phone": "+629046487946",
"note": "First location",
"is_payer": false
},
{
"address": "Jl. Senen Raya No. 66, Pasar Baru, Sawah Besar, Kota Jakarta Pusat, DKI Jakarta, Indonesia, 10710",
"latitude": -6.171188608007963,
"longitude": 106.83708972121016,
"recipient_name": "LJ",
"recipient_phone": "+629046487946",
"note": "Second location",
"need_cod": false,
"cod_note": "Collect the money",
"cod_invoice_fees": 100,
"need_pod": false,
"pod_note": "",
"is_payer": true
}
],
"require_signatures": true,
"extra_services": [
{
"extra_requirement_id": 140,
"selected_amount": 1
},
{
"extra_requirement_id": 416,
"selected_amount": 1,
"extra_requirement_pricing_id": 2146
}
],
"estimate_transit_times_attributes": [],
"discount_code": "khoa123",
"booking_location_tracking_attributes": null
}'
Location
A location is an object representing a location of delivery
Name |
Type |
Description |
address * |
string |
Address of the location. |
latitude |
float |
Latitude component of the location. |
longitude |
float |
Longitude component of the location. |
recipient_name * |
string |
Name of a personal recipient at the location (our driver needs to contact person at the location, ex. Thomas Eichenberger). |
recipient_phone * |
string |
Phone number of a personal recipient at the location (our driver needs to call that person when arriving). |
is_payer |
boolean |
The recipient is payer or not |
note |
string |
Additional instructions for the driver at the location. Each location has a particular note (ex. Pickup Location: Building G2, 18th floor. Drop-off location: Ground Floor, please ring). |
need_cod |
boolean |
The location need COD or not. |
cod_note |
string |
COD note. |
cod_invoice_fees |
float |
The COD amount that needs to be collected by the driver at that location. Is required if need_cod is true. |
need_pod |
boolean |
The location need POD or not. |
pod_note |
string |
POD note. |
Estimate Transit Time
An estimated transit time represents the estimated time that the delivery takes.
Name |
Type |
Description |
eta * |
string |
Estimate transit time (ISO Time). |
worst_case_eta |
string |
Worst case possible estimate transit time (ISO Time). |
Location Tracking
A Location Tracking representing the location of client when booking (not related to booking locations)
Name |
Type |
Description |
latitude * |
float |
Latitude component of the location. |
longitude * |
float |
Longitude component of the location. |
Responses
Name |
Type |
Description |
booking_id |
integer |
ID of delivery. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"booking_id": 69853
}
Exceed Request Limitation
We highly recommend you to use your longitude and latitude API services. In case, if you’re using the Geo Coordinates service from Deliveree, please note it is limited. You will see an error message if it reaches the query limit.
Odd/Even Booking ID
Bookings created on Sandbox with an odd-numbered booking ID will automatically be completed; while bookings with an even-numbered ID has to manually be completed by using the “Test My Booking” tab in the Sandbox API Dashboard.
For Example:
- Booking ID 12345 will automatically be completed
- Booking ID 12346 needs to be completed by the client by checking the “Test My Booking” tab in the Sandbox API Dashboard.
Get Delivery Details
You can check the delivery status at any time, but we highly recommend using webhooks if you can implement them for real-time updates.
Request
$ curl -X GET /public_api/v10/deliveries/1 \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en"
GET /public_api/v10/deliveries/{id}
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters
Name |
Type |
Description |
id * |
integer |
ID of Delivery. |
Responses
Name |
Type |
Description |
id |
integer |
ID of delivery. |
customer_id |
integer |
ID of customer. |
customer_name |
string |
Name of customer. |
driver_id |
integer |
ID of driver. |
driver |
object |
Information of Driver. |
vehicle_type_info |
object |
Information of Vehicle. |
company_id |
integer |
ID of company (if the delivery is from a business). |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
status |
string |
Status of delivery. |
need_confirmation |
boolean |
Booking has confirmed reimbursement yet. |
note |
string |
Note of entire delivery (not the note per location). |
total_fees |
float |
Amount Fee. |
currency |
string |
Currency of Delivery (ex. Rp, Usd, etc). |
tracking_url |
string |
URL to view status of delivery. |
job_order_number |
string |
Order Number. |
eta_from_driver_to_pickup |
integer |
ETA in seconds from current driver location to pickup location. |
distance_from_driver_to_pickup |
float |
Distance between driver and pickup location (Unit: Kilometer). |
original_estimate_values |
array |
A string array of Original estimated time best case and worst case to final destination. |
current_estimate_values |
array |
A string array of Current estimated time best case and worst case to final destination. |
current_estimate_status |
string |
Current estimated status to final destination. |
pickup_time |
string |
Timestamp when user confirm via SMS (ISOTime). |
completed_at |
string |
Timestamp when driver complete booking (ISOTime). |
created_at |
string |
Time of Creation of the delivery (ISO Time). |
vehicle |
object |
Vehicle Information, include “plate_number” as String. |
locations * |
array |
List of Location (incl. pick-up and drop-off locations).The first location in the list is the pick-up location. The following locations are drop-off locations. The route is designed based on the order of the locations you post.Example : - Location 1 = pickup
- Location 2 = first drop-off by the driver
- Location 3 = second drop-off by the driver<
- etc
Minimum locations required : 2 (1x pickup and 1x drop-off)Maximum locations : - Up to 23 Locations for Indonesia
- Up to 15 Locations for Thailand
- Up to 15 Locations for Philippines
|
require_signatures |
boolean |
Require Signatures. |
extra_services |
array |
List of Extra Requirement (incl. normal and goods insurance). |
distance_fees |
float |
Distance fees of booking. |
cod_pod_fees |
float |
COD/POD fees. |
cod_pod |
boolean |
Included Cod/Pod? |
company_type_discount |
float |
Discount for company. |
surcharges_fees |
float |
Surcharge fees (Demand Adjustment). |
surcharges_adjustments_fees |
float |
Surcharge adjustment (Special Adjustment). |
way_point_fees |
float |
Waypoint fees of booking. |
Driver
Name |
Type |
Description |
id |
integer |
ID of driver. |
name |
string |
Name of driver. |
phone |
string |
Number phone of driver. |
driver_image_url |
string |
Link avatar of driver. |
last_known_position_lat |
float |
Last latitude position of driver. |
last_known_position_lng |
float |
Last longitude position of driver. |
Vehicle Type
Name |
Type |
Description |
id |
integer |
The ID of the vehicle. |
name |
string |
Name of the Vehicle. |
cargo_length |
float |
Cargo length of a vehicle. |
cargo_height |
float |
Cargo height of a vehicle. |
cargo_width |
float |
Cargo width of a vehicle. |
cargo_weight |
float |
Cargo weight of a vehicle. |
cargo_cubic_meter |
float |
Cargo cubic meter of a vehicle. |
Position Tracking
Name |
Type |
Description |
id |
integer |
ID of position tracking. |
latitude |
float |
Position latitude driver tracked. |
longitude |
float |
Position longitude driver tracked. |
tracked_at |
string |
Position driver tracked (ISO Time). |
tracking_type |
string |
List of type driver trackedTracking type include types [“location_stuffing”, “location_have_arrived”, “location_accept_delivery”, “location_inside_radius”, “location_outside_radius” ]Explain :- “location_stuffing”: Driver go to location and click button “start stuffing”
- “location_have_arrived”: Driver go to location and click button “i have arrived”
- “location_accept_delivery”: Driver go to location and click button “accept delivery”
- “location_inside_radius”: Driver go to inside radius of location
- “location_outside_radius”: Driver go to outside radius of location
|
Proof of Delivery Photos and Documents
Name |
Type |
Description |
photo_type |
string |
Type of photo. |
photo_name |
string |
Name of photo. |
image_url |
string |
URL of photo. |
image_content_type |
string |
Photo content type. |
An extra service is an object representing an extra service of delivery
Name |
Type |
Description |
selected_amount |
integer |
Selected amount of extra service. |
extra_requirement_id |
integer |
Extra service Id. |
name |
string |
Name of extra service. |
unit_price |
float |
Unit price of extra service. |
display_level_price |
string |
Display text for level price of pricing. |
display_fees |
string |
Display text for fees of unit price. |
display_fees_without_currency |
string |
Display text for fees without currency of unit price. |
position |
integer |
Position of extra service. |
is_insurance |
boolean |
The extra service has goods insurance or not. |
Location Detail
Name |
Type |
Description |
id |
integer |
Location ID. |
name |
string |
Location Name. |
latitude |
float |
Latitude component of the location. |
longitude |
float |
Longitude component of the location. |
recipient_name |
string |
Name of a personal recipient at the location (our driver needs to contact person at the location, ex. Thomas Eichenberger). |
recipient_phone |
string |
Phone number of a personal recipient at the location (our driver needs to call that person when arriving). |
note |
string |
Additional instructions for the driver at the location. Each location has a particular note (ex. Pickup Location: Building G2, 18th floor. Drop-off location: Ground Floor, please ring). |
driver_note |
string |
Driver Note. |
delivery_status |
string |
Delivery status. |
failed_delivery_reason |
string |
Reason for failed delivery (If Delivery status is Failed). |
position_trackings |
array |
List of Position Tracking. |
proof_of_delivery_photos |
array |
List of Proof of delivery photos and documents. |
signature_url |
string |
The Signature Url. |
tracking_sharing |
string |
The location tracking url. |
arrived_at |
string |
Timestamp when driver arrive (ISO Time). |
leaved_at |
string |
Timestamp when driver leave (ISO Time). |
parking_fees |
float |
Parking fees |
parking_confirmed |
boolean |
Parking confirmed. |
parking_photo_url |
string |
Photo of parking fees. |
parking_photo_content_type |
string |
Content type of parking fees photo. |
tolls_fees |
float |
Tolls fees. |
tolls_confirmed |
float |
Tolls confirmed. |
tolls_photo_url |
string |
Photo of tolls fees. |
tolls_photo_content_type |
string |
Content type of tolls fees photo. |
waiting_time_fees |
float |
Waiting time fees. |
waiting_time_confirmed |
boolean |
Waiting time confirmed. |
formatted_waiting_time |
string |
Formatted waiting time. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1484576,
"customer_id": 1686,
"customer_name": "khoa nguyen",
"driver_id": 8988,
"vehicle_type_info": {
"id": 130,
"name": "MVP",
"cargo_length": 200,
"cargo_height": 200,
"cargo_width": 200,
"cargo_weight": 800,
"cargo_cubic_meter": 10
},
"company_id": 212,
"time_type": "schedule",
"status": "delivery_completed",
"need_confirmation": false,
"note": "",
"total_fees": 10893,
"currency": "₫",
"tracking_url": "https://dev3.deliveree.com/kaG8RVUVXCb1tFv6A",
"job_order_number": "",
"eta_from_driver_to_pickup": null,
"distance_from_driver_to_pickup": null,
"original_estimate_values": [
"2024-07-06T01:06:02.000+07:00"
],
"current_estimate_values": [
"2024-07-05T18:05:15.331+07:00"
],
"current_estimate_status": "now",
"created_at": "2024-07-05T17:50:15+07:00",
"pickup_time": "2024-07-05T17:59:26.000+07:00",
"completed_at": "2024-07-05T18:00:20+07:00",
"driver": {
"id": 8988,
"name": "khoa nguyen 1",
"phone": "+84938324405",
"driver_image_url": "http://localhost:3000/system/drivers/driver_images/000/008/988/original/driver_image_1550568621737.jpeg?1550568816",
"last_known_position_lat": 10.7877075,
"last_known_position_lng": 106.6602419
},
"vehicle": {
"vehicle_attributes": {
"plate_number": "ac1234"
}
},
"locations": [
{
"id": 3720383,
"name": "1 Hoàng Việt, Phường 4, Tân Bình, Hồ Chí Minh, Vietnam",
"driver_note": "",
"note": "",
"recipient_name": "khoa nguyen",
"delivery_status": "delivered",
"failed_delivery_reason": "",
"position_trackings": [
{
"id": 388145,
"latitude": 10.7974861,
"longitude": 106.659168,
"tracked_at": "2024-07-05T17:58:02.000+07:00",
"tracking_type": "location_have_arrived_automatic"
}
],
"proof_of_delivery_photos": [
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "http://localhost:3000/system/photos/images/000/690/867/original/Goods%201484576%20FR.png?1720177172",
"image_content_type": "image/png"
}
],
"signature_url": "http://localhost:3000/system/locations/signatures/003/720/383/original/Signature%201484576%20FR.png?1720177169",
"arrived_at": "2024-07-05T17:58:02.000+07:00",
"leaved_at": "2024-07-05T17:59:29.894+07:00",
"latitude": 10.7973509271362,
"longitude": 106.65942506426,
"parking_fees": 0,
"parking_confirmed": true,
"parking_photo_url": null,
"parking_photo_content_type": null,
"tolls_fees": 0,
"tolls_confirmed": true,
"tolls_photo_url": null,
"tolls_photo_content_type": null,
"waiting_time_fees": 0,
"waiting_time_confirmed": true,
"formated_waiting_time": "",
"tracking_sharing": "https://dev3.deliveree.com/32LYUhfFho3NtAyr8"
},
{
"id": 3720384,
"name": "333/2/5, 333/2/5 Lê Văn Sỹ, Ward 1, Tan Binh District, Ho Chi Minh, 70000, Vietnam",
"driver_note": "",
"note": "",
"recipient_name": "khoa nguyen",
"delivery_status": "delivered",
"failed_delivery_reason": "",
"position_trackings": [
{
"id": 388146,
"latitude": 10.7974958,
"longitude": 106.6591604,
"tracked_at": "2024-07-05T17:59:39.000+07:00",
"tracking_type": "location_have_arrived_automatic"
}
],
"proof_of_delivery_photos": [
{
"photo_type": "proof_of_delivery",
"photo_name": "Proof of delivery",
"image_url": "http://localhost:3000/system/photos/images/000/690/870/original/Goods%201484576%20TO1.png?1720177220",
"image_content_type": "image/png"
}
],
"signature_url": "http://localhost:3000/system/locations/signatures/003/720/384/original/Signature%201484576%20TO1.png?1720177216",
"arrived_at": "2024-07-05T17:59:39.000+07:00",
"leaved_at": "2024-07-05T18:00:16.995+07:00",
"latitude": 10.7953694746388,
"longitude": 106.665866455307,
"parking_fees": 0,
"parking_confirmed": true,
"parking_photo_url": null,
"parking_photo_content_type": null,
"tolls_fees": 0,
"tolls_confirmed": true,
"tolls_photo_url": null,
"tolls_photo_content_type": null,
"waiting_time_fees": 0,
"waiting_time_confirmed": true,
"formated_waiting_time": "",
"tracking_sharing": "https://dev3.deliveree.com/32LYUhfFho3NtAyr8"
}
],
"require_signatures": true,
"extra_services": [
{
"selected_amount": 3,
"extra_requirement_id": 1733,
"name": "Eric extra",
"unit_price": 111,
"display_level_price": "Free",
"display_fees": "₫ 111",
"display_fees_without_currency": "111",
"position": 1,
"is_insurance": false
}
],
"distance_fees": 24000,
"cod_pod_fees": 0,
"cod_pod": true,
"company_type_discount": 13440,
"surcharges_fees": 0,
"surcharges_adjustments_fees": 0,
"way_point_fees": 0
}
Cancel A Delivery
A Delivery can be cancelled without fee before it has been accepted by a driver or within the 5 first minutes if the driver has not yet picked up the package.
Request
$ curl -X POST /public_api/v10/deliveries/1/cancel \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en"
POST /public_api/v10/deliveries/{id}/cancel
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters
Name |
Type |
Description |
id * |
integer |
ID of Delivery. |
Responses
We don’t return content for this API, please check the HTTP STATUS to know the result.
Get Deliveries List
List of all deliveries of a customer.
Request
$ curl -X GET /public_api/v10/deliveries \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
GET /public_api/v10/deliveries/
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Parameters
$ curl -X GET /public_api/v10/deliveries?per_page=30&page=1&to_date=12%2F12%2F2021&sort_by=id&order_by=desc&search=BMW+i8&status=canceled \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
--header "Accept-Language:en" \
Name |
Type |
Description |
page |
integer |
Define the number of pages. |
per_page |
integer |
Set up the number of items displayed per page. |
from_date |
string |
Bookings with pickup time less than this parameter will be filtered. |
to_date |
string |
Bookings with pickup time greater than this parameter will be filtered. |
status |
string |
To display booking status. |
search |
string |
Text search to find vehicle type and booking id. |
sort_by |
string |
Sort by id and pickup time. |
order_by |
string |
Order by ascending and (default) descending. |
Response
Name |
Type |
Description |
pagination.per_page |
integer |
Number of result in current page. |
pagination.next_page |
string |
Query string for the next page. |
pagination.previous_page |
string |
Query string for the previous page. |
data |
array |
List of Delivery Details object. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"pagination": {
"per_page": 25,
"next_page": "https://api.deliveree.com/public_api/{version}/...",
"previous_page": "https://api.deliveree.com/public_api/{version}/..."
},
"data": [
{
"id": 263979,
"customer_id": 5348,
"driver_id": 403,
"vehicle_type_id": 1,
"vehicle_type_name": "van",
"company_id": 569,
"time_type": "now",
"status": "delivery_in_progress",
"total_fees": 400,
"currency": "฿",
"tracking_url": "http://localhost:3000/SqCkEVNiUbfLFey97",
"job_order_number": "66666",
"eta_from_driver_to_pickup": null,
"distance_from_driver_to_pickup": null,
"created_at": "2021-07-01T18:37:16+07:00",
"pickup_time": null,
"completed_at": null,
"driver": null,
"vehicle": {
"vehicle_attributes": {
"plate_number": null
}
},
"locations": [
{
"id": 707398,
"name": "buu dien thanh pho ho chi minh",
"note": "Second floor, room 609",
"recipient_name": "Duke",
"recipient_phone": "0999999999",
},
{
"id": 707399,
"name": "buu dien thanh pho ho chi minh",
"note": "Second floor, room 609",
"recipient_name": "Duke",
"recipient_phone": "0999999999",
}
],
},
...
]
}
Delivery
A delivery is an object representing a delivery.
Name |
Type |
Description |
id |
integer |
ID of delivery. |
customer_id |
integer |
ID of customer. |
driver_id |
integer |
ID of driver. |
vehicle_type_id |
integer |
ID of vehicle type. |
vehicle_type_name |
string |
Name of vehicle type. |
company_id |
integer |
ID of company (if the delivery is from a Business). |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
status |
string |
Status of delivery. |
total_fees |
float |
Amount Fee. |
currency |
string |
Currency of Delivery (ex. Rp, Usd, etc). |
tracking_url |
string |
URL to view status of delivery. That URL can be opened in a browser to follow the driver real-time and see the ETA to locations. |
job_order_number |
string |
Order Number. |
created_at |
datetime |
Time of Creation of the delivery (ISO Time). |
eta_from_driver_to_pickup |
integer |
ETA in seconds from current driver location to pickup location. |
distance_from_driver_to_pickup |
float |
Distance between driver and pickup location (Unit: Kilometer). |
pickup_time |
string |
Timestamp when user confirm via SMS (ISOTime). |
completed_at |
string |
Timestamp when driver complete booking (ISOTime). |
driver |
object |
Driver Information. In case the booking is on process, this field will be null. |
vehicle |
object |
Vehicle Information, include “plate_number” as String. |
locations |
array |
List of locations details including id, name, note, recipient name, recipient phone. |
Get Vehicle Types
We return a list vehicle types of a specific area.
Request
$ curl -X GET /public_api/v10/vehicle_types \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
GET /public_api/v10/vehicle_types
Name |
Type |
Description |
Authorization * |
string |
API Key |
Parameters
No need parameters.
Responses
Name |
Type |
Description |
ID |
integer |
ID of vehicle type. |
name |
string |
Name of vehicle type. |
cargo_length |
float |
Cargo length of vehicle type (cm). |
cargo_height |
float |
Cargo height of vehicle type (cm). |
cargo_width |
float |
Cargo width of vehicle type (cm). |
cargo_weight |
float |
Cargo weight of vehicle type (kg). |
cargo_cubic_meter |
float |
Cargo cubic meter of vehicle type (m3). |
minimum_pickup_time_schedule |
string |
Minimum pickup time with type schedule (ISO Time). |
minimum_pickup_time_fullday |
string |
Minimum pickup time with type full-day (ISO Time). |
minimum_pickup_time_fpr |
string |
Minimum pickup time with type fpr (ISO Time). |
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"id": 27,
"name": "Closed Van",
"cargo_length": 200,
"cargo_height": 175,
"cargo_width": 180,
"cargo_weight": 1700,
"cargo_cubic_meter": 7,
"minimum_pickup_time_now": "2021-09-24T10:44:06.664+07:00",
"minimum_pickup_time_schedule": "2021-09-24T11:44:06.664+07:00",
"minimum_pickup_time_fullday": "2021-09-24T11:44:06.664+07:00",
"minimum_pickup_time_fpr": "2021-09-25T09:44:06.664+07:00"
},
{
"id": 82,
"name": "L300",
"cargo_length": 210,
"cargo_height": 125,
"cargo_width": 125,
"cargo_weight": 1000,
"cargo_cubic_meter": 3.3,
"minimum_pickup_time_schedule": "2021-09-24T10:44:06.684+07:00",
"minimum_pickup_time_fullday": "2021-09-24T10:44:06.684+07:00",
"minimum_pickup_time_fpr": "2021-09-25T09:44:06.684+07:00"
}
]
}
We return a list of extra services of a specific vehicle type.
Request
$ curl -X GET /public_api/v10/vehicle_types/21/extra_services?time_type=now \
--header "Content-Type:application/json" \
--header "Authorization:YOUR_API_KEY" \
GET /public_api/v10/vehicle_types/{vehicle_type_id}/extra_services
Name |
Type |
Description |
Authorization * |
string |
API Key |
Parameters
Name |
Type |
Description |
dropoff_count |
integer |
Number of drop off. |
time_type |
string |
Time type of delivery (“now” or “schedule”). |
Responses
Name |
Type |
Description |
id |
integer |
Id of extra service. |
amount |
integer |
Amount of extra service. |
unit_price |
float |
Unit price of extra service. |
name |
string |
Name of extra service. |
position |
integer |
Position of extra service. |
pricings |
array |
List of Extra Service Pricing (This is used only for goods insurance). |
pricing_method |
string |
Pricing method of extra service(“normal” or “by_options”).- “by_options”: pricing method for goods insurance.
- “normal”: pricing method for normal extra services.
|
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"id": 140,
"amount": 1,
"unit_price": 50000,
"name": "Extra Helper",
"position": 1,
"pricing_method": "normal"
},
{
"id": 416,
"amount": 0,
"unit_price": 0.0,
"name": "Goods Insurance",
"position": 2,
"pricings": [
{
"id": 2146,
"fees": 0.0,
"position": 1,
"level_price": 1000000000.0,
"display_level_price": "Rp 1 billion",
"display_fees": "Free",
"display_fees_without_currency": "Free"
}
],
"pricing_method": "by_options"
}
]
}
Name |
Type |
Description |
id |
integer |
Id of goods insurance pricing. |
fees |
float |
Fee of goods insurance pricing. |
position |
integer |
Position of goods insurance pricing. |
level_price |
float |
Level price of goods insurance pricing. |
display_level_price |
string |
Display text for level price of goods insurance pricing. |
display_fees |
string |
Display text for fees of goods insurance pricing. |
display_fees_without_currency |
string |
Display text for fees without currency of goods insurance pricing. |
Get User Profile
Get current user profile.
Request
$ curl -X POST /public_api/v10/customers/user_profile \
--header "Content-Type:application/json" \
--header "Authorization: YOUR_API_KEY" \
--header "Accept-Language:en"
POST /public_api/v10/customers/user_profile
Name |
Type |
Description |
Authorization * |
string |
API Key |
Accept-Language |
string |
User language |
Responses
Name |
Type |
Description |
name |
string |
Name of company or customer. |
user_type |
string |
Check bp_account and non_bp_account. |
country_code |
string |
User country code. |
time_zone |
string |
User time zone. |
currency |
string |
Currency (ex. Rp, Usd, etc). |
fleet_price_url |
string |
Fleet price URL. |
allow_post_payment |
string |
Allow post payment. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"name": "Company Name",
"user_type": "bp_account",
"country_code": "ID",
"time_zone": "Bangkok",
"currency": "Rp",
"fleet_price_url": "https://www.deliveree.com/id/en/whole-vehicle-fleet-prices/",
"allow_post_payment": true
}