Skip to main content
Every request that hits your webhook URL is captured automatically — no configuration required beyond generating your endpoints. The full request envelope is stored and made available through the /logs API immediately after capture, so you can inspect exactly what your webhook provider sent.

What gets captured

Each captured event includes:

Sending requests to your webhook URL

Use any HTTP method. The path is:
Replace :id with your active webhook ID (for example, wh_demo123).

Overriding the response status per request

Add __status as a query parameter to force a specific HTTP status code for that request only. This is useful for testing how your client handles error responses without changing the global defaultResponseCode setting.

Querying captured events

List events: GET /logs

Use /logs to search and filter captured events. All parameters are optional.
Common filter examples:
Range filters use bracket notation: field[gte], field[lte], field[gt], field[lt]. Body, header, and query filters support both free-text substring search and keyed access like body[data.id]=evt_123. Response:

Get a single event: GET /logs/:logId

Returns the full event record including headers, query, body, response headers, and response body.

Get the raw payload: GET /logs/:logId/payload

Returns the original stored payload with its original Content-Type. If the payload was offloaded to storage due to its size, it is hydrated on demand.

JSON parsing

When enableJSONParsing is enabled (the default), application/json request bodies are automatically parsed into structured objects before storage. This lets you use keyed filters like body[event]=payment.success in /logs queries. Without this setting, the body is stored as a raw string and only substring search is available.

Large payload handling

The maxPayloadSize setting controls the maximum accepted body size in bytes. Requests that exceed this limit are rejected with 413 Payload Too Large. For payloads that are within the accepted limit but still large, the runtime offloads the payload content to Key-Value Store rather than keeping it inline. The event remains fully queryable through /logs, and the payload is hydrated when you call GET /logs/:logId/payload.

Capture settings reference

integer
default:"3"
Number of unique webhook endpoints to generate for this run. Accepted range: 1–50.
integer
default:"24"
How long generated webhook URLs stay active, in hours. Accepted range: 1–168. After expiry, the webhook stops accepting traffic and its logs are removed from /logs during the next cleanup cycle (up to 10 minutes later). Logs already pushed to the dataset are retained independently.
integer
default:"10485760"
Maximum request body size in bytes. Requests exceeding this are rejected with 413. Values above 100 MB are clamped. Default is 10 MB.
boolean
default:"true"
When enabled, application/json bodies are parsed into structured objects for keyed search in /logs. When disabled, the body is stored as a raw string.