Integration API ยท WhatsApp Unofficial

Kirim WhatsApp via Integration API

Endpoint stateless untuk mengirim pesan WhatsApp dari aplikasi/sistem kamu pakai Local API Key โ€” tanpa JWT, tanpa login flow. Cocok untuk integrasi backend, automation (Zapier/n8n), atau webhook custom.

Ringkasan

Integration API cshub adalah jalur external untuk kirim pesan WhatsApp dari backend / automation tool kamu. Pakai Local API Key per business untuk auth (mirror behavior whatscrmhub Laravel). Endpoint ini terpisah dari endpoint internal yang dipakai panel + mobile app cshub.

Base URL

https://api.cshub.id/api/v1

Content-Type

application/json

Autentikasi

Auth pakai Local API Key di body request (field `api_key`), bukan HTTP header. Setiap business punya 1 Local API Key (UUID) yang di-generate otomatis saat business dibuat.

Tidak ada JWT, tidak ada header token

Beda dari endpoint internal panel. Cukup kirim `api_key` di body, server resolve business dari sana. Untuk keamanan, treat Local API Key seperti password โ€” jangan commit ke repo publik, jangan expose di frontend.

Cara dapat Local API Key

  1. Login ke panel cshub di /app.
  2. Buka menu Settings โ†’ API Key (atau Profile โ†’ Integration).
  3. Copy Local API Key. Bisa regenerate kapan saja (yang lama langsung invalid).

Endpoint

Satu endpoint untuk semua jenis pesan WhatsApp Unofficial (whatsmeow). Pilih method = text untuk pesan bebas, atau method = template untuk pesan dari template yang sudah dibuat di panel.

POST https://api.cshub.id/api/v1/integration/whatsapp/send-message

Auth

Local API Key di body (`api_key`)

Rate limit

Per-device (sesuai daily_send limit device)

Field body

Body request dalam format JSON. Field di bawah ini parity dengan whatscrmhub Laravel โ€” kalau kamu migrasi dari versi lama, request shape-nya identik.

Field Type Required Deskripsi
api_keystringโœ…Local API Key business (UUID). Dapat dari Settings panel cshub.
phonestringโœ…Nomor tujuan format internasional tanpa "+" (mis. 6281234567890), atau group JID kalau `is_group` = true.
methodstringโœ…text, template
textstringmethod=textIsi pesan text. Wajib bila method = text.
templatestringmethod=templateID Message Template yang sudah dibuat di panel cshub. Wajib bila method = template.
variablesobjectโ€”Object literal `{placeholder: value}` untuk substitusi di template. Contoh: `{"$name":"Budi"}` akan replace semua `$name` di template message dengan "Budi".
device_keystringtergantung *UUID device WhatsApp yang akan dipakai kirim.
is_groupbooleanโ€”Set true kalau `phone` adalah group JID (mis. 120363...@g.us).

Contoh request

1. Kirim pesan text simple

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "6281234567890",
    "method": "text",
    "text": "Halo, makasih udah order ya!"
  }'

2. Kirim pesan template dengan variable substitusi

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "6281234567890",
    "method": "template",
    "template": "<TEMPLATE_ID>",
    "variables": {
      "$name": "Pak Budi",
      "$order_id": "INV-20260602-001"
    }
  }'

3. Kirim ke group (pakai group JID)

cURL
curl -X POST "https://api.cshub.id/api/v1/integration/whatsapp/send-message" \
  -H "Content-Type: application/json" \
  -d '{
    "api_key": "<LOCAL_API_KEY>",
    "device_key": "<DEVICE_ID>",
    "phone": "120363012345678901@g.us",
    "method": "text",
    "text": "Pengumuman: order minggu ini ditutup pukul 17:00.",
    "is_group": true
  }'

Response sukses (200 OK)

200 OK
{
  "status": true,
  "message": "berhasil mengirim pesan"
}

Error code & solusi

Status Penyebab Solusi
401Api Key Cannot be recognizedCek api_key benar (copy ulang dari panel) dan business belum di-suspend.
401Device tidak di temukanCek device_key valid + device dalam status active. Login ulang device via QR/pair code di panel kalau perlu.
401Template tidak dikenaliCek template ID benar dan milik business kamu (template = lihat list di panel โ†’ Master Data โ†’ Templates).
422Daily send limit habisTunggu reset harian (00:00 WIB) atau pakai device lain. Naikkan limit_per_day di settings device kalau perlu.
422Validation gagal (phone/method/text)Pastikan phone format internasional tanpa "+" dan method salah satu dari text/template.
502WhatsApp service unavailableWhatsApp service sedang down. Retry beberapa menit lagi atau cek status device di panel.

Catatan & batasan

  • Ada daily_send limit per device. Hindari blast > 10 pesan/detik dari satu device untuk hindari banned WhatsApp.
  • Kalau settings business kamu set `api_device_use = required`, field `device_key` WAJIB diisi. Kalau set optional, server akan auto-pick device active sesuai strategi (`sequence` / `spin` / `random` di settings `whatsapp_sender_notif`).
  • Substitusi variable pakai literal `str_replace` โ€” placeholder bisa berupa string apapun (mis. `$name`, `{name}`, `[NAME]`). Yang penting persis sama dengan yang ada di template message.
  • Selalu format tanpa "+" dan tanpa spasi/strip. Contoh: 6281234567890 (Indonesia), 60123456789 (Malaysia). Untuk group: gunakan full JID dengan suffix `@g.us`.
  • Iterasi MVP: belum support upload file binary via multipart/form-data. Untuk kirim media, pakai method=template dengan template yang sudah punya image di-setup dari panel.

Integration API vs Internal Panel API

cshub punya dua jalur send-message yang sengaja dipisah. Integration API untuk developer 3rd party / automation; Internal API untuk panel web + mobile app cshub. Beda audience, beda auth, beda response shape.

Integration API Internal Panel API
AudienceBackend developer, Zapier, n8n, custom integrationPanel web cshub-fe, mobile app cshub-mobile
URL/integration/whatsapp/send-message/app/device/{id}/chats/send
Authapi_key di bodyJWT Bearer + X-Business-ID + CSRF
Response shape{status, message}{success, message, data}

Siap integrasi?

Login ke panel cshub, ambil Local API Key dari Settings, dan langsung integrasi WhatsApp ke sistem kamu.