Bahasa Indonesia
Ambil Pesan Channel
GET/channel/messageAmbil histori pesan dari satu channel (newsletter) WhatsApp, mulai dari yang paling baru. Tiap halaman isinya sampai 100 pesan. Buat halaman berikutnya, tinggal oper nilai before dari response sebelumnya.
Detail Endpoint
- Base URL:
https://api-zawa.azickri.com - Header:
iddansession-id - Syarat: sesi harus lagi nyambung (
isConnected: true)
Parameter
| Parameter | Lokasi | Tipe | Wajib | Keterangan |
|---|---|---|---|---|
id | header | string | Ya | id dari Buat Session. |
session-id | header | string | Ya | sessionId dari Buat Session. |
channelId | query | string | Ya | ID channel, contohnya 120363000000000000@newsletter. |
before | query | string | Tidak | Nilai before dari response sebelumnya. Kosongin buat ambil pesan terbaru. |
Contoh Request
bash
curl "https://api-zawa.azickri.com/channel/message?channelId=120363000000000000@newsletter" \
-H "id: YOUR_ID" \
-H "session-id: YOUR_SESSION_ID"javascript
import axios from 'axios';
const response = await axios.get('https://api-zawa.azickri.com/channel/message', {
params: {
channelId: '120363000000000000@newsletter',
},
headers: {
'id': 'YOUR_ID',
'session-id': 'YOUR_SESSION_ID',
},
});
console.log(response.data);javascript
const params = new URLSearchParams({
channelId: '120363000000000000@newsletter',
});
const response = await fetch(`https://api-zawa.azickri.com/channel/message?${params}`, {
headers: {
'id': 'YOUR_ID',
'session-id': 'YOUR_SESSION_ID',
},
});
const data = await response.json();
console.log(data);Response
json
{
"docs": [
{
"id": "A5F44C62B3E3772251002D42C45ACC87",
"serverId": 182,
"url": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXXXX/182",
"type": "text",
"text": "Zawa versi baru udah rilis! 🎉",
"created": "2025-06-07T15:15:51.000Z"
},
{
"id": "B7C1D9E2F3A4B5C6D7E8F9A0B1C2D3E4",
"serverId": 181,
"url": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXXXX/181",
"type": "image",
"text": "Caption gambarnya",
"image": {
"url": "https://mmg.whatsapp.net/...",
"thumbnail": "https://mmg.whatsapp.net/...",
"mimetype": "image/jpeg"
},
"created": "2025-06-06T10:02:11.000Z"
},
{
"id": "C9D8E7F6A5B4C3D2E1F0A9B8C7D6E5F4",
"serverId": 180,
"url": "https://whatsapp.com/channel/0029VaXXXXXXXXXXXXXXXX/180",
"type": "poll",
"text": "",
"polling": {
"name": "Fitur apa yang paling kamu tunggu?",
"options": ["Webhook", "Kirim polling", "Semuanya"]
},
"created": "2025-06-05T08:30:00.000Z"
}
],
"before": 0
}json
// channelId nggak dikirim
{
"statusCode": 400,
"message": "channelId should not be empty\nchannelId must be a string"
}
// Header kurang
{
"statusCode": 400,
"message": "invalid header"
}json
{
"statusCode": 404,
"message": "session not found"
}json
// Channel nggak ketemu
{
"statusCode": 500,
"message": "channel not found"
}
// Sesi lagi nggak nyambung
{
"statusCode": 500,
"message": "session not connected"
}| Kolom | Tipe | Keterangan |
|---|---|---|
docs | array | Daftar pesan, dari yang paling baru. |
docs[].id | string | ID pesan. |
docs[].serverId | number | Nomor urut pesan di channel. Makin besar, makin baru. |
docs[].url | string | Link publik ke pesan itu di WhatsApp. |
docs[].type | string | Tipe pesan: text, image, video, poll, atau sticker. |
docs[].text | string | Isi pesan teks, atau caption buat gambar dan video. |
docs[].image | object | Ada kalau type = image: url, thumbnail, mimetype. |
docs[].video | object | Ada kalau type = video: url, thumbnail, duration (detik), mimetype. |
docs[].sticker | object | Ada kalau type = sticker: url, mimetype. |
docs[].polling | object | Ada kalau type = poll: name (pertanyaan) dan options (daftar pilihan). |
docs[].created | string | Waktu pesan dikirim (ISO 8601). |
before | number | Kirim nilai ini sebagai query before buat ambil halaman berikutnya. 0 artinya udah nggak ada halaman lagi. |
Tipe lain
Pesan dengan tipe yang belum didukung tetap muncul, tapi dengan type: "text" dan text: "UNSUPPORTED TYPE".
Paginasi
Cara kerjanya simpel: panggil tanpa before buat halaman pertama, terus oper before dari response ke request berikutnya. Berhenti kalau before udah 0.
javascript
const BASE_URL = 'https://api-zawa.azickri.com';
const headers = {
'id': 'YOUR_ID',
'session-id': 'YOUR_SESSION_ID',
};
async function getAllChannelMessages(channelId) {
const messages = [];
let before = '';
do {
const params = new URLSearchParams({ channelId });
if (before) params.set('before', before);
const response = await fetch(`${BASE_URL}/channel/message?${params}`, { headers });
const data = await response.json();
if (!response.ok) throw new Error(data.message);
messages.push(...data.docs);
before = String(data.before);
} while (before !== '0');
return messages;
}
const messages = await getAllChannelMessages('120363000000000000@newsletter');
console.log(`Total ${messages.length} pesan`);Nggak perlu ambil semuanya
Channel yang udah lama bisa punya ribuan pesan. Kalau cuma butuh yang terbaru, cukup ambil halaman pertama aja.