List messages for the account with cursor pagination
Default order is newest-first by timestamp (browse / initial full load). When updated_since is set it is an incremental change feed: rows are filtered, sorted, and paginated by the updated_at watermark ASCENDING, so a row changed mid-pagination is never skipped — pre-updated_at legacy rows are not part of the feed (capture those once via the initial full list).
An external_location_id the caller does not own yields an empty page, never another tenant's rows; params are validated first so that path still rejects a bad limit / cursor / date.
Request
- Base URL: https://api.tracklysms.com/api
- URL: https://api.tracklysms.com/api/v2/messages
- Auth: API key in header X-Api-Key
Query parameters
Page size (default 50, max 200)
Opaque pagination cursor from a previous response
Scope to the owned account (self or a child) with this external location id — a parent's per-location message lookup
Incremental re-sync: only rows changed after this ISO8601 datetime
Filter timestamp <= this ISO8601 datetime
Filter timestamp >= this ISO8601 datetime
Filter by lifecycle status
Filter by recipient phone number (E.164)
Filter by sending list phone number (E.164); ignored if sending_list_id is set
Filter by sending list ID
Use 'me' to filter messages sent by the calling API key
Response
Success
Changes
No recorded changes to this operation across all 1 revision of this API.