Errors
Format: {"success":false,"request_id":"…","error":{"code":"…","message":"…"}}
| Code | HTTP | Arti | Aksi developer |
|---|---|---|---|
VALIDATION_ERROR | 400 | Payload tidak valid | Perbaiki field sesuai detail |
UNAUTHORIZED | 401 | API key salah/revoked/expired | Cek key & header Bearer |
FORBIDDEN | 403 | Scope kurang / rate limit / bukan admin | Cek scopes & tunggu window |
RATE_LIMITED | 429 | Terlalu banyak request | Backoff, cek batas 600/menit |
QUOTE_NOT_FOUND | 404 | Quote tidak ada / milik org lain | Cek quote_id |
QUOTE_EXPIRED | 410 | Quote > 15 menit | Buat quote baru dari /rates |
INSUFFICIENT_BALANCE | 422 | Saldo wallet kurang | Top up dulu |
PAYMENT_REQUIRED | 409 | Shipment tidak dalam status menunggu pembayaran | Cek status shipment |
SHIPMENT_NOT_FOUND | 404 | Shipment tidak ada / bukan milik org | Cek shipment_id |
SHIPMENT_CANNOT_CANCEL | 409 | Status tidak bisa dibatalkan | — |
BOOKING_FAILED | — | Booking ekspedisi gagal (retry otomatis) | Pantau status / hubungi support |
SERVICE_UNAVAILABLE | 503 | Kurir/gateway tidak tersedia | Coba kurir lain |
IDEMPOTENCY_CONFLICT | 409 | Key sama, payload beda / sedang diproses | Gunakan key baru untuk payload berbeda |
INTERNAL_ERROR | 500 | Kesalahan server | Retry dengan backoff / hubungi support |
Error kurir mentah tidak pernah diekspos — selalu dipetakan ke kode di atas. request_id bisa disertakan saat kontak support.