> ## Documentation Index
> Fetch the complete documentation index at: https://docs.csku.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Kode Error

> Memahami respons error API

## Format Respons Error

Semua error API mengikuti format yang konsisten:

```json theme={null}
{
  "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 |

<Callout type="error">
  Selalu periksa field `status`. Nilai `0` menunjukkan error terjadi.
</Callout>

## 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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "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:**

```json theme={null}
{
  "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

```javascript theme={null}
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

```javascript theme={null}
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:

<CardGroup cols={2}>
  <Card title="Dukungan Email" icon="envelope" href="mailto:support@csku.ai">
    [support@csku.ai](mailto:support@csku.ai)
  </Card>

  <Card title="Dokumentasi Lengkap" icon="book-open-cover" href="https://docs.csku.ai">
    docs.csku.ai
  </Card>
</CardGroup>

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)
