Skip to content

Getting Started

Capture Your First Webhook

Create a temporary webhook endpoint, send a synthetic cURL request and inspect its body, headers and query parameters. No account or local server required.

On this page

1. Create an endpoint

Create a temporary public URL, send an HTTP request, and inspect the result in WebhookKit. You don’t need a local server or an account to get started. Use a browser and a Bash-compatible shell with cURL installed.

  1. Select Start debugging in the header, or use the button below.
  2. A temporary webhook endpoint opens in its workspace. Complete a verification challenge if one appears; if creation is restricted, wait before trying again.
  3. Copy Webhook URL from the endpoint view.

The public receiving URL accepts deliveries. The workspace URL opens the inspector in your browser. Copy Webhook URL in the workspace for your sender; do not send to the browser address. A receiving token or workspace UUID alone does not grant history or management access.

2. Send a test request

In a Bash-compatible shell with cURL installed, set WEBHOOK_URL to the receiving URL copied from your endpoint. Replace <YOUR_RECEIVING_URL> including the angle brackets, without a trailing slash; keep the single quotes. Reuse that variable for the examples on this page.

Bash / cURL
WEBHOOK_URL='<YOUR_RECEIVING_URL>'

curl -i --request POST "${WEBHOOK_URL}/orders?source=docs" \
  --header 'Content-Type: application/json' \
  --header 'X-Demo-Event: order.created' \
  --data '{"event":"order.created","order":{"id":"order_demo_001","status":"created"}}'

The command sends one POST to /orders?source=docs. A fresh endpoint returns HTTP 200 with an empty response body. Leave the workspace open to see the captured request.

3. Inspect the request

  1. Select the POST request with path /orders.
  2. Open Body. Expect this JSON:
JSON
{
  "event": "order.created",
  "order": {
    "id": "order_demo_001",
    "status": "created"
  }
}

Open Headers and find X-Demo-Event: order.created; names may appear lowercase. In Query, expect source=docs. In Overview, check the receive time, method, path, body size and response status. Raw shows a reconstructed capture rather than original wire formatting.

A saved custom 4xx or 5xx response can accompany a successful capture. If a sender reports a timeout or service error, check history before resending: persistence may already have succeeded and a resend can create a duplicate.

Choose your next step

Endpoints are temporary, and body size is bounded. Read current usage limits and expiration rules before sending larger traffic; oversized bodies are rejected without capture. Signing in alone does not extend an endpoint. Use synthetic data; read the privacy and security guidance before sharing a receiving URL.

Next, configure a response, explore inspection and filtering, or connect Stripe or GitHub. If nothing appeared, follow missing-request diagnosis.