Errors
The Dash API uses conventional HTTP status codes and returns Indonesian-language error messages in a stable envelope you can switch on.
Error envelope
Most endpoints return errors in this shape — a status string or numeric, a top-level error (or message) describing what went wrong, and an errors[] array of per-field validation issues. On the token endpoint errors[] is always present: when there is no per-field detail it carries a single entry echoing message.
- Single error (most endpoints)
- Field validation (auth endpoint)
{
"status": "Failed",
"error": "Lokasi pengantaran terlalu jauh (12.4 km) atau berat paket melebihi batas (30 kg). Sesuaikan jarak pengantaran atau hubungi admin Dash Electric."
}
{
"status": 400,
"message": "Terjadi kesalahan pada isian",
"errors": [
{
"field": "client_key",
"message": "Field \"client_key\" tidak boleh kosong"
}
]
}
HTTP status codes
200 OK
Successful request.
400 Bad Request
Payload malformed, unknown field, invalid value, or a business rule such as schedule window or pricing coverage failed.
401 Unauthorized
Token missing, invalid, or expired.
403 Forbidden
Authenticated, but not allowed to act on this resource (e.g. cancelling a delivery owned by another provider).
404 Not Found
Resource doesn't exist (e.g. unknown deliveryID).
422 Unprocessable Entity
State transition not allowed — delivery already picked up or in a final state.
4xx / 5xx passthrough
Errors from the pricing (core) service are passed through with their original status code and message.
Common error messages
The same Indonesian copy is used across endpoints. Switch on the HTTP status and the literal string.
400Butuh request body.
Empty request body.
400Field tidak dikenali: [<field>]
Request body contains an unrecognised key. The key is interpolated into the message.
400CASH_ADVANCE_AMOUNT_REQUIRED
Cash advance amount required but missing on Create Delivery.
400Ups! Sepertinya waktu pengantaran yang Anda pilih sudah lewat. Yuk, pilih waktu lain yang masih tersedia.
Scheduled time is in the past.
400Pengantaran hanya dapat dijadwalkan dalam rentang hari ini hingga maksimal N hari ke depan
Scheduled time is outside the allowed booking window.
400Layanan tidak tersedia di area ini. Silakan pilih layanan lain.
Origin area not covered for the requested schedule, or quote re-check at booking time unavailable.
400Layanan tidak tersedia pada jam ini
No driver shift covers the requested schedule.
400Lokasi pengantaran terlalu jauh (<km> km) atau berat paket melebihi batas (<kg> kg). Sesuaikan jarak pengantaran atau hubungi admin Dash Electric.
No pricing tier covers the distance or weight. The actual distance / weight are interpolated into the message.
400Koordinat origin perlu ditambahkan
Origin coordinates are missing (Get Quote).
400Koordinat destinasi perlu ditambahkan
Destination coordinates are missing (Get Quote).
400Alamat destinasi perlu ditambahkan
Destination address missing, geocode fallback failed (Get Quote).
404Pengantaran tidak ditemukan.
deliveryID doesn't exist for your workspace.
403Akses tidak diperbolehkan.
Caller is not the owning provider of the delivery (Cancel Delivery).
422Delivery ID sudah selesai diantarkan. Silakan input ulang sebelum upload, hanya bisa untuk delivery yang aktif saja.
Cancel attempted on a delivery already in a final state.
400QRIS deliveries can only be canceled up to PENDING_PICKUP
QRIS-paid delivery is past its cancellable status.
422Pengantaran sudah diambil.
Cancel attempt after the package has already been picked up (PENDING_DELIVERY / IN_DELIVERY).
400Kurir belum ditugaskan untuk antaran ini.
Tried to notify the driver before one was assigned.
400Notifikasi tidak dapat dikirim karena status pengantaran tidak sesuai.
additional-notifications called in a status other than PENDING_PICKUP / PICKING_UP.
401Tidak punya akses
Token invalid or unauthorized for this resource.