# Format respons & error

> Bentuk respons sukses dan error Public API, dan cara memeriksanya dengan benar.


## Cek `status`, bukan kode HTTP

Public API CSKU membalas **HTTP 200** untuk sukses maupun sebagian besar error. Penentunya adalah isi body.

| Kondisi | Body |
|---|---|
| Sukses dengan data | `{"status": 1, "rc": 200, "message": "…", "data": {…}, "ts": 1760000000}` |
| Sukses aksi | Objek hasil, misalnya `{"success": true, "conversation_id": "CO_…"}` |
| Error | `{"status": 0, "rc": 500, "error_msg": "pesan error"}` |

Rekomendasi: anggap request **berhasil** jika body punya `"status": 1` atau `"success": true`. Selain itu, baca `error_msg`.

```js
const body = await res.json()
const ok = body.status === 1 || body.success === true
if (!ok) throw new Error(body.error_msg || 'Request CSKU gagal')
```

> **Catatan**
>
> Endpoint [Proxy WhatsApp API](https://docs.csku.ai/waba/proxy) berbeda: endpoint itu memakai kode HTTP sungguhan (400, 401, 403, 404, 500) dan format error sendiri.

## Kode HTTP selain 200

| HTTP | Arti |
|---|---|
| 404 | Path tidak ada. Body: `{"status":0,"rc":404,"error_msg":"Page Not Found!"}` |
| 200 + `rc: 500` | Error validasi, autentikasi, atau data tidak ditemukan |

## Waktu

Field waktu seperti `sent_at` memakai format `YYYY-MM-DD HH:MM:SS` dalam zona **WIB (Asia/Jakarta, UTC+7)** tanpa penanda zona. Field `ts` dan `timestamp` adalah Unix detik.

## Daftar error umum

| `error_msg` | Endpoint | Arti |
|---|---|---|
| `conversation id is required` / `conversation_id is required` | semua | `conversation_id` kosong |
| `conversation not found` | semua | Percakapan tidak ada di bisnis Anda |
| `text or media is required` | kirim pesan | Isi `text` atau `media` |
| `media type not supported` | kirim pesan | `media.type` bukan `image`, `video`, `audio`, atau `document` |
| `media mime type not supported` | kirim pesan | MIME tidak didukung, lihat [Kirim pesan](https://docs.csku.ai/api/kirim-pesan) |
| `reply_to_message_id not found` | kirim pesan | `message_id` yang dibalas tidak ditemukan |
| `note is required` | catatan | `note` kosong |
| `secret not valid ` | semua | Lihat [Autentikasi](https://docs.csku.ai/api/autentikasi) |
| `Paket user tidak memiliki fitur API.` | kirim & ambil pesan | Paket tanpa fitur API |
