Semua error API mengikuti format yang konsisten:
{
"status": 0,
"rc": 400,
"error_msg": "Deskripsi pesan error"
}
| Field | Tipe | Deskripsi |
|---|
| status | integer | Selalu 0 untuk error |
| rc | integer | Kode respons (status HTTP) |
| error_msg | string | Pesan error yang dapat dibaca manusia |
Selalu periksa field status. Nilai 0 menunjukkan error terjadi.
Kode Status HTTP
| Kode | Nama | Deskripsi |
|---|
| 200 | OK | Permintaan berhasil |
| 400 | Bad Request | Parameter atau data tidak valid |
| 401 | Unauthorized | Autentikasi tidak valid atau tidak ada |
| 403 | Forbidden | Izin tidak cukup |
| 404 | Not Found | Resource tidak ditemukan |
| 429 | Too Many Requests | Batas rate terlampaui |
| 500 | Internal Server Error | Error sisi server |
Kode Error Umum
400 Bad Request
Parameter atau data tidak valid dalam permintaan.
Contoh:
{
"status": 0,
"rc": 400,
"error_msg": "Data tidak valid. Mohon periksa kembali parameter dan header"
}
Penyebab Umum:
- Field wajib tidak ada
- Format data tidak valid
- Tipe media tidak valid
- JSON tidak terformat dengan benar
Solusi:
- Periksa semua field wajib ada
- Validasi tipe data dan format
- Pastikan JSON terformat dengan benar
- Tinjau dokumentasi API untuk nama field yang benar
401 Unauthorized
Kredensial autentikasi tidak valid atau tidak ada.
Contoh:
{
"status": 0,
"rc": 401,
"error_msg": "Data tidak valid. Mohon periksa kembali parameter dan header"
}
Penyebab Umum:
- Header Business/Secret tidak ada
- Business ID atau Secret Key tidak valid
- Encoding Base64 salah
- Kredensial kedaluwarsa
Solusi:
- Verifikasi Business ID dan Secret Key benar
- Periksa header sudah diatur dengan benar
- Pastikan encoding Base64 benar
- Hubungi dukungan jika kredensial tidak valid
403 Forbidden
Izin tidak cukup untuk mengakses resource.
Contoh:
{
"status": 0,
"rc": 403,
"error_msg": "Akses ditolak"
}
Penyebab Umum:
- Hak akses tidak cukup
- Akun ditangguhkan atau dinonaktifkan
- Akses resource dibatasi
Solusi:
- Verifikasi status akun
- Periksa izin untuk resource yang diminta
- Hubungi dukungan jika Anda yakin ini adalah kesalahan
404 Not Found
Resource yang diminta tidak ada.
Contoh:
{
"status": 0,
"rc": 404,
"error_msg": "Resource tidak ditemukan"
}
Penyebab Umum:
- conversation_id tidak valid
- Resource telah dihapus
- Path URL salah
Solusi:
- Verifikasi identifier resource benar
- Periksa apakah resource masih ada
- Tinjau URL untuk kesalahan ketik
429 Too Many Requests
Batas rate terlampaui.
Contoh:
{
"status": 0,
"rc": 429,
"error_msg": "Terlalu banyak permintaan. Silakan coba lagi nanti."
}
Penyebab Umum:
- Melebihi batas rate (100 req/menit untuk terautentikasi, 10 req/menit untuk tidak terautentikasi)
- Terlalu banyak permintaan bersamaan
- Aktivitas bot
Solusi:
- Implementasikan exponential backoff
- Kurangi frekuensi permintaan
- Gunakan caching untuk menghindari permintaan berlebihan
- Hubungi dukungan untuk batas yang lebih tinggi
500 Internal Server Error
Error sisi server terjadi.
Contoh:
{
"status": 0,
"rc": 500,
"error_msg": "Internal server error"
}
Penyebab Umum:
- Masalah server sementara
- Error database
- Layanan tidak tersedia
Solusi:
- Implementasikan logika retry dengan exponential backoff
- Tunggu sebentar dan coba lagi
- Periksa apakah masalah meluas (hubungi dukungan jika berlanjut)
Praktik Terbaik Penanganan Error
1. Selalu Periksa Field Status
const response = await fetch(...);
const data = await response.json();
if (data.status === 0) {
console.error('Error:', data.error_msg);
// Tangani error berdasarkan rc
switch(data.rc) {
case 401:
// Unauthorized - refresh kredensial
break;
case 400:
// Bad request - validasi input
break;
case 429:
// Rate limited - implementasi backoff
break;
default:
// Error lainnya
}
} else {
// Sukses - proses data
}
2. Implementasikan Logika Retry untuk Error 5xx
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
const data = await response.json();
if (data.status === 1) {
return data;
}
// Retry hanya untuk error server (5xx)
if (data.rc >= 500 && i < maxRetries - 1) {
const delay = Math.pow(2, i) * 1000; // Exponential backoff
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
return data;
}
}
Mendapatkan Bantuan
Jika Anda menemukan error yang tidak dapat Anda selesaikan:
Saat menghubungi dukungan, mohon sertakan:
- Kode error (rc)
- Pesan error lengkap
- Detail permintaan (endpoint, header, body)
- Timestamp error
- Business ID Anda (dapat menghilangkan Secret Key)