Dokumentasi API

Quickstart

Kirim pesan WhatsApp pertama Anda dalam lima menit. Base URL: https://api.wangsa.id

1. Autentikasi

Ambil token device dari dashboard, lalu sertakan di header Authorization. Token dikirim langsung — tanpa "Bearer".

Punya beberapa device? Pisahkan beberapa token dengan koma untuk merotasi pengirim secara acak.

2. Kirim pesan

Satu permintaan POST sudah cukup untuk mengirim pesan teks.

cURL
curl https://api.wangsa.id/v1/send \
  -H "Authorization: sk_live_•••" \
  -d target="628123456789" \
  -d message="Halo dari Wangsa 👋"

Respons mengembalikan status dan sisa kuota Anda:

200 OK
{
  "status": true,
  "id": "msg_8KzQ1xR",
  "queued": true,
  "quota": 9981
}

3. Parameter utama

ParameterTipeKeterangan
target wajibstringNomor tujuan (pisah koma untuk banyak) atau ID grup. Opsional bila pakai inboxid.
messagestringIsi pesan teks; mendukung variabel {name}. Jadi caption bila ada url.
urlstringLampiran gambar/file/audio/video (paket media).
typestringtext|image|document|video|audio|location|poll|sticker|contact (auto-deteksi bila kosong).
contactName / contactPhonestringKirim kontak (vCard).
devicestringID device; csv = rotator (acak per target). Tak perlu bila pakai token device.
locationstringKirim lokasi, format lat,lng.
choicesstringPoll: 2–12 pilihan pisah koma.
selectstringPoll: single / multiple.
inboxidintBalas pesan masuk (target & device otomatis dari inbox).
countryCodestringNormalisasi 0 depan; default 62; 0 = nonaktif.
delaystringJeda acak, mis. 2-5 detik (anti-ban).
scheduleintUnix timestamp untuk kirim terjadwal.

4. Terima pesan (webhook)

Daftarkan URL webhook di dashboard untuk menerima pesan masuk dan pembaruan status. Setiap payload ditandatangani HMAC; endpoint Anda harus membalas 200. Pengiriman gagal dicoba ulang otomatis.

Daftar endpoint

MethodEndpointFungsi
POST/v1/sendKirim pesan (teks/media/lokasi/poll)
GET/v1/send?...Kirim via URL (token boleh di query ?token=)
POST/v1/send (inboxid)Balas pesan masuk via API
GET/v1/deviceDaftar device & status
GET/v1/device/profileProfil device + sisa kuota
POST/v1/device/disconnectPutuskan device
GET/v1/group/listDaftar grup WhatsApp device
POST/v1/typingIndikator mengetik ke target
GET/POST/v1/validateCek nomor terdaftar di WhatsApp
POST/v1/orderBeli / perpanjang paket
GET/v1/device/qrAmbil QR / kode pairing (polling saat menyambungkan)

Webhook bisa dibatasi per-device di dashboard (kosongkan = semua device).

Integrasi — Bahasa & Library

Semua integrasi pada dasarnya sama: kirim POST ke /v1/send dengan header Authorization berisi token Anda.

Base URL: https://api.wangsa.id (SaaS). Bila self-host, gunakan https://domain-anda.com/api/v1/send.
PHP (cURL)
<?php
$ch = curl_init('https://api.wangsa.id/v1/send');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER     => ['Authorization: TOKEN_ANDA'],
  CURLOPT_POSTFIELDS     => [
    'target'  => '628123456789',
    'message' => 'Halo dari Wangsa 👋',
  ],
]);
echo curl_exec($ch);
Node.js
await fetch('https://api.wangsa.id/v1/send', {
  method: 'POST',
  headers: { 'Authorization': 'TOKEN_ANDA', 'Content-Type': 'application/json' },
  body: JSON.stringify({ target: '628123456789', message: 'Halo dari Wangsa' }),
});
Laravel (HTTP)
use Illuminate\Support\Facades\Http;

Http::withHeaders(['Authorization' => 'TOKEN_ANDA'])
    ->post('https://api.wangsa.id/v1/send', [
        'target'  => '628123456789',
        'message' => 'Halo dari Wangsa',
    ]);

Integrasi — Platform & Plugin

Hubungkan form & toko online ke WhatsApp. Ganti TOKEN_ANDA dan nama field sesuai milik Anda.

Contact Form 7 (WordPress)

Tempel di functions.php tema/child-theme. Kirim WA tiap form terkirim.

functions.php
add_action('wpcf7_mail_sent', function ($cf7) {
  $d = WPCF7_Submission::get_instance()->get_posted_data();
  wp_remote_post('https://api.wangsa.id/v1/send', [
    'headers' => ['Authorization' => 'TOKEN_ANDA'],
    'body'    => [
      'target'  => $d['your-phone'],            // nama field telp
      'message' => "Halo {$d['your-name']}, pesan Anda kami terima.",
    ],
  ]);
});

WooCommerce — notifikasi order

Kirim WA otomatis saat status order berubah (mis. processing).

functions.php
add_action('woocommerce_order_status_processing', function ($order_id) {
  $o = wc_get_order($order_id);
  wp_remote_post('https://api.wangsa.id/v1/send', [
    'headers' => ['Authorization' => 'TOKEN_ANDA'],
    'body'    => [
      'target'  => $o->get_billing_phone(),
      'message' => "Terima kasih! Pesanan #{$order_id} sedang diproses. Total: " . $o->get_total(),
    ],
  ]);
});

Elementor Forms

Tempel snippet (Elementor Pro) — terpicu tiap submit form.

functions.php
add_action('elementor_pro/forms/new_record', function ($record, $handler) {
  $f = $record->get('fields');
  wp_remote_post('https://api.wangsa.id/v1/send', [
    'headers' => ['Authorization' => 'TOKEN_ANDA'],
    'body'    => ['target' => $f['phone']['value'], 'message' => 'Halo ' . $f['name']['value']],
  ]);
}, 10, 2);

Formidable Forms

functions.php
add_action('frm_after_create_entry', function ($entry_id) {
  $phone = FrmEntryMeta::get_entry_meta_by_field($entry_id, 25); // ID field telp
  $name  = FrmEntryMeta::get_entry_meta_by_field($entry_id, 26); // ID field nama
  wp_remote_post('https://api.wangsa.id/v1/send', [
    'headers' => ['Authorization' => 'TOKEN_ANDA'],
    'body'    => ['target' => $phone, 'message' => "Halo $name"],
  ]);
}, 30, 1);

Google Form (Apps Script)

Extensions → Apps Script, tempel kode, lalu buat trigger On form submit.

Apps Script
function onFormSubmit(e) {
  var v = e.values; // [waktu, nama, no_hp, ...] sesuai urutan kolom
  UrlFetchApp.fetch('https://api.wangsa.id/v1/send', {
    method: 'post',
    headers: { Authorization: 'TOKEN_ANDA' },
    payload: { target: v[2], message: 'Halo ' + v[1] + ', terima kasih sudah mengisi form.' },
  });
}

No-code (Zapier / n8n / Make)

Tambahkan langkah HTTP Request: method POST, URL https://api.wangsa.id/v1/send, header Authorization: TOKEN_ANDA, body target & message. Selesai.

Tips: gunakan parameter delay (mis. 3-8) saat blast dari plugin agar lebih aman (anti-ban), dan variabel {name} untuk personalisasi.

Dapatkan token & mulai