Skip to main content

Quickstart

Book your first delivery on the Dash Express fleet in five steps. Estimated time: 5 minutes.

You'll need a client_key and client_secret issued in the Dash Next Portal. Sandbox and Production each have their own credential pair.

1

Get your client credentials

In the Dash Next Portal, switch to Sandbox mode and open the API Keys for Host to Host card. Copy your Client Key, Client Secret, and BaseURL from there — these are the values every request below uses.

On Production, find the same values under Developers → API Key. Both Sandbox and Production hit the same BaseURL; the environment is decided by which credential pair you mint the token with — Sandbox keys give you a Sandbox token, Production keys a Production one.

2

Exchange them for an access token

Post your credentials to the token endpoint. The returned token is what every other request uses as a Bearer.

curl https://api.dashelectric.co/v1/auth/providers/token \
-H "Content-Type: application/json" \
-d '{
"client_key": "'"$DASH_CLIENT_KEY"'",
"client_secret": "'"$DASH_CLIENT_SECRET"'"
}'

Response — 200 OK

{
"token": "random_and_unique_token"
}

The remaining steps all send Authorization: Bearer $DASH_TOKEN. See Authentication for the Bearer header details.

3

Get a delivery quote

Send pickup + dropoff coordinates and the package(s); you get back available tiers, fares (IDR), distance, and ETAs.

curl https://api.dashelectric.co/v1/deliveries/quotes \
-H "Authorization: Bearer $DASH_TOKEN" \
-H "Content-Type: application/json" \
-H "x-client-time-zone: Asia/Jakarta" \
-d '{
"serviceCategory": "EXPRESS",
"serviceType": "INSTANT",
"packages": [
{ "name": "Martabak Manis", "quantity": 1, "weight": 0.8 }
],
"origin": {
"address": "Manis Cafe & Eatery",
"coordinates": { "latitude": -6.993894, "longitude": 110.457499 }
},
"destination": {
"address": "ALEX AC MOBIL SEMARANG",
"coordinates": { "latitude": -6.998216, "longitude": 110.456340 }
}
}'

Response — 200 OK

{
"quotes": [
{
"service": { "category": "EXPRESS", "type": "INSTANT", "name": "Dash Instant Delivery" },
"currency": { "code": "IDR", "symbol": "Rp" },
"amount": 9000,
"estimatedTimeline": {
"pickup": "2024-10-03T08:49:57+07:00",
"dropoff": "2024-10-03T08:50:57+07:00"
},
"distance": 499
}
],
"packages": [
{ "name": "Martabak Manis", "quantity": 1, "weight": 0.8 }
],
"origin": {
"address": "Manis Cafe & Eatery",
"coordinates": { "latitude": -6.993894, "longitude": 110.457499 }
},
"destination": {
"address": "ALEX AC MOBIL SEMARANG",
"coordinates": { "latitude": -6.998216, "longitude": 110.456340 }
},
"locationAvailability": true,
"driverAvailability": true,
"availability": true
}

→ Full request/response fields: Get delivery quote.

4

Create the delivery

Pick a serviceType from the quote and submit with your providerOrderID (your AWB), sender, and recipient. You get a deliveryID in status ALLOCATING.

curl https://api.dashelectric.co/express/v1/deliveries \
-H "Authorization: Bearer $DASH_TOKEN" \
-H "Content-Type: application/json" \
-H "x-client-time-zone: Asia/Jakarta" \
-d '{
"providerOrderID": "AWB-1042",
"serviceType": "INSTANT",
"packages": [
{ "name": "Martabak Manis", "quantity": 1, "weight": 0.8 }
],
"sender": { "firstName": "Arifatul", "phone": "081234548899" },
"recipient": { "firstName": "Tony", "phone": "082186789900" },
"origin": {
"address": "Manis Cafe & Eatery",
"coordinates": { "latitude": -6.993894, "longitude": 110.457499 }
},
"destination": {
"address": "ALEX AC MOBIL SEMARANG",
"coordinates": { "latitude": -6.998216, "longitude": 110.456340 }
}
}'

Response — 201 Created

{
"deliveryID": "DE-1727921269869",
"providerOrderID": "AWB-1042",
"providerOutletID": "Outlet Tebet",
"paymentMethod": "CASHLESS",
"status": "ALLOCATING",
"courier": null,
"sender": { "firstName": "Arifatul", "phone": "081234548899" },
"recipient": { "firstName": "Tony", "phone": "082186789900" },
"quote": {
"service": { "category": "EXPRESS", "type": "INSTANT", "name": "Dash Instant Delivery" },
"currency": { "code": "IDR", "symbol": "Rp" },
"amount": 9000,
"estimatedTimeline": {
"pickup": null,
"dropoff": "2024-10-03T09:22:26+07:00"
},
"distance": 509
}
}

→ COD, instructions, scheduling, and the full response: Create delivery.

5

Track via webhook

Register a webhook URL in the Portal. Dash POSTs a JSON payload every time status changes — through the lifecycle states up to COMPLETED. Don't poll; let the webhook drive your state.

→ Payload shape, the auth header model, and retry policy: Webhooks.

Next steps