📚 Dokumentasi API Wahnotif

Wahnotif menyediakan REST API modern yang memudahkan Anda untuk mengintegrasikan pengiriman pesan WhatsApp, Chatbot AI otomatis, dan Manajemen CRM ke dalam aplikasi Anda (Node.js, PHP, Python, dll).

API kami didesain agar mudah digunakan oleh developer dengan standar respons JSON dan penggunaan autentikasi berbasis Header.

Autentikasi

Semua request ke API Wahnotif memerlukan API Key rahasia untuk memastikan keamanan data Anda. Anda bisa membuat dan mencabut API Key kapan saja dari halaman Dasbor Klien Anda.

Sertakan API Key tersebut di dalam HTTP Header dengan kunci x-api-key.

Contoh Penggunaan Header Autentikasi
// Menggunakan Fetch (JavaScript)
fetch('https://api.wahnotif.com/api/send-message', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'x-api-key': 'KODE_RAHASIA_ANDA'
    }
});

Kirim Pesan (Teks & Media)

Mengirim pesan teks biasa atau pesan disertai gambar ke satu nomor WhatsApp.

POST /api/send-message
ParameterTipeKeterangan
numberStringNomor tujuan (format angka, misal 628...). Wajib.
messageStringIsi pesan teks (atau *caption* jika gambar). Wajib.
imageUrlString(Opsional) URL gambar publik untuk dikirim.
imageFile(Opsional) Jika menggunakan FormData, upload file gambar langsung.
Request Example (cURL)
curl -X POST https://api.wahnotif.com/api/send-message \
  -H "Content-Type: application/json" \
  -H "x-api-key: KODE_RAHASIA_ANDA" \
  -d '{
    "number": "628123456789",
    "message": "Halo! Ini adalah notifikasi pesanan."
  }'

Response (JSON)
{
  "success": true,
  "message": "Pesan berhasil dikirim",
  "id": "MSG_12345XYZ"
}

Kirim Broadcast Massal

Kirim pesan massal dengan aman (menggunakan jeda antrean acak untuk menghindari blokir). Fitur ini mendukung Spintax dan targeting tag CRM.

POST /api/broadcast
ParameterKeterangan
messageTemplatePesan utama. Mendukung Spintax: {Halo|Hai}.
useContactsBoolean. Jika true, ambil data dari CRM Wahnotif.
targetTag(Opsional) Kirim hanya ke tag tertentu (misal: VIP).
csv(Opsional) File CSV (FormData) jika useContacts = false.
Request Example (Spintax)
{
  "messageTemplate": "{Halo|Hai} [nama], promo khusus untuk kamu!",
  "useContacts": true,
  "targetTag": "PelangganLama"
}

Manajemen Kontak (CRM)

Mengambil, menambah, dan memperbarui buku kontak pelanggan Anda. Ganti {deviceId} dengan ID perangkat Anda.

GET /api/device/{deviceId}/contacts
POST /api/device/{deviceId}/contacts
Parameter POSTKeterangan
nameNama pelanggan.
phoneNomor WhatsApp pelanggan.
email(Opsional) Email pelanggan.
tags(Opsional) Tag (dipisahkan koma), misal: VIP,Baru.
Add/Update Contact
POST /api/device/DVC-1234/contacts
{
  "name": "Budi Santoso",
  "phone": "62899998888",
  "tags": "VIP, Priority"
}

Webhook Pesanan Masuk

Jika URL Webhook diatur di Dasbor, Wahnotif akan menembakkan HTTP POST ke server Anda setiap kali ada pesan masuk.

Ini sangat berguna untuk membangun sistem Auto-Responder Anda sendiri tanpa harus terkoneksi langsung ke server WhatsApp.

Payload Webhook (Dikirim oleh Wahnotif ke Server Anda)
{
  "deviceId": "xxx-yyy",
  "from": "628123456789@s.whatsapp.net",
  "message": "Halo, saya mau pesan barang",
  "timestamp": 1718000000
}

AI Tool Schema Discovery

Jika Anda memiliki sistem backend sendiri dan ingin AI Wahnotif mengeksekusi Action/Fungsi tertentu dari API Anda, buat satu Endpoint GET (misal: /api/tools_schema) yang mengembalikan OpenAI Tool Schema JSON.

AI akan otomatis memahami fungsi apa yang tersedia (seperti Cek Resi, Cek Stok) berdasarkan name dan description, lalu menembak webhookUrl ketika pelanggan bertanya.

Injeksi Otomatis

Saat AI menembak webhookUrl Anda, ia juga menyertakan variabel otomatis: _wahnotif_deviceId, _wahnotif_jid, _wa_role, _wa_user untuk memudahkan identifikasi session.

Response JSON yang Diharapkan dari Server Anda
{
  "status": "success",
  "wahnotif_tools": [
    {
      "name": "cek_ongkir",
      "description": "Dipanggil ketika pelanggan minta cek ongkir",
      "parameters": {
        "type": "object",
        "properties": {
          "kecamatan": { "type": "string" }
        },
        "required": ["kecamatan"]
      },
      "webhookUrl": "https://api.domain.com/hook/ongkir"
    }
  ]
}

Membalas Webhook dgn File PDF
// Jika server Anda merespons dgn ini, 
// AI akan mem-PDF-kan HTML ini.
{
  "generate_pdf": true,
  "filename": "invoice.pdf",
  "html_content": "<h1>Invoice 01</h1>"
}