Groups
List group iMessage threads with GET /v1/groups, send into an existing group, or create a new group chat from the send call.
Group iMessage threads are first-class: you can list them, read them, send into them, and create new ones. All group sends run send_mode: "instant"; the drip queue paces 1:1 threads only.
List groups
GET https://api.bluereacher.com/v1/groupsRequires write permission. Returns every group thread in the key's workspace, most recent activity first.
| Query param | Default | Meaning |
|---|---|---|
limit | 50 | Max 200 |
active_only | false | Only groups still marked active |
{
"success": true,
"groups": [
{
"id": "b7f3e9c1-52d8-4f0a-9c6e-8a1d4b2f7e5c",
"display_name": "Northline deal room",
"participant_phones": ["+16465550119", "+13035550101"],
"participant_count": 2,
"last_message_at": "2026-08-30T16:22:41Z",
"last_message_preview": "Works for me, send the doc",
"is_active": true,
"device_id": "8c9a4f2e-1d3b-4a6c-9e8f-2b7c5d1a9e3f",
"created_at": "2026-08-12T10:03:55Z"
}
],
"count": 1
}device_id is the line that owns the thread. A group always sends from its owning line, so device_id cannot be combined with group_chat_id on the send call.
Send into an existing group
Use the group's id as group_chat_id on POST /v1/messages:
curl -X POST https://api.bluereacher.com/v1/messages \
-H "Authorization: Bearer brk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"group_chat_id": "b7f3e9c1-52d8-4f0a-9c6e-8a1d4b2f7e5c",
"message": "Doc attached, page 3 has the numbers you asked for",
"send_mode": "instant"
}'The response echoes group_chat_id. device_id comes back null because the owning line is resolved downstream.
Create a new group and send
Pass create_group_phones (2 to 25 E.164 numbers) instead of to:
curl -X POST https://api.bluereacher.com/v1/messages \
-H "Authorization: Bearer brk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"create_group_phones": ["+16465550119", "+13035550101"],
"message": "Looping you both in here so we stop forwarding emails",
"send_mode": "instant"
}'The response carries group_created: true and participant_count. The new group then appears in GET /v1/groups.
Read a group thread
Pass group_chat_id to GET /v1/conversations. Group responses include a group summary, and each message carries from, the sender's phone (null on your own outbound rows).
Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | group_requires_instant | Group target without send_mode: "instant" |
| 404 | group_not_found | group_chat_id not in this key's workspace |
Send a message
POST /v1/messages: send a text and/or media message to one recipient, into an existing group, or to a new group, over the paced drip pipeline or instantly.
Status and conversations
Track a send with GET /v1/status/{message_id} and read full conversation history with GET /v1/conversations.

