Skip to main content
Version: 1.0

Inspecting Webhook Logs

Logs describe Hub's delivery attempt and the receiver's acknowledgement, not the outcome of later worker processing.

curl 'https://app.chatt2.me/v1/organization/webhook/WEBHOOK_UUID/webhook-log?offset=0&limit=20&status=Error' \
-H 'x-api-key: YOUR_APPLICATION_API_KEY'

offset is a zero-based page index (offset × limit records skipped); limit defaults to 20 and accepts 1–50. Optional status is Success or Error. Continue through pagination.totalPages; an empty page has data: [].

{
"data": [
{
"id": "b2c3d4e5-f6a7-4901-bcde-f23456789012",
"webhookId": "a1b2c3d4-e5f6-4890-abcd-ef1234567890",
"statusCode": null,
"responseBody": "timeout of 30000ms exceeded",
"requestBody": "{\"eventType\":\"message_status\",\"timestamp\":\"2026-10-06T12:00:00.000Z\",\"status\":\"delivered\"}",
"responseTimeMs": 30000,
"status": "Error",
"sendAt": "2026-10-06T12:00:00.000Z",
"createdDate": "2026-10-06T12:00:30.000Z",
"isDeleted": false,
"messageId": null,
"parentWebhookLogId": null,
"resolved": false,
"canRetry": true,
"canRetryBulk": true,
"webhook": {"id": "a1b2c3d4-e5f6-4890-abcd-ef1234567890", "endpoint": "https://your-server.example/webhooks/chatt2me"}
}
],
"pagination": {"offset": 0, "limit": 20, "total": 1, "totalPages": 1}
}
FieldMeaning
id, webhookIdLog and webhook UUIDs
statusCodeReceiver HTTP status, or null if no HTTP response; never assume 0
responseBodyStored response/error text, string or null
requestBodyStored outbound JSON string or null, not a parsed object; may be truncated
responseTimeMsLatency in milliseconds or null when unavailable
statusSuccess or Error (legacy values may be null)
sendAtAttempt time or null; createdDate is log creation time
messageIdRelated Hub message ID or null
parentWebhookLogIdPrevious attempt ID for a retry, otherwise null
resolvedThis failed attempt has a successful descendant retry
canRetryCurrently eligible for a single retry; concurrent attempts can still reject it
canRetryBulkEligible for bulk event retry; false for validation
webhookOptional nested ID and endpoint; no eventType

A successful event log can have statusCode: 202, responseBody: "Accepted", and canRetry: false. A failed validation log has requestBody: null, messageId: null, canRetryBulk: false; its response can be a 2xx response lacking the token. Stored log text is bounded, so a truncated event body may not be replayable. Parse requestBody separately only when it is a complete JSON string.

Diagnosing failures​

ResultCheck
statusCode: nullDNS, TLS, connection, firewall or timeout; timeout can occur after connection
401Receiver custom header, authorization or HMAC secret
404Receiver route/path
429, 5xxReceiver capacity, storage and availability
Validation 2xx with ErrorResponse must contain X-Validation-Token

Event delivery timeout is 30 seconds; validation timeout is 10 seconds. A 2xx event acknowledgement is success even if subsequent business processing fails. Persist/enqueue durably before acknowledgement and monitor your worker separately.

Counters and retry history​

Read the webhook with GET /v1/organization/webhook/WEBHOOK_UUID to inspect active, verification and performance. numberOfErrors is not the total number of failed logs: an initial failure can coexist with zero. Use filtered logs, resolved, retry chains and avgResponseTimeMs for diagnosis, rather than deriving a failure count from that counter.

See retry eligibility and errors.