Lewati ke konten

Kode Kesalahan

Saat gagal, periksa kode status HTTP dan field message.

Error bisnis selalu mengembalikan code yang dapat dibaca mesin agar bisa ditangani secara terprogram. Parameter tidak valid (validasi) dan rute tidak dikenal mengembalikan format standar Laravel: { “message”: ”…”, “errors”: { … } }. Validasi input sebelum mengirim.

{
"code": "insufficient_balance",
"message": "Insufficient balance. Please top up and try again."
}
codeHTTPDeskripsi
unauthorized401Kunci API hilang, tidak valid, atau tidak aktif.
account_banned403Akun ditangguhkan. Hubungi dukungan.
invalid_realtime_request400Permintaan realtime tidak valid (mis. nomor telepon tanpa prefiks internasional + saat country dikosongkan).
idempotency_key_required400Permintaan realtime wajib menyertakan header Idempotency-Key.
invalid_idempotency_key422Idempotency-Key tidak valid: 1-128 karakter huruf, angka, dan . _ : -
idempotency_conflict409Idempotency-Key yang sama digunakan untuk isi permintaan yang berbeda.
request_in_progress409Permintaan realtime identik masih diproses. Coba lagi sebentar lagi (Retry-After: 1).
empty_input422Berkas yang diunggah tidak berisi baris yang dapat dipakai.
product_not_found422Slug produk yang dikirim tidak ada atau tidak aktif.
product_mode_not_supported422Endpoint ini tidak menerima mode produk ini (produk realtime tidak untuk endpoint massal).
invalid_country422Produk ini tidak mendukung negara yang dikirim.
too_few_numbers422Jumlah pengiriman di bawah minimum produk.
too_many_numbers422Jumlah pengiriman melebihi maksimum platform.
insufficient_balance402Saldo tidak cukup. Isi ulang lalu coba lagi.
realtime_disabled403Deteksi realtime belum diaktifkan untuk akun ini.
realtime_rate_limited429Batas laju realtime terlampaui. Hormati retry_after.
product_pricing_unavailable503Harga produk ini belum dikonfigurasi. Hubungi dukungan.
detection_capacity_unavailable503Tidak ada kapasitas deteksi saat ini. Coba lagi nanti.
realtime_route_unavailable503Tidak ada rute realtime yang tersedia. Coba lagi nanti.
realtime_fact_cache_unavailable503Dependensi realtime sementara tidak tersedia. Coba lagi nanti.
realtime_rate_limiter_unavailable503Rate limiter sementara tidak tersedia. Coba lagi nanti.
internal_error500Kesalahan server tak terduga. Aman untuk mencoba ulang dengan Idempotency-Key yang sama.

Tidak semua kegagalan punya code. Endpoint tugas melaporkan empat kondisi hanya lewat status HTTP dan message, karena kegagalan itu muncul sebelum jalur error bisnis tercapai:

HTTPKondisiBody
404task_id tidak ada, atau milik akun lainhanya message
404GET /v1/tasks/{token}/download — file hasil tidak tersedia, kedaluwarsa, atau tidak lagi dapat diunduhhanya message
422GET /v1/tasks/{token}/result — hasil belum siap: tugas belum selesai, file belum dibuat, atau sudah kedaluwarsahanya message
422Parameter permintaan gagal validasi{ "message": …, "errors": { … } }

Untuk kasus ini, bercabanglah berdasarkan status HTTP. message ditujukan untuk log dan untuk orang yang membaca insiden, bukan untuk alur kontrol.

Respons yang tepat terhadap kegagalan bergantung pada apakah mengulang permintaan dapat menghasilkan jawaban yang berbeda.

Percobaan ulang tanpa perubahan akan mengulangi kegagalan yang sama.

unauthorized, account_banned, invalid_realtime_request, idempotency_key_required, invalid_idempotency_key, idempotency_conflict, empty_input, product_not_found, product_mode_not_supported, invalid_country, too_few_numbers, too_many_numbers, insufficient_balance, realtime_disabled, product_pricing_unavailable

Bersifat sementara — permintaan yang sama semestinya berhasil nanti.

realtime_rate_limited, request_in_progress, detection_capacity_unavailable, realtime_route_unavailable, realtime_fact_cache_unavailable, realtime_rate_limiter_unavailable

Permintaan mungkin sudah diterapkan atau belum. Coba ulang dengan kunci yang sama.

internal_error