Webhook Tester API

Create a unique URL that captures every HTTP request sent to it – method, headers, query and body – then inspect them in the browser or via API.

GETPOSTDELETEPATCHhttps://apibox.io.vn/v1/webhooks

The Webhook Tester gives you disposable endpoints (“bins”) to debug webhooks and HTTP callbacks. POST /v1/webhooks creates a bin and returns its receiving URL, https://apibox.io.vn/hook/<id>, plus a link to the live viewer. Point Stripe, GitHub, a payment gateway or your own service at that URL: it accepts any HTTP method and any sub-path, and stores the method, path, query string, headers, client IP, country and the body (up to 256 KB; binary bodies are stored as base64).

Read captured requests with GET /v1/webhooks/<id>/requests (newest first, limit 1–100, default 20). Pass since (ISO date or Unix seconds) to poll only for new requests. GET /v1/webhooks lists your active bins, PATCH /v1/webhooks/<id> changes the canned response the receiver sends back (response_status, response_body, response_content_type, name) so you can simulate errors and retries, DELETE /v1/webhooks/<id>/requests clears the history and DELETE /v1/webhooks/<id> removes the bin.

Bins created with an API key live 30 days. Each bin keeps its newest requests according to your plan – Free 50, Starter 500, Pro 2,000 – and you can have 2, 10 or 50 active bins on Free, Starter and Pro. The receiver accepts up to 60 requests per minute per bin.

Parameters

NameInTypeRequiredDefault
idpathstringnoBin ID for /v1/webhooks/{id} (GET, PATCH, DELETE) and /v1/webhooks/{id}/requests[/{request_id}] (GET, DELETE).
namebodystringnoPOST / PATCH: label of the bin (max 100 characters).
response_statusbodynumberno200POST / PATCH: HTTP status the receiver answers with (100–599).
response_bodybodystringno{"ok":true}POST / PATCH: response body (max 10,000 characters).
response_content_typebodystringnoapplication/jsonPOST / PATCH: Content-Type of the response.
limitquerynumberno20GET …/requests: number of requests returned (1–100), newest first.
sincequerystringnoGET …/requests: only requests received after this ISO date or Unix timestamp (seconds).

Example

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}"}'

Response

{
  "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"
}

Use cases

  • Inspect the exact payload and signature headers a webhook provider sends
  • Debug payment gateway callbacks (IPN) before your backend is deployed
  • Simulate 500 errors or slow consumers to test a provider’s retry logic
  • Assert in end-to-end tests that your app fired the expected HTTP call

FAQ

How do I test a webhook without a public server?

Create a bin (POST /v1/webhooks, or use the online Webhook Tester), paste its https://apibox.io.vn/hook/<id> URL into the provider’s dashboard and trigger an event. The request appears in the viewer within seconds.

Can I change the response the webhook URL returns?

Yes. PATCH /v1/webhooks/<id> with response_status (100–599), response_body (up to 10,000 characters) and response_content_type. The default is 200 with {"ok":true}.

How long are captured requests kept?

Bins created via the API live 30 days and keep their newest 50 / 500 / 2,000 requests depending on your plan (Free / Starter / Pro). Older requests are removed automatically.

Related APIs

Start with 1,000 free requests every month. Get free API key →