Bahasa Indonesia
Quick Start
Di sini kita bakal kirim pesan WhatsApp pertama kamu lewat Zawa, dari nol. Kira-kira 5 menit, dan kopinya belum sempat dingin.
Yang Kamu Butuhin
- HP dengan WhatsApp yang aktif.
- Terminal dengan
curl. Kalau adajq, lebih enak lagi. - Atau Node.js 18+, kalau kamu lebih suka langsung pakai skrip lengkap di bawah.
Semua request di halaman ini dikirim ke base URL:
text
https://api-zawa.azickri.comBuat Sesi
Panggil Buat Session. Nggak perlu header atau body apa pun.
bash
curl -X POST "https://api-zawa.azickri.com/session"Response-nya bakal kayak gini:
json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310"
}Simpan dua nilai itu, soalnya bakal dipakai sebagai header id dan session-id di semua request berikutnya. Biar gampang, taruh di variabel terminal:
bash
export ZAWA_ID="68b3f0a2c1d4e5f6a7b8c9d0"
export ZAWA_SESSION_ID="0b2f7059-8a90-4f6d-8684-b0e1ce6f0310"Jangan kelamaan
QR code-nya cuma berlaku sekitar 3 menit. Kalau nggak di-scan sampai waktunya habis, sesi otomatis dihapus dan kamu perlu bikin sesi baru. Jadi siapin HP-nya dari sekarang ya.
Ambil QR Code
QR code dibikin di belakang layar, jadi tunggu 2–3 detik, terus panggil Ambil Session:
bash
curl "https://api-zawa.azickri.com/session" \
-H "id: $ZAWA_ID" \
-H "session-id: $ZAWA_SESSION_ID"json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"generatedId": "",
"name": "",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310",
"isConnected": false,
"qrcode": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAAB...",
"picture": ""
}Kolom qrcode itu gambar PNG dalam bentuk base64 (tanpa awalan data:). Cara paling gampang buat ngelihatnya:
bash
curl -s "https://api-zawa.azickri.com/session" \
-H "id: $ZAWA_ID" \
-H "session-id: $ZAWA_SESSION_ID" \
| jq -r '.qrcode' | base64 -d > qr.png
# Buka qr.png pakai image viewer favorit kamuhtml
<!-- Tambahin awalan data URL, terus tampilin sebagai gambar -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAAB..." />qrcode masih kosong?
Wajar di beberapa detik pertama. Tunggu sebentar, terus panggil lagi. QR-nya juga bisa ganti beberapa kali selama nunggu di-scan, jadi selalu pakai yang paling baru.
Scan dari HP
- Buka WhatsApp di HP kamu.
- Masuk ke Setelan (iPhone) atau menu ⋮ (Android), terus pilih Perangkat tertaut.
- Ketuk Tautkan perangkat, lalu scan QR code tadi.
Habis itu, panggil Ambil Session lagi. Kalau udah nyambung, isConnected jadi true, dan name serta picture ikut terisi:
json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"generatedId": "6281234567890:[email protected]",
"name": "Zawa Bot",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310",
"isConnected": true,
"qrcode": "",
"picture": "https://pps.whatsapp.net/v/t61.24694-24/..."
}Kirim Pesan Pertama
Momen yang ditunggu-tunggu. Ganti 6281234567890 sama nomor tujuan (format internasional, contohnya nomor kamu sendiri), terus panggil Kirim Pesan:
bash
curl -X POST "https://api-zawa.azickri.com/message" \
-H "id: $ZAWA_ID" \
-H "session-id: $ZAWA_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"phone":"6281234567890","type":"text","text":"Halo dari Zawa! 👑"}'json
{
"messageId": "3EB0C4A8F1D2B3E4A5F6"
}Cek HP-nya. Kalau pesannya udah nongol, selamat, kamu resmi jadi pengguna Zawa! 🎉
Versi Lengkap Pakai Node.js
Males copas satu-satu? Skrip ini ngejalanin semua langkah di atas sekaligus: bikin sesi, nyimpen QR ke qr.png tiap kali QR-nya berubah, nunggu sampai kamu scan, terus ngirim pesan.
js
// quick-start.mjs
// Jalankan: node quick-start.mjs 6281234567890
import { writeFile } from 'node:fs/promises';
const BASE_URL = 'https://api-zawa.azickri.com';
const phone = process.argv[2];
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function zawa(method, path, { headers = {}, body } = {}) {
const response = await fetch(BASE_URL + path, {
method,
headers: { 'Content-Type': 'application/json', ...headers },
body: body ? JSON.stringify(body) : undefined,
});
const data = await response.json();
if (!response.ok) throw new Error(`${data.statusCode}: ${data.message}`);
return data;
}
// 1. Buat sesi
const { id, sessionId } = await zawa('POST', '/session');
const auth = { 'id': id, 'session-id': sessionId };
console.log('Sesi dibuat:', auth);
// 2 & 3. Simpan QR ke qr.png, terus tunggu sampai di-scan
let lastQrcode = '';
while (true) {
const session = await zawa('GET', '/session', { headers: auth });
if (session.isConnected) {
console.log(`Nyambung sebagai ${session.name}!`);
break;
}
if (session.qrcode && session.qrcode !== lastQrcode) {
lastQrcode = session.qrcode;
await writeFile('qr.png', Buffer.from(session.qrcode, 'base64'));
console.log('QR baru disimpan ke qr.png, scan dari HP ya!');
}
await sleep(3000);
}
// 4. Kirim pesan pertama
const { messageId } = await zawa('POST', '/message', {
headers: auth,
body: { phone, type: 'text', text: 'Halo dari Zawa! 👑' },
});
console.log('Pesan terkirim:', messageId);Kalau skripnya berhenti dengan 404: session not found pas lagi nunggu, berarti QR-nya keburu kedaluwarsa. Jalankan ulang aja, terus scan lebih cepat. 😄
Selanjutnya Apa?
- Pelajari Konsep Dasar biar paham siklus hidup sesi dan format nomor.
- Coba kirim gambar, dokumen, lokasi, atau kontak.
- Kirim ke grup atau bikin status.
- Ketemu error? Cek Error & Solusi.