Chatera Docs
API & Integrasi

Kirim Pesan WhatsApp

Kirim pesan teks, media, lokasi, audio, dan video lewat API Chatera.

POST /v1/whatsapp/messages

Scope yang dibutuhkan: whatsapp:send

Endpoint ini dipakai untuk mengirim semua jenis pesan WhatsApp: teks, gambar, dokumen, audio, video, lokasi, template, dan pesan interaktif.

Aturan jendela 24 jam

Pesan teks, media, lokasi, dan interaktif hanya bisa dikirim jika kontak telah mengirim pesan ke kamu dalam 24 jam terakhir. Untuk komunikasi proaktif di luar jendela ini, gunakan template WhatsApp yang sudah disetujui Meta.

Body request — field umum

Semua tipe pesan menggunakan field umum berikut:

FieldWajibTipeKeterangan
tostringNomor tujuan (E.164)
typestringtext | image | audio | video | document | location | template | interactive
channel_idstring (UUID)ID saluran WhatsApp pengirim. Wajib hanya jika kamu punya lebih dari satu saluran aktif.

Tipe pesan

Teks

{
  "to": "628123456789",
  "type": "text",
  "text": {
    "body": "Halo, ini pesan dari API Chatera!",
    "preview_url": false
  }
}
FieldWajibKeterangan
text.bodyIsi pesan, maks 4096 karakter
text.preview_urltrue untuk preview link otomatis (default false)

Gambar

{
  "to": "628123456789",
  "type": "image",
  "image": {
    "link": "https://contoh.com/produk.jpg",
    "caption": "Produk baru tersedia!"
  }
}
FieldWajibKeterangan
image.linkURL HTTPS publik ke gambar (JPEG/PNG)
image.captionCaption di bawah gambar

Audio

{
  "to": "628123456789",
  "type": "audio",
  "audio": {
    "link": "https://contoh.com/voicenote.ogg"
  }
}

Audio tidak mendukung caption.

Video

{
  "to": "628123456789",
  "type": "video",
  "video": {
    "link": "https://contoh.com/promo.mp4",
    "caption": "Lihat video promo terbaru kami!"
  }
}

Dokumen

{
  "to": "628123456789",
  "type": "document",
  "document": {
    "link": "https://contoh.com/invoice.pdf",
    "caption": "Invoice #ORD-12345",
    "filename": "invoice-ord-12345.pdf"
  }
}
FieldWajibKeterangan
document.linkURL HTTPS publik ke dokumen
document.filenameNama file yang ditampilkan ke penerima
document.captionCaption di atas attachment

Lokasi

{
  "to": "628123456789",
  "type": "location",
  "location": {
    "latitude": -6.2,
    "longitude": 106.816666,
    "name": "Kantor Chatera",
    "address": "Jl. Contoh No. 123, Jakarta"
  }
}

name dan address opsional.

Multi-channel: memilih saluran pengirim

Jika organisasi kamu punya lebih dari satu saluran WhatsApp aktif, sertakan channel_id untuk memilih saluran pengirim:

{
  "to": "628123456789",
  "type": "text",
  "channel_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "text": { "body": "Halo dari channel sales!" }
}

Cara mendapatkan channel_id:

  • Dari payload webhook (data.channelId).
  • Dari halaman Pengaturan > Saluran di dashboard.

Jika channel_id tidak disertakan dan kamu hanya punya satu saluran, saluran tersebut otomatis dipakai. Jika punya beberapa saluran tanpa channel_id, request akan ditolak dengan error WHATSAPP_CHANNEL_NOT_FOUND.

Response

{
  "success": true,
  "data": {
    "messageId": "9b8c1234-e5f6-4789-90ab-cdef01234567",
    "whatsappMessageId": "wamid.HBgNNjI4MTIzNDU2Nzg5FQIAERgSRDM0NEU3RkY1...",
    "status": "sent",
    "to": "+628123456789",
    "timestamp": "2026-04-27T10:51:33.228Z"
  }
}
FieldKeterangan
messageIdID pesan di Chatera (UUID) — pakai untuk lookup di webhook
whatsappMessageIdID dari Meta (wamid.xxx)
statussent (artinya diterima oleh server WhatsApp Cloud API; status delivered & read dikirim via webhook)
toNomor tujuan dalam E.164 (dengan +)
timestampWaktu kirim (ISO 8601)

Pesan error

KodePenyebabSolusi
VALIDATION_INVALID_PHONEFormat to salahPakai E.164
VALIDATION_MISSING_FIELDto atau type kosongLengkapi field wajib
WHATSAPP_SESSION_CLOSEDDi luar jendela 24 jamPakai template
WHATSAPP_CHANNEL_NOT_FOUNDchannel_id tidak valid / tidak aktif, atau punya >1 saluran tapi tidak menyebut channel_idCek saluran di dashboard
WHATSAPP_MEDIA_UPLOAD_FAILEDURL media tidak bisa diakses Meta (404, timeout, ukuran terlalu besar)Pastikan URL HTTPS, publik, ukuran sesuai limit Meta
WHATSAPP_SEND_FAILEDMeta menolak requestLihat details untuk detail. Coba lagi setelah beberapa saat.

Limit ukuran media

Meta WhatsApp Cloud API membatasi ukuran media:

  • Gambar: 5 MB
  • Audio: 16 MB
  • Video: 16 MB
  • Dokumen: 100 MB

URL kamu harus dapat di-fetch oleh server Meta — pastikan tidak di belakang IP whitelist atau autentikasi.

On this page