Masuk

Pesan

Kirim ke nomor telepon, alamat email, atau kontak yang sudah ada. Kontak dan percakapan ditemukan atau dibuat otomatis.

Kirim pesan

Mengantrekan pesan dan mengembalikannya dengan status PENDING. to berisi { "type": "WHATSAPP", "phone": "+62…" }, { "type": "EMAIL", "address": "…" }, { "type": "TELEGRAM", "userId": "…" }, atau { "contactId": "…" }.

Scopemessage:send
channelIdstringrequired
Channel yang mengirim pesan. Salin dari halaman channel (ID Channel), atau ambil daftarnya lewat GET /api/v1/channel. Saat sudah masuk, pilih channel di bagian atas docs agar otomatis terisi di contoh.
toobjectrequired
Penerima: { "type": "WHATSAPP", "phone" }, { "type": "EMAIL", "address" }, { "type": "TELEGRAM", "userId" } atau { "contactId" }.
contentobjectrequired
Isi pesan: TEXT, IMAGE, DOCUMENT, LOCATION dan lainnya. Lihat tipe konten di bawah.
replyToMessageIdstring
Kutip pesan sebelumnya dari percakapan yang sama.
POSThttps://www.beamvia.com/api/v1/message
curl -X POST "https://www.beamvia.com/api/v1/message" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channelId": "CHANNEL_ID",
    "to": {
      "type": "WHATSAPP",
      "phone": "+6281234567890"
    },
    "content": {
      "type": "TEXT",
      "text": "Hello from Beamvia!"
    }
  }'
{
  "status": true,
  "message": "Message queued",
  "data": {
    "message": {
      "id": "6650f0c2a1b2c3d4e5f60718",
      "conversationId": "6650f0c2a1b2c3d4e5f60700",
      "direction": "OUTBOUND",
      "author": {
        "type": "API",
        "apiKeyId": "6650f0c2a1b2c3d4e5f60001"
      },
      "content": {
        "type": "TEXT",
        "text": "Hello from Beamvia!"
      },
      "status": "PENDING",
      "isPrivate": false,
      "replyTo": null,
      "external": {
        "id": null
      },
      "sentAt": "2026-10-20T08:00:00.000Z"
    }
  }
}

Jenis konten

Bentuk konten yang sama dipakai untuk semua kanal. Jenis yang tidak didukung kanal atau paket akan ditolak.

typeField
TEXTtext
IMAGE · VIDEO · DOCUMENTfile { url, mimetype, filename?, driveId? }, caption?
AUDIOfile, isVoice?
STICKERfile
LOCATIONlatitude, longitude, name?, address?
CONTACTname, phone?, email?
REACTIONmessageId (external id), emoji

Media harus berupa URL yang bisa diakses publik (alamat privat/lokal dan redirect ditolak, maksimal 100 MB). File diunduh dan dikirim oleh kanal.

Atau isi driveId untuk mengirim file yang sudah ada di drive workspace kamu (diunggah dari dashboard). File milik workspace lain ditolak dengan "File not found". URL file yang kamu terima (API, webhook, plugin) adalah link tetap: tetap berlaku sampai file-nya dihapus.

Status pengiriman

Pesan diantrekan lalu melewati status berikut. Langganan MESSAGE_UPDATED untuk mengikutinya.

statusArti
PENDINGDalam antrean, belum diserahkan ke kanal
SENTDiterima oleh kanal
DELIVEREDSampai di perangkat penerima
READDibaca oleh penerima
FAILEDGagal setelah percobaan ulang; lihat error