Skip to main content

Format Respons Error

Semua error API mengikuti format yang konsisten:
{
  "status": 0,
  "rc": 400,
  "error_msg": "Deskripsi pesan error"
}
FieldTipeDeskripsi
statusintegerSelalu 0 untuk error
rcintegerKode respons (status HTTP)
error_msgstringPesan error yang dapat dibaca manusia
Selalu periksa field status. Nilai 0 menunjukkan error terjadi.

Kode Status HTTP

KodeNamaDeskripsi
200OKPermintaan berhasil
400Bad RequestParameter atau data tidak valid
401UnauthorizedAutentikasi tidak valid atau tidak ada
403ForbiddenIzin tidak cukup
404Not FoundResource tidak ditemukan
429Too Many RequestsBatas rate terlampaui
500Internal Server ErrorError 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)