BetaThe V4 API is in beta — endpoints and functionality may change.
Webhook Logsv2

List webhook logs

GET/webhooks/{webhookId}/logs

List delivery logs for a specific webhook.

Path parameters

webhookIdRequiredstring

Unique identifier of the webhook subscription, prefixed with wh_ (e.g. wh_abc123def456). Returned when you create or list webhooks.

Headers

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer

Query parameters

limitoptionalinteger

Maximum number of items to return in a single response. Must be between 1 and 200; defaults to 50. Use together with offset to page through large result sets.

offsetoptionalinteger

Number of items to skip before returning results. Combine with limit for page-based pagination (e.g. offset=50&limit=50 returns the second page). Defaults to 0.

sortoptionalstring

Sort order by attempted time

"asc""desc"
statusoptionalinteger

Filter by exact HTTP status code

min_statusoptionalinteger

Minimum HTTP status code

max_statusoptionalinteger

Maximum HTTP status code

Returns

logsoptionalWebhookLog[]

Array of WebhookLog

event_idoptionalstring
scopeoptionalstring
"api""integration""org"
attempted_timeoptionalinteger
response_received_atoptionalinteger | null
webhook_urloptionalstring
event_bodyoptionalWebhookEventPayload

Webhook event payload. Structure varies by event type. All message events include group information when applicable.

eventoptionalstring

Event type (e.g., message.received, message.sent, message.delivered, message.failed, message.read)

message_idoptionalstring

Unique message identifier

external_idoptionalstring

Recipient identifier (phone number, email, or group ID)

statusoptionalstring

Message status

"queued""pending""sent""delivered""failed""read""received"
protocoloptionalstring

Message protocol

"imessage""sms""rcs""non-imessage"
timestampoptionalinteger

Event timestamp in milliseconds

internal_idoptionalstring | null

Phone number that sent/received the message

textoptionalstring | null

Message text content

attachmentsoptionalobject[]

Array of attachment objects

Array of object

urloptionalstring
nameoptionalstring | null
is_groupoptionalboolean

Whether this message is from/to a group chat. Always present.

group_idoptionalstring | null

Group ID (only present when is_group=true)

group_nameoptionalstring | null

Group display name (only present when is_group=true)

participantsoptionalobject[]

Array of group participants (only present when is_group=true)

Array of object

contact_idoptionalstring
identifieroptionalstring
nameoptionalstring | null
senderoptionalstring | null

Sender identifier (for inbound messages)

sent_atoptionalinteger | null

Timestamp when message was sent (for message.sent events)

delivered_atoptionalinteger | null

Timestamp when message was delivered (for message.delivered events)

read_atoptionalinteger | null

Timestamp when message was read (for message.read events)

error_codeoptionalstring | null

Error code (for message.failed events)

error_messageoptionalstring | null

Error description (for message.failed events)

response_statusoptionalinteger | null

HTTP status code received from the webhook endpoint

response_jsonoptionalobject | null

Response body from the webhook endpoint (if JSON)

metadataoptionalobject

Additional metadata about the webhook delivery

organization_idoptionalstring
event_nameoptionalstring
message_idoptionalstring
is_replayoptionalboolean
original_event_idoptionalstring
duration_msoptionalinteger
paginationoptionalobject
totaloptionalinteger

Total number of matching logs

limitoptionalinteger
offsetoptionalinteger
returnedoptionalinteger

Number of logs returned in this response

has_moreoptionalboolean

Whether there are more logs to fetch

Response codes

200List of webhook logs
401Authentication required or invalid
404Resource not found

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
curl -X GET https://api.blooio.com/v2/api/webhooks/wh_abc123def456/logs?limit=50&offset=0&sort=desc&status=0&min_status=0&max_status=0 \  -H "Authorization: Bearer bl_live_..."
Response objectexample
{  "logs": [    {      "event_id": "evt_a1b2c3d4",      "scope": "api",      "attempted_time": 0,      "response_received_at": 0,      "webhook_url": "https://example.com",      "event_body": {        "event": "message.sent",        "message_id": "msg_a1b2c3d4",        "external_id": "obj_a1b2c3d4",        "status": "queued",        "protocol": "imessage",        "timestamp": 0,        "internal_id": "obj_a1b2c3d4",        "text": "Hello from Blooio!",        "attachments": [          {            "url": "https://example.com",            "name": "Jane Doe"          }        ],        "is_group": true,        "group_id": "grp_a1b2c3d4",        "group_name": "string",        "participants": [          {            "contact_id": "ct_a1b2c3d4",            "identifier": "+15551234567",            "name": "Jane Doe"          }        ],        "sender": "string",        "sent_at": 0,        "delivered_at": 0,        "read_at": 0,        "error_code": "string",        "error_message": "string"      },      "response_status": 0,      "response_json": {},      "metadata": {        "organization_id": "org_a1b2c3d4",        "event_name": "string",        "message_id": "msg_a1b2c3d4",        "is_replay": true,        "original_event_id": "obj_a1b2c3d4",        "duration_ms": 1200      }    }  ],  "pagination": {    "total": 3,    "limit": 50,    "offset": 1,    "returned": 0,    "has_more": true  }}