Webhook Tester API
Tạo một URL riêng ghi lại mọi request HTTP gửi tới nó – method, header, query, body – rồi xem trực tiếp trên trình duyệt hoặc qua API.
Webhook Tester cung cấp các endpoint tạm ("bin") để debug webhook và HTTP callback. POST /v1/webhooks tạo một bin và trả về URL nhận request https://apibox.io.vn/hook/<id> kèm link trang xem trực tiếp. Cấu hình Stripe, GitHub, cổng thanh toán hay dịch vụ của bạn gửi về URL đó: URL chấp nhận mọi method HTTP và mọi đường dẫn con, ghi lại method, path, query string, header, IP và quốc gia của bên gửi cùng body (tối đa 256 KB; body nhị phân được lưu dạng base64).
Xem các request đã bắt bằng GET /v1/webhooks/<id>/requests (mới nhất trước, limit 1–100, mặc định 20). Truyền since (ngày ISO hoặc Unix giây) để chỉ lấy request mới khi polling. GET /v1/webhooks liệt kê các bin đang hoạt động, PATCH /v1/webhooks/<id> đổi phản hồi mà URL nhận trả về (response_status, response_body, response_content_type, name) để giả lập lỗi và cơ chế retry, DELETE /v1/webhooks/<id>/requests xoá lịch sử và DELETE /v1/webhooks/<id> xoá bin.
Bin tạo bằng API key tồn tại 30 ngày. Mỗi bin giữ các request mới nhất theo gói – Free 50, Starter 500, Pro 2.000 – và bạn có tối đa 2, 10 hoặc 50 bin hoạt động với gói Free, Starter, Pro. URL nhận chấp nhận tối đa 60 request mỗi phút cho mỗi bin.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
id | path | string | không | ID của bin cho /v1/webhooks/{id} (GET, PATCH, DELETE) và /v1/webhooks/{id}/requests[/{request_id}] (GET, DELETE). | |
name | body | string | không | POST / PATCH: tên gợi nhớ của bin (tối đa 100 ký tự). | |
response_status | body | number | không | 200 | POST / PATCH: mã HTTP mà URL nhận trả về (100–599). |
response_body | body | string | không | {"ok":true} | POST / PATCH: nội dung phản hồi (tối đa 10.000 ký tự). |
response_content_type | body | string | không | application/json | POST / PATCH: Content-Type của phản hồi. |
limit | query | number | không | 20 | GET …/requests: số request trả về (1–100), mới nhất trước. |
since | query | string | không | GET …/requests: chỉ lấy request nhận sau ngày ISO hoặc Unix timestamp (giây) này. |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Stripe test","response_status":200,"response_body":"{\"received\":true}"}'const res = await fetch('https://apibox.io.vn/v1/webhooks', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"name": "Stripe test",
"response_status": 200,
"response_body": "{\"received\":true}"
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/webhooks",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"name": "Stripe test", "response_status": 200, "response_body": "{\"received\":true}"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/webhooks');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"name":"Stripe test","response_status":200,"response_body":"{\\"received\\":true}"}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"id": "adovzlj3btginkapev4iir",
"name": "Stripe test",
"url": "https://apibox.io.vn/hook/adovzlj3btginkapev4iir",
"viewer_url": "https://apibox.io.vn/tools/webhook-tester/#adovzlj3btginkapev4iir",
"response": {
"status": 200,
"content_type": "application/json",
"body": "{\"received\":true}"
},
"request_count": 0,
"created_at": "2026-11-10T05:09:53.000Z",
"expires_at": "2026-12-10T05:09:53.000Z"
}
Ứng dụng
- Xem chính xác payload và header chữ ký mà nhà cung cấp webhook gửi
- Debug callback (IPN) của cổng thanh toán trước khi deploy backend
- Giả lập lỗi 500 hoặc phản hồi chậm để kiểm tra cơ chế retry
- Kiểm tra trong test end-to-end rằng ứng dụng đã gọi đúng request HTTP
Hỏi đáp
Test webhook khi chưa có server public thế nào?
Tạo một bin (POST /v1/webhooks, hoặc dùng công cụ Webhook Tester online), dán URL https://apibox.io.vn/hook/<id> vào trang cấu hình của nhà cung cấp rồi kích hoạt một sự kiện. Request sẽ hiện trên trang xem chỉ sau vài giây.
Có đổi được phản hồi mà URL webhook trả về không?
Được. Gọi PATCH /v1/webhooks/<id> với response_status (100–599), response_body (tối đa 10.000 ký tự) và response_content_type. Mặc định là 200 với {"ok":true}.
Request đã bắt được lưu bao lâu?
Bin tạo qua API tồn tại 30 ngày và giữ 50 / 500 / 2.000 request mới nhất tuỳ gói (Free / Starter / Pro). Request cũ hơn được tự động xoá.
API liên quan
Dữ liệu giả tiếng Việt
Dữ liệu test tiếng Việt như thật: họ tên, địa chỉ theo bản đồ hành chính 2025, số di động theo nhà mạng, CCCD và MST đúng cấu trúc, công ty, tài khoản ngân hàng.
{?}Dữ liệu mẫu từ JSON Schema
Sinh JSON mẫu như thật từ JSON Schema (kiểu, format, enum, pattern, khoảng giá trị, $ref, oneOf / allOf), có kiểm tra lại theo schema.
◧So sánh hai ảnh
So sánh hai ảnh theo từng điểm ảnh (khoảng cách màu theo cảm nhận, bỏ qua khử răng cưa) và cho biết tỷ lệ điểm ảnh thay đổi, vùng thay đổi và ảnh khác biệt được tô màu.