kirem.coDokumentasi API
Dokumentasi/Analytics/Menarik Log Pengiriman Webhook
Analytics

Menarik Log Pengiriman Webhook

Ringkasan Teknis (TL;DR)

Memantau status pengiriman webhook dari Kirem ke server tujuan via API GET /v1/analytics/webhooks.

#analytics#webhooks#logs#delivery

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=true menandakan 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.

Butuh bantuan integrasi lanjutan?

Hubungi tim developer Kirem melalui tiket bantuan.

Buka Tiket Bantuan