API referenceMessages
List message activity
GET
Newest-first, cursor is the bare epoch-ms created_at of the last row returned (?cursor= returns rows strictly older). Tag filtering uses D1 json_extract() against the tags JSON column; there is no status filter on this endpoint.
bearerAuthheader
AuthorizationBearer <token>API key sent as Authorization: Bearer <key>. Looked up by SHA-256
hash (email_core::sha256_hex) against api_keys.hash; revoked
keys and keys belonging to a suspended tenant are rejected. See the
top-level Authentication section for permission levels.
limit?integerMax rows to return.
Range
1 <= value <= 100Default
25cursor?integerReturn rows strictly older than this epoch-ms timestamp.
Format
int64tag_key?stringFilter to messages whose tags JSON has this key (e.g. campaign).
tag_value?stringCombined with tag_key to filter on an exact value; alone it is ignored.
Message list.
application/json- response
data?array<>next_cursor?|Format
int64curl -X GET "https://example.com/v1/messages"{ "data": [ { "id": "string", "from_addr": "string", "to_addr": "string", "subject": "string", "status": "queued", "ses_message_id": "string", "error": "string", "created_at": 0, "updated_at": 0 } ], "next_cursor": 0}