Menarik Log Pengiriman Webhook
Endpoint ini mengembalikan data historis pengiriman webhook dari Kirem ke server tujuan Anda. Gunakan untuk memantau keberhasilan pengiriman, mendiagnosis kegagalan, dan memastikan integritas data yang diterima.
🛜 Endpoint
GET /v1/analytics/webhooks
📋 Query Parameters
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
is_success |
Boolean | Tidak | Filter status sukses (true atau false) |
status_code |
Integer | Tidak | Filter kode HTTP respons server Anda |
limit |
Integer | Tidak | Jumlah maksimal log (default: 100) |
offset |
Integer | Tidak | Offset untuk paginasi (default: 0) |
🚦 Contoh cURL Request
Webhook yang gagal terkirim
curl -X GET "https://api.kirem.co/v1/analytics/webhooks?is_success=false&limit=5" \
-H "Authorization: Bearer kirem_live_xxx"
Webhook dengan kode status 500
curl -X GET "https://api.kirem.co/v1/analytics/webhooks?status_code=500&limit=10" \
-H "Authorization: Bearer kirem_live_xxx"
Semua webhook dalam 50 catatan terakhir
curl -X GET "https://api.kirem.co/v1/analytics/webhooks?limit=50&offset=0" \
-H "Authorization: Bearer kirem_live_xxx"
✅ Respons Sukses (200 OK)
{
"status": 200,
"message": "Webhook logs retrieved successfully",
"data": {
"total": 1,
"limit": 5,
"offset": 0,
"logs": [
{
"id": "del-889922",
"url": "https://api.contohanda.com/webhooks/kirem",
"payload": "{\"event\":\"messages.received\",...}",
"response_headers": "Content-Type: application/json\r\n...",
"response_body": "Internal Server Error",
"status_code": 500,
"duration_ms": 245,
"is_success": false,
"error_log": "HTTP status 500",
"retry_count": 2,
"created_at": "2026-06-26T00:15:30Z"
}
]
}
}
📊 Penjelasan Field Log
| Field | Keterangan |
|---|---|
id |
ID internal log pengiriman di sistem Kirem |
url |
URL tujuan pengiriman webhook (destination URL) |
payload |
Isi payload JSON yang dikirimkan ke server Anda |
response_headers |
Header HTTP yang dikembalikan server Anda |
response_body |
Isi body respons dari server Anda |
status_code |
Kode status HTTP yang dikembalikan server Anda |
duration_ms |
Durasi pengiriman dalam milidetik |
is_success |
true jika server membalas HTTP 2xx, false jika gagal |
error_log |
Pesan error jika pengiriman gagal |
retry_count |
Jumlah percobaan ulang (retry) yang telah dilakukan |
created_at |
Timestamp pengiriman dalam format ISO 8601 |
🔍 Menggunakan Endpoint untuk Debugging
Skenario 1: Server Anda sering return 500
# Cari tahu payload apa yang menyebabkan error
curl -X GET "https://api.kirem.co/v1/analytics/webhooks?status_code=500&limit=10" \
-H "Authorization: Bearer kirem_live_xxx"
Periksa field payload dan response_body untuk memahami data yang dikirim dan bagaimana server Anda meresponsnya.
Skenario 2: Webhook tidak sampai ke server Anda
# Lihat semua pengiriman yang gagal
curl -X GET "https://api.kirem.co/v1/analytics/webhooks?is_success=false&limit=20" \
-H "Authorization: Bearer kirem_live_xxx"
Periksa field error_log untuk mengetahui penyebab kegagalan (timeout, koneksi ditolak, DNS error, dll.).
Skenario 3: Memantau latensi pengiriman
Perhatikan field duration_ms untuk mengidentifikasi webhook yang lambat. Jika durasi secara konsisten tinggi, pertimbangkan untuk mengoptimalkan endpoint server Anda.
📄 Paginasi
Gunakan limit dan offset untuk menavigasi hasil:
# Halaman 1: 50 catatan pertama
GET /v1/analytics/webhooks?limit=50&offset=0
# Halaman 2
GET /v1/analytics/webhooks?limit=50&offset=50
🚦 Contoh Kode (Node.js)
const axios = require('axios');
axios.get('https://api.kirem.co/v1/analytics/webhooks', {
headers: { 'Authorization': 'Bearer kirem_live_xxx' },
params: {
is_success: false,
limit: 10
}
}).then(res => {
const { total, logs } = res.data.data;
console.log(`Total webhook gagal: ${total}`);
logs.forEach(log => {
console.log(`${log.url} — HTTP ${log.status_code} (${log.duration_ms}ms)`);
});
});
🚦 Contoh Kode (Go)
package main
import (
"fmt"
"net/http"
)
func main() {
url := "https://api.kirem.co/v1/analytics/webhooks?is_success=false&limit=10"
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/webhooks?is_success=false&limit=10');
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 gagal: " . $data['data']['total'] . "\n";
foreach ($data['data']['logs'] as $log) {
echo "{$log['url']} — HTTP {$log['status_code']} ({$log['duration_ms']}ms)\n";
}
⚠️ Catatan Penting
- Log webhook disimpan dalam jangka waktu tertentu sesuai kebijakan retensi Kirem.
is_success=truemenandakan server Anda merespons dengan kode HTTP 2xx. Perhatikan bahwa ini hanya memvalidasi pengiriman, bukan apakah server Anda memproses data dengan benar.- Kirem akan melakukan retry otomatis jika pengiriman webhook gagal. Jumlah retry dapat dipantau melalui field
retry_count. - Gunakan endpoint ini bersamaan dengan Log Riwayat Pesan untuk analisis pengiriman yang komprehensif.