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 optional errors[] array of per-field validation issues.
- Single error (most endpoints)
- Field validation (auth endpoint)
{
"status": "Failed",
"error": "Lokasi pengantaran terlalu jauh."
}
{
"status": 400,
"message": "Terjadi kesalahan pada isian",
"errors": [
{
"field": "client_key",
"message": "Bidang client_key tidak boleh kosong"
}
]
}
HTTP status codes
200 OK
Successful request.
400 Bad Request
Payload malformed, unknown field, or invalid value (e.g. unsupported paymentMethod).
401 Unauthorized
Token missing, invalid, or expired.
404 Not Found
Resource doesn't exist, or a referenced service type is not enabled for your workspace.
409 Conflict
State transition not allowed (e.g. cancelling a delivery that's already PICKING_UP).
422 Unprocessable Entity
Business rule failed — most commonly distance SLA exceeded for the chosen tier.
Common error messages
The same Indonesian copy is used across endpoints. Switch on the HTTP status and the literal string.
422Lokasi pengantaran terlalu jauh.
Dropoff is beyond the service zone for the chosen tier.
404Data tipe layanan tidak ditemukan
serviceType is unknown.
404Tipe layanan tidak disupport untuk project Anda. Hubungi admin Dash Electric.
serviceType isn't enabled for your provider workspace.
400Field tidak dikenali: [KEY_NAME]
Request body contains an unrecognised key. The key is interpolated into the message.
400`paymentMethod` harus berisi CASH atau CASHLESS
Invalid paymentMethod value.
400Layanan gagal karena di luar waktu atau area operasional.
Pickup time falls outside operational hours, or the area isn't covered.
404Pengantaran tidak ditemukan
deliveryID doesn't exist for your workspace.
409Perubahan status antaran tidak dapat dilakukan.
Delivery is in a terminal state (COMPLETED, FAILED, CANCELLED) and can't be modified.
409Pengantaran 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.