Semua error mengembalikan body JSON dengan satu field error yang menjelaskan apa yang salah. Kode status mengikuti pembedaan client-vs-server: 4xx berarti request salah bentuk dan harus diperbaiki sebelum dicoba ulang; 5xx berarti kami yang gagal dan request yang sama akan dilayani begitu kami pulih.
| Kode | Nama | Arti |
|---|---|---|
| 400 | Bad Request | Error validasi — parameter hilang, nilai salah bentuk, atau ID service tidak valid. Pesan error memberi tahu Anda persis apa yang salah; panggilan aman untuk dicoba ulang setelah diperbaiki. |
| 403 | Forbidden | Akun ditangguhkan. Hubungi support — percobaan ulang akan terus gagal sampai penangguhan dicabut. |
| 429 | Too Many Requests | Rate limit terlampaui. Lihat header X-RateLimit-DeniedBy untuk mengetahui lapisan mana (ip / key / tier). Tunggu hingga X-RateLimit-Reset sebelum mencoba ulang. |
| 500 | Internal Server Error | Kegagalan tak terduga di sisi server. Error dengan detail sensitif disanitasi menjadi pesan generik dalam body response — stack lengkapnya direkam di instans Sentry kami untuk diagnosis. Percobaan ulang dengan idempotency key yang sama aman (akan mengembalikan response asli jika operasi berhasil). |
{
"error": "Missing required parameter: service"
}Action membutuhkan parameter yang tidak disertakan. Tambahkan ke body request dan coba ulang.
{
"error": "Invalid API key"
}Key salah, key dicabut, atau key hilang. Periksa apakah nilainya cocok dengan yang ditampilkan di /dashboard/api. Error-nya identik untuk key hilang dan tidak valid guna mencegah serangan enumerasi.
{
"error": "Insufficient balance"
}Saldo akun Anda di bawah total charge order. Isi ulang melalui /dashboard/wallet, atau gunakan kupon.
{
"error": "Service not found"
}ID service tidak ada atau telah dinonaktifkan. Ambil ulang katalog service dengan action=services dan pilih ID yang berlaku.
{
"error": "Rate limit exceeded"
}Salah satu dari tiga rate limit habis. Lihat X-RateLimit-DeniedBy dan tunggu hingga X-RateLimit-Reset.
Action penempatan order membutuhkan request_id (idempotency key) dari pemanggil pada setiap panggilan. Percobaan ulang dengan request_id yang sama selalu mengembalikan response yang sama — order asli, bukan duplikat. Ini membuat error 5xx aman untuk dicoba ulang tanpa pernah membuat order yang sama dua kali. Untuk action lain (status, balance, refill, cancel), percobaan ulang secara inheren aman — mereka tidak mengubah state atau mengubahnya secara idempoten.