# Kirim pesan

> Kirim teks atau media ke pelanggan di percakapan yang sudah ada.

`POST https://api.csku.ai/v1/message`

Kirim balasan ke percakapan yang sudah berjalan, di channel apa pun (WhatsApp, Telegram, Instagram, webchat, dan lainnya). CSKU meneruskan pesan ke channel percakapan tersebut.

> **Catatan: Butuh conversation_id**
>
> Endpoint ini hanya membalas percakapan yang sudah ada. `conversation_id` didapat dari [webhook](https://docs.csku.ai/webhook/event) `channel.message_in` atau dari URL chat di dashboard.

## Request

```http
POST /v1/message
Business: BIZ_ID_ANDA
Secret: SECRET_ANDA
Content-Type: application/json
```

| Field | Tipe | Wajib | Keterangan |
|---|---|---|---|
| `conversation_id` | string | ya | ID percakapan, contoh `CO_01J9…` |
| `text` | string | salah satu | Isi pesan teks |
| `media` | object | salah satu | Lampiran. Jika `media` diisi, `text` diabaikan |
| `reply_to_message_id` | string | tidak | `message_id` pesan yang dibalas |

Objek `media`:

| Field | Tipe | Keterangan |
|---|---|---|
| `url` | string | URL publik file (https) |
| `type` | string | `image`, `video`, `audio`, atau `document` |
| `mime_type` | string | `image/jpeg`, `image/png`, `video/mp4`, `audio/mp3`, atau `text/plain` |
| `name` | string | Nama file (opsional) |
| `caption` | string | Teks di bawah media (opsional) |
| `thumbnail` | string | URL thumbnail (opsional) |

## Contoh: teks

```bash
curl -X POST https://api.csku.ai/v1/message \
  -H "Business: BIZ_ID_ANDA" \
  -H "Secret: SECRET_ANDA" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation_id": "CO_01J9Z3K8V2",
    "text": "Pesanan #INV-2291 sudah dikirim via JNE ya kak."
  }'
```

## Contoh: gambar

```json
{
  "conversation_id": "CO_01J9Z3K8V2",
  "media": {
    "url": "https://cdn.toko-anda.com/resi/INV-2291.jpg",
    "type": "image",
    "mime_type": "image/jpeg",
    "caption": "Foto resi pengiriman"
  }
}
```

## Respons

```json
{ "conversation_id": "CO_01J9Z3K8V2", "success": true }
```

`success: true` berarti pesan diterima CSKU dan diteruskan ke channel. Status terkirim ke pelanggan bisa dicek lewat [Ambil pesan](https://docs.csku.ai/api/ambil-pesan).

## Perilaku yang perlu diketahui

- Pesan tampil di inbox dashboard sebagai balasan agent dengan nama bisnis Anda.
- Mengirim pesan lewat API **tidak** memicu webhook `agent.message_out`.
- Jika `text` berisi kalimat sekaligus link, CSKU memeriksa setiap link. Link gambar dikirim sebagai pesan gambar terpisah, dan link yang tidak bisa diakses dihapus dari teks. Teks yang isinya hanya satu link dikirim apa adanya.
- Aturan channel tetap berlaku. Misalnya di WhatsApp API, pesan bebas hanya bisa dikirim dalam 24 jam sejak pesan terakhir pelanggan. Di luar itu, kirim template lewat [Proxy WhatsApp API](https://docs.csku.ai/waba/proxy).
