Skip to main content
GET
List the events feed
  • Credential: an account API key. A trial key returns 401 unauthorized.
  • Line-scoped keys: the list of a line-scoped key is not applied here: the key reads the events of every line of the account, message content included.
  • Idempotency-Key: not needed: the operation changes nothing. See Retrying safely.
  • Events: none. The operation lists events: it replays nothing.
  • Personal data: each item is a full event, with message text, handles, contact names and attachment file names. Request it only when needed, do not copy it into logs, tickets or other tools, and refer to a contact by an id of your own.
  • Guide: Events feed explains what the feed holds, how to walk it and its limits. An event is listed only if it matched an active subscription of your account when it occurred: an account without a subscription has an empty feed.

Errors

The errors that every operation shares are in Errors.

Authorizations

Authorization
string
header
required

An API key created in the iSnap dashboard, or a trial key, sent as Authorization: Bearer <key>. An API key starts with isnap_live_ or isnap_test_; both act on the same account, lines and billing. A trial key acts on its trial only.

Query Parameters

since
string<date-time>
required

Start of the window, inclusive: ISO 8601 in UTC ending in Z. A UTC offset such as +02:00 returns 400 validation_failed. A value older than 72 hours is raised to 72 hours ago, without an error.

Example:

"2026-10-08T12:00:00Z"

until
string<date-time>

End of the window, inclusive: ISO 8601 in UTC ending in Z. Default: the time of the request. When it is earlier than since, the page is empty.

Example:

"2026-10-08T18:00:00Z"

event
enum<string>

An exact event type such as message.received, a family wildcard such as line.*, or * for every event. A wildcard for a family that does not exist is accepted and matches nothing. webhook.test is never delivered through an event filter: iSnap sends it only to a suspended webhook subscription, to check whether its URL responds again.

Available options:
message.queued,
message.sent,
message.delivered,
message.read,
message.failed,
message.received,
message.scheduled,
message.cancelled,
message.fallback_triggered,
reaction.added,
reaction.received,
reaction.removed,
line.connected,
line.disconnected,
line.offline,
line.degraded,
line.apple_id_flagged,
line.quota_warning,
line.quota_exceeded,
line.capability_changed,
line.terminated,
line.variant_changed,
line.variant_scheduled,
line.variant_unscheduled,
typing_indicator.started,
typing_indicator.stopped,
trial.linked,
trial.dormant,
trial.reactivated,
trial.bind_conflict,
trial.revoked,
binding.released,
pre_order.fulfilled,
pre_order.cancelled,
macos_session.rented,
macos_session.released,
webhook.test,
*,
message.*,
reaction.*,
line.*,
typing_indicator.*,
trial.*,
binding.*,
pre_order.*,
macos_session.*,
webhook.*
line_id
string

Keep the events tied to this line. The events of a trial are tied to the line the trial runs on: pass its pool_line_id to keep them. Events tied to no line are excluded. An id that matches no line returns an empty page.

Pattern: ^line_[0-9A-Za-z]{25}$
Example:

"line_2k9Qp7RtY4mNb8VcXs3Wd6Lf1"

limit
integer
default:100

Number of events per page, from 1 to 100. Default: 100.

Required range: 1 <= x <= 100
cursor
string

The next_cursor of the previous page. Omit it for the first page. Send the same filters on every page.

Response

One page of events.

success
enum<boolean>
required

Always true on a success response.

Available options:
true
data
object
required

One page of events.

trace_id
string
required

Trace id of the request that produced this response: 32 lowercase hexadecimal characters. Quote it when you report a problem to iSnap.

request_id
string
required

Id of the request that produced this response: req_ followed by 25 letters or digits.