Documentation Index
Fetch the complete documentation index at: https://supahooks.ar27111994.dev/llms.txt
Use this file to discover all available pages before exploring further.
GET /logs queries the DuckDB read model for captured webhook events. You can filter by almost any field, paginate with offsets or cursors, sort by multiple columns, and request sparse field sets. Two sub-endpoints let you fetch a single event by ID or retrieve its raw payload.
Authentication: Required when authKey is configured.
Query parameters
Exact log ID filter.
Exact webhook ID filter.
Partial match against the stored request URL.
Exact HTTP method, normalized to uppercase (e.g.
POST, GET).Exact status code or range syntax. Example:
statusCode[gte]=400.Partial match against the stored content type.
Exact request ID filter.
Exact IP address or CIDR block.
Partial match against the user agent string.
Filter by signature verification result (
true or false).Exact signature provider name (e.g.
stripe, github).Exact or ranged server-side processing time in milliseconds. Excludes any configured
responseDelayMs. Example: processingTime[lt]=1000.Exact or ranged payload size in bytes. Example:
size[gte]=1024.Exact or ranged ISO 8601 timestamp. Example:
timestamp[lte]=2026-01-30T12:00:00.000Z.Convenience lower bound for timestamp filtering. Equivalent to
timestamp[gte].Convenience upper bound for timestamp filtering. Equivalent to
timestamp[lte].Substring search over serialized headers, or keyed JSON filtering. Example:
headers[x-request-id]=abc.Substring search over query string JSON, or keyed filtering. Example:
query[page]=2.Substring search over body JSON, or keyed filtering. Example:
body[event]=payment.success. Nested paths use dot notation: body[data.id]=evt_123.Substring search over response header JSON, or keyed filtering.
Substring search over response body JSON, or keyed filtering.
Maximum number of results to return. Invalid values are clamped to a minimum of
1.Zero-based offset for traditional pagination.
Cursor for keyset pagination. When present, takes precedence over
offset. Use the nextCursor value from a previous response.Comma-separated sort rules. Example:
timestamp:desc,method:asc.Filter syntax
Range filters use bracket notation:gte, gt, lte, lt.
Keyed JSON filters match a specific field inside a stored JSON column:
Supported sort fields
id, statusCode, method, size, timestamp, remoteIp, processingTime, webhookId, userAgent, requestUrl, contentType, requestId, signatureValid, signatureProvider, signatureError
Offset pagination response
Cursor pagination
When you pass acursor value, the response returns nextCursor and nextPageUrl instead of total and nextOffset. Cursor pagination is more efficient for large datasets because it avoids a full COUNT(*) query.
GET /logs/:logId
Returns a single log entry by ID. Authentication: Required whenauthKey is configured.
Query parameters
Optional comma-separated list of fields to include in the response for a sparse result. If you request sparse fields, the handler still fetches
webhookId internally for security validation and strips it from the response if you did not explicitly request it.Response example
If the webhook associated with this log has expired or is no longer valid, the route returns
404 even when the log row still exists in DuckDB.GET /logs/:logId/payload
Returns the original payload for a log entry. If the payload was offloaded to Apify KVS due to its size, this route hydrates it on demand. Authentication: Required whenauthKey is configured.
The response Content-Type mirrors the original captured content type when available. The route returns:
- JSON when the stored payload is an object
- Raw text when the stored payload is scalar text
- Raw binary when the hydrated KVS value is a
Buffer