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 dan 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 dan jangan taruh 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.