Qirim by alula — Developer REST API & Webhooks Reference
REST API v1.0 100% CONNECTEDPanduan lengkap, spesifikasi parameter, dan cuplikan kode siap pakai (cURL, PHP/Laravel, Node.js, Python) untuk seluruh fitur WhatsApp Gateway, Otomasi Pesan, Phonebook, dan OTP Engine.
Daftar Endpoint API
1. Authentication & API Credentials
Semua request REST API diautentikasi menggunakan API Key perangkat yang valid. Sertakan token Anda di HTTP Header Authorization: Bearer <API_KEY> atau x-api-key: <API_KEY>.
Base URL:
https://qirim.web.id/api/v1
HTTP Headers:
Authorization: Bearer YOUR_DEVICE_API_KEY
Content-Type: application/json
/api/v1/send-message
Kirim pesan teks personal atau grup WhatsApp dengan simulasi mengetik manusia (anti-ban delay) dan dukungan variasi teks Spintax {Halo|Hai|Selamat Pagi}.
Request Body (JSON):
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
target |
String | Ya | Nomor WhatsApp tujuan (e.g. 081234567890 atau 6281234567890) atau ID Grup (...-group@g.us). |
message |
String | Ya | Isi pesan teks. Mendukung Spintax {Halo|Hai} Kak. |
curl -X POST https://qirim.web.id/api/v1/send-message \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"message": "{Halo|Hai} Kak! Pesanan Anda telah kami terima dan sedang diproses."
}'
<?php
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders([
'Authorization' => 'Bearer ' . env('QIRIM_API_KEY'),
])->post('https://qirim.web.id/api/v1/send-message', [
'target' => '081234567890',
'message' => 'Halo Kak, tagihan Anda sebesar Rp 150.000 telah terbit.',
]);
return $response->json();
const axios = require('axios');
const res = await axios.post('https://qirim.web.id/api/v1/send-message', {
target: '081234567890',
message: 'Hello from Node.js!'
}, {
headers: { 'Authorization': 'Bearer ' + process.env.QIRIM_API_KEY }
});
console.log(res.data);
import requests
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"target": "081234567890",
"message": "Halo dari Python script!"
}
response = requests.post("https://qirim.web.id/api/v1/send-message", json=payload, headers=headers)
print(response.json())
Response Sukses (200 OK):
{
"status": true,
"message": "Message sent successfully",
"data": {
"id": "3EB09F2184912...",
"target": "081234567890",
"device_id": 1,
"timestamp": "2026-09-06T09:00:00.000Z"
}
}
/api/v1/send-media
Kirim file media (Gambar JPG/PNG, Video MP4, Audio Rekaman/Voice Note, Dokumen/PDF Faktur) menggunakan URL publik file Anda.
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
target |
String | Ya | Nomor WhatsApp tujuan. |
url / media_url |
String | Ya | Direct URL file media (e.g. https://domain.com/invoice-123.pdf). |
type |
String | Opsional | Pilihan tipe: image (default), video, audio, document. |
caption |
String | Opsional | Teks keterangan yang menyertai media. |
filename |
String | Opsional | Nama file untuk lampiran dokumen (e.g. Faktur-Pembelian.pdf). |
curl -X POST https://qirim.web.id/api/v1/send-media \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"url": "https://example.com/files/invoice-INV8821.pdf",
"type": "document",
"caption": "Berikut e-invoice pembayaran Anda.",
"filename": "Invoice-INV8821.pdf"
}'
/api/v1/send-location
Kirim pin koordinat lokasi Google Maps langsung ke chat WhatsApp.
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
target |
String | Ya | Nomor WhatsApp tujuan. |
latitude |
Float | Ya | Garis lintang (e.g. -6.200000). |
longitude |
Float | Ya | Garis bujur (e.g. 106.816666). |
name |
String | Opsional | Nama tempat / gedung (e.g. Kantor Pusat Alula). |
address |
String | Opsional | Alamat lengkap lokasi. |
curl -X POST https://qirim.web.id/api/v1/send-location \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"latitude": -6.200000,
"longitude": 106.816666,
"name": "Alula Headquarters",
"address": "Jl. Sudirman Kav 25, Jakarta Selatan"
}'
/api/v1/send-contact
Kirim kartu kontak (vCard) interaktif yang bisa langsung disimpan ke buku kontak penerima dengan satu ketukan.
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
target |
String | Ya | Nomor WhatsApp tujuan. |
contact_name |
String | Ya | Nama kontak yang dibagikan. |
contact_phone |
String | Ya | Nomor kontak yang dibagikan. |
curl -X POST https://qirim.web.id/api/v1/send-contact \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"contact_name": "Customer Support Alula",
"contact_phone": "628999888777"
}'
/api/v1/send-template
Kirim pesan menggunakan template tersimpan dengan penggantian variabel dinamis seperti {name}, {order_id}, {total}.
curl -X POST https://qirim.web.id/api/v1/send-template \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"template_name": "Konfirmasi Pembayaran",
"variables": {
"name": "Budi Santoso",
"order_id": "INV-2026-001",
"total": "Rp 250.000"
}
}'
/api/v1/broadcast
Kirim pesan massal ke banyak nomor sekaligus secara asynchronous di background dengan proteksi anti-ban interval.
curl -X POST https://qirim.web.id/api/v1/broadcast \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipients": ["081234567890", "081234567891", "081234567892"],
"message": "{Halo|Hai} Pelanggan setia, dapatkan diskon 30% hari ini!",
"delay_seconds": 3
}'
/api/v1/schedule-message
Jadwalkan pengiriman pesan di masa depan (one-time) atau berulang otomatis (daily, weekly, monthly).
curl -X POST https://qirim.web.id/api/v1/schedule-message \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"message": "Pengingat: Tagihan internet Anda jatuh tempo besok.",
"schedule_time": "2026-09-10 09:00:00",
"recurring_type": "monthly"
}'
Endpoint Jadwal Lainnya:
GET /api/v1/scheduled |
Mendapatkan daftar seluruh pesan terjadwal & berulang akun Anda. |
DELETE /api/v1/scheduled/:id |
Membatalkan atau menghapus antrean jadwal pesan. |
/api/v1/otp/send & /api/v1/otp/verify
Engine pengiriman dan verifikasi kode OTP / 2FA sekali pakai dengan kedaluwarsa otomatis.
1. Generate & Kirim OTP:
curl -X POST https://qirim.web.id/api/v1/otp/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"length": 6,
"expiry_minutes": 5,
"type": "2fa"
}'
2. Validasi Kode OTP:
curl -X POST https://qirim.web.id/api/v1/otp/verify \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "081234567890",
"otp_code": "849201"
}'
10. Manajemen Perangkat & Session WhatsApp
Integrasi manajemen perangkat langsung dari aplikasi 3rd party Anda tanpa perlu membuka dashboard qirim.
| Method & Endpoint | Fungsi | Payload / Keterangan |
|---|---|---|
GET /api/v1/devices |
Daftar semua perangkat akun Anda | Mengembalikan status live Baileys dan sisa kuota. |
GET /api/v1/device/status |
Status perangkat aktif saat ini | Status koneksi (connected, scan_qr, disconnected) & limit kuota. |
GET /api/v1/device/qr |
Dapatkan QR Code Base64 | Kembalikan qr_image_url untuk disematkan langsung di <img src="..."> aplikasi Anda. |
POST /api/v1/device/pairing-code |
Generate Pairing Code 8 digit | Body: {"phone": "081234567890"} untuk koneksi WhatsApp via nomor telepon. |
POST /api/v1/device/disconnect |
Disconnect / Logout Session | Memutus koneksi socket WhatsApp dan membersihkan session auth. |
POST /api/v1/webhook/set |
Set / Update Webhook URL | Body: {"webhook_url": "https://api.yourdomain.com/webhook"}. |
11. Phonebook Contacts & Grouping API
Kelola buku kontak dan pengelompokan pelanggan Anda via REST API.
GET /api/v1/contacts |
Ambil daftar kontak (mendukung filter ?group_id=...). |
POST /api/v1/contacts |
Tambah kontak: {"name": "Budi", "phone": "081234567890", "group_id": 1, "custom_var1": "VIP"}. |
DELETE /api/v1/contacts/:id |
Hapus kontak berdasarkan ID. |
GET /api/v1/groups |
Ambil daftar grup kontak dan jumlah anggota tiap grup. |
POST /api/v1/groups |
Tambah grup kontak baru: {"name": "Pelanggan VIP", "description": "Grup prioritas"}. |
DELETE /api/v1/groups/:id |
Hapus grup kontak berdasarkan ID. |
12. Auto-Reply Chatbot Rules API
Kelola aturan respon otomatis bot WhatsApp untuk perangkat Anda.
GET /api/v1/autoreply |
Ambil daftar seluruh aturan auto-reply pada perangkat ini. |
POST /api/v1/autoreply |
Tambah aturan baru:
|
DELETE /api/v1/autoreply/:id |
Hapus aturan auto-reply berdasarkan ID. |
13. Message Templates API
Kelola template pesan siap pakai untuk kampanye dan notifikasi.
GET /api/v1/templates |
Dapatkan daftar seluruh template pesan tersimpan. |
POST /api/v1/templates |
Buat template baru:
|
DELETE /api/v1/templates/:id |
Hapus template pesan berdasarkan ID. |
/api/v1/account
Cek profil akun, paket langganan aktif, fitur yang diizinkan oleh paket, dan akumulasi penggunaan kuota pesan.
curl -X GET https://qirim.web.id/api/v1/account \
-H "Authorization: Bearer YOUR_API_KEY"
15. Webhooks & Event Payloads
Qirim by alula mengirimkan HTTP POST event real-time ke URL webhook yang Anda daftarkan setiap kali terjadi interaksi WhatsApp.
Event: messages.received (Pesan Masuk)
{
"event": "messages.received",
"data": {
"device_id": 1,
"device_name": "Customer Support",
"sender": "6281234567890",
"message": "Halo, apakah stok barang ini masih ada?",
"is_group": false,
"timestamp": 1725537600
}
}
Event: device.connected & device.disconnected
{
"event": "device.connected",
"data": {
"device_id": 1,
"phone": "6281234567890",
"status": "connected",
"timestamp": "2026-09-06T09:00:00.000Z"
}
}