List Messages
Fetch a paginated list of messages for your workspace. All filter parameters are optional.| Parameter | Type | Description |
|---|---|---|
limit | integer | Records per page. Default 1000, max 1000. |
after | string | Opaque cursor for the next page. Pass the meta.after value from a previous response. |
before | string | Opaque cursor for the previous page. Pass the meta.before value from a previous response. |
message_id | string | Filter by a specific message id. |
idempotency_key | string | Filter by the idempotency key associated with the message at trigger time. |
recipient_id | array of string | Filter by one or more recipient distinct_ids. Multiple values are OR-ed. |
tenant_id | string | Filter messages belonging to a specific tenant. |
object_type | string | Filter messages sent to an object. Must be provided together with object_id. |
object_id | string | Filter messages sent to an object. Must be provided together with object_type. |
workflow_slug | string | Filter messages triggered from a specific workflow. |
execution_id | string | Filter by workflow execution id (matches wf_exec_id or broadcast_id). |
channel | string | Filter by delivery channel. Valid values: email, sms, whatsapp, androidpush, iospush, webpush, slack, ms_teams. |
status | array of string | Filter by one or more derived statuses. Multiple values are OR-ed. Valid values: triggered, delivered, delivery_failed, seen, clicked, dismissed, read, unread, archived. |
category | array of string | Filter by one or more notification categories. Multiple values are OR-ed. |
is_campaign | boolean | Set True to return only messages sent as part of a broadcast/campaign. |
created_at_gte | string (RFC3339) | Inclusive lower bound on created_at. Example: "2026-01-01T00:00:00Z". |
created_at_lte | string (RFC3339) | Inclusive upper bound on created_at. Must be >= created_at_gte when both are set. |
Bulk Update Message Status
Update the status of one or more messages in a single call.| Action | Description | Applicable Channels |
|---|---|---|
seen | Mark the message as viewed/opened by the user. | All channels |
clicked | Mark the message as clicked by the user. | All channels |
dismissed | Mark the push notification as dismissed by the user (for example, swiped away from the notification tray). | androidpush, iospush |
read | Mark the inbox message as read. Doesn’t change the message status on update, instead sets is_read flag and read_at timestamp. | inbox only |
unread | Revert a previously read inbox message back to unread. Doesn’t change the message status on update, instead unsets is_read flag and record unread_at timestamp. | inbox only |
archived | Move the inbox message to the archive. Doesn’t change the message status on update, instead sets is_archived flag and marks archived_at timestamp. | inbox only |
unarchived | Restore a previously archived inbox message back to the active list. Doesn’t change the message status on update, instead unsets is_archived flag and record unarchived_at timestamp. | inbox only |