BetaThe V4 API is in beta — endpoints and functionality may change.
Messagesv2

List messages in a chat

GET/chats/{chatId}/messages

List all messages in a conversation with optional filtering.

Path parameters

chatIdRequiredstring

Chat 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

AuthorizationRequiredstring

Your API key, sent as a bearer token: Authorization: Bearer <api_key>. Editing this stays in sync with the API key box on the right.

Bearer

Query parameters

limitoptionalinteger

Maximum 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.

offsetoptionalinteger

Number 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.

sortoptionalstring

Sort order by time

"asc""desc"
directionoptionalstring

Filter by message direction

"inbound""outbound"
sinceoptionalinteger

Only messages sent after this timestamp (ms)

untiloptionalinteger

Only messages sent before this timestamp (ms)

Returns

chat_idoptionalstring
messagesoptionalMessage[]

Array of Message

message_idoptionalstring
directionoptionalstring
"inbound""outbound"
external_idoptionalstring

Phone number or email of the contact, or group ID for group messages

internal_idoptionalstring | null

Organization phone number (from-number) used for this message

textoptionalstring | null
attachmentsoptionalobject[]
senderoptionalstring | null

Sender'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)

Array of Reaction

reactionoptionalstring

The reaction value. Classic tapbacks: love, like, dislike, laugh, emphasize, question. Emoji reactions: the emoji character (e.g. 😂, 👍).

is_addedoptionalboolean

Whether the reaction is currently active (true) or was removed (false)

time_sentoptionalinteger

Timestamp when the reaction was sent (ms)

senderoptionalstring | null

Phone number or email of who sent the reaction. Null when the reaction was sent by you (outbound).

time_sentoptionalinteger
time_deliveredoptionalinteger | null
statusoptionalstring
"pending""queued""sent""delivered""failed""cancellation_requested""cancelled"
protocoloptionalstring
"imessage""sms""rcs""non-imessage"
erroroptionalstring | null
reply_tooptionalReplyToInfo

Present only on inline-reply messages. Omitted entirely for top-level messages.

message_idRequiredstring | null

The 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 | null

The 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_indexRequiredinteger

Which part of the parent was replied to. 0 for the common single-part case.

paginationoptionalPagination
limitoptionalinteger
offsetoptionalinteger
totaloptionalinteger

Response codes

200List of messages
400Invalid request parameters
401Authentication required or invalid
404Resource not found

Sends a live request with your values and shows the real response below. Your key is stored only in this browser.

Request
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_..."
Response objectexample
{  "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  }}