List messages in a chat
/chats/{chatId}/messagesList all messages in a conversation with optional filtering.
Path parameters
chatIdRequiredstringChat identifier. Can be: (1) phone number in E.164 format (e.g., +15551234567), (2) email address, (3) group ID (grp_xxxx), or (4) comma-separated list of phone numbers/emails for multi-recipient group chats (e.g., +15551234567,+15559876543). All values should be URL-encoded.
Headers
AuthorizationRequiredstringYour API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.
Query parameters
limitoptionalintegerMaximum 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.
offsetoptionalintegerNumber 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.
sortoptionalstringSort order by time
"asc""desc"directionoptionalstringFilter by message direction
"inbound""outbound"sinceoptionalintegerOnly messages sent after this timestamp (ms)
untiloptionalintegerOnly messages sent before this timestamp (ms)
Returns
chat_idoptionalstringmessagesoptionalMessage[]
messagesoptionalMessage[]Array of Message
message_idoptionalstringdirectionoptionalstring"inbound""outbound"external_idoptionalstringPhone number or email of the contact, or group ID for group messages
internal_idoptionalstring | nullOrganization phone number (from-number) used for this message
textoptionalstring | nullattachmentsoptionalobject[]senderoptionalstring | nullSender's phone number or email for inbound group messages. Null for outbound messages and 1-1 chats.
reactionsoptionalReaction[]Reactions on this message (tapbacks and emoji reactions)
reactionsoptionalReaction[]Reactions on this message (tapbacks and emoji reactions)
Array of Reaction
reactionoptionalstringThe reaction value. Classic tapbacks: love, like, dislike, laugh, emphasize, question. Emoji reactions: the emoji character (e.g. 😂, 👍).
is_addedoptionalbooleanWhether the reaction is currently active (true) or was removed (false)
time_sentoptionalintegerTimestamp when the reaction was sent (ms)
senderoptionalstring | nullPhone number or email of who sent the reaction. Null when the reaction was sent by you (outbound).
time_sentoptionalintegertime_deliveredoptionalinteger | nullstatusoptionalstring"pending""queued""sent""delivered""failed""cancellation_requested""cancelled"protocoloptionalstring"imessage""sms""rcs""non-imessage"erroroptionalstring | nullreply_tooptionalReplyToInfoPresent only on inline-reply messages. Omitted entirely for top-level messages.
reply_tooptionalReplyToInfoPresent only on inline-reply messages. Omitted entirely for top-level messages.
message_idRequiredstring | nullThe Blooio message_id of the parent message. NULL when the parent isn't in our messages table (e.g., the original was sent from outside Blooio's pipeline).
guidRequiredstring | nullThe raw iMessage GUID of the parent. Always populated on real inline replies; the on-device record-of-truth identifier that survives even when message_id cannot be resolved.
part_indexRequiredintegerWhich part of the parent was replied to. 0 for the common single-part case.
paginationoptionalPagination
paginationoptionalPaginationlimitoptionalintegeroffsetoptionalintegertotaloptionalintegerResponse codes
Sends a live request with your values and shows the real response below. Your key is stored only in this browser.
curl -X GET https://api.blooio.com/v2/api/chats/chat_a1b2c3d4/messages?limit=50&offset=0&sort=desc&direction=inbound&since=0&until=0 \ -H "Authorization: Bearer bl_live_..."{ "chat_id": "chat_a1b2c3d4", "messages": [ { "message_id": "msg_a1b2c3d4", "direction": "inbound", "external_id": "msg_a1b2c3d4", "internal_id": "msg_a1b2c3d4", "text": "Hello from Blooio!", "attachments": [ {} ], "sender": "string", "reactions": [ { "reaction": "string", "is_added": true, "time_sent": 0, "sender": "string" } ], "time_sent": 0, "time_delivered": 0, "status": "pending", "protocol": "imessage", "error": "string", "reply_to": { "message_id": "msg_a1b2c3d4", "guid": "obj_a1b2c3d4", "part_index": 0 } } ], "pagination": { "limit": 50, "offset": 1, "total": 3 }}