Menarik Log Riwayat Pesan
Endpoint ini mengembalikan data historis pengiriman dan penerimaan pesan WhatsApp. Gunakan untuk rekonsiliasi data, audit kepatuhan, atau membangun dasbor monitoring kustom di sistem Anda.
🛜 Endpoint
GET /v1/analytics/messages
📋 Query Parameters
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
status |
String | Tidak | Filter berdasarkan status pesan |
direction |
String | Tidak | Filter arah pesan |
type |
String | Tidak | Filter jenis pesan |
recipient |
String | Tidak | Filter nomor penerima |
limit |
Integer | Tidak | Jumlah maksimal log (default: 100) |
offset |
Integer | Tidak | Offset untuk paginasi (default: 0) |
📊 Nilai Query Parameter
status — Status Pesan
| Nilai | Keterangan |
|---|---|
sent |
Pesan telah terkirim ke server WhatsApp |
delivered |
Pesan telah sampai ke perangkat penerima |
read |
Pesan telah dibaca oleh penerima |
failed |
Pengiriman pesan gagal |
direction — Arah Pesan
| Nilai | Keterangan |
|---|---|
inbound |
Pesan masuk dari pelanggan ke bisnis |
outbound |
Pesan keluar dari bisnis ke pelanggan |
type — Jenis Pesan
text, image, video, audio, document, template, interactive, location, contacts
🚦 Contoh cURL Request
Semua pesan gagal
curl -X GET "https://api.kirem.co/v1/analytics/messages?status=failed&limit=10" \
-H "Authorization: Bearer kirem_live_xxx"
Pesan keluar ke nomor tertentu
curl -X GET "https://api.kirem.co/v1/analytics/messages?direction=outbound&recipient=62812345678&limit=20" \
-H "Authorization: Bearer kirem_live_xxx"
Pesan masuk dalam 50 catatan terakhir
curl -X GET "https://api.kirem.co/v1/analytics/messages?direction=inbound&limit=50&offset=0" \
-H "Authorization: Bearer kirem_live_xxx"
✅ Respons Sukses (200 OK)
{
"status": 200,
"message": "Message logs retrieved successfully",
"data": {
"total": 1,
"limit": 10,
"offset": 0,
"logs": [
{
"id": "msg-12345",
"message_id": "wamid.HBgLNjI4MTIzND...",
"recipient": "62812345678",
"direction": "outbound",
"type": "template",
"status": "failed",
"error_message": "(#131026) Message Undeliverable",
"created_at": "2026-06-26T00:20:00Z"
}
]
}
}
📊 Penjelasan Field Log
| Field | Keterangan |
|---|---|
id |
ID internal log di sistem Kirem |
message_id |
WAID unik dari WhatsApp (awalan wamid.) |
recipient |
Nomor telepon penerima (format internasional) |
direction |
Arah pesan: inbound atau outbound |
type |
Jenis pesan: text, image, template, dll. |
status |
Status terkini: sent, delivered, read, failed |
error_message |
Pesan error jika status failed, null jika berhasil |
created_at |
Timestamp saat pesan dicatat dalam format ISO 8601 |
📄 Paginasi
Gunakan limit dan offset untuk menavigasi hasil yang banyak:
# Halaman 1: 50 catatan pertama
GET /v1/analytics/messages?limit=50&offset=0
# Halaman 2: 50 catatan berikutnya
GET /v1/analytics/messages?limit=50&offset=50
# Halaman 3
GET /v1/analytics/messages?limit=50&offset=100
data.total: Jumlah total catatan yang cocok dengan filterdata.limit: Batas jumlah catatan per halamandata.offset: Posisi awal halaman saat ini
🚦 Contoh Kode (Node.js)
const axios = require('axios');
axios.get('https://api.kirem.co/v1/analytics/messages', {
headers: { 'Authorization': 'Bearer kirem_live_xxx' },
params: {
status: 'failed',
direction: 'outbound',
limit: 20
}
}).then(res => {
console.log(`Total: ${res.data.data.total}`);
console.log(`Logs: ${res.data.data.logs.length}`);
console.log(res.data.data.logs);
});
🚦 Contoh Kode (Go)
package main
import (
"fmt"
"net/http"
)
func main() {
url := "https://api.kirem.co/v1/analytics/messages?status=failed&limit=20"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer kirem_live_xxx")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
🚦 Contoh Kode (PHP)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.kirem.co/v1/analytics/messages?status=failed&limit=20');
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer kirem_live_xxx']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo "Total: " . $data['data']['total'] . "\n";
print_r($data['data']['logs']);
⚠️ Catatan Penting
- Filter dapat dikombinasikan. Misalnya:
?status=failed&direction=outbound&limit=20untuk melihat semua pesan keluar yang gagal. - Data log disimpan dalam jangka waktu tertentu sesuai kebijakan retensi Kirem.
- Gunakan
message_iduntuk melacak status pengantaran individual pesan melalui webhook callback.