Conversation API
Group chats
Manage group chats created or received through your LoopMessage account.
Create a group
POST https://a.loopmessage.com/api/v1/group/new/
Creates a group and sends the first message to its participants.
This feature requires you to have the active option “Init new conversations” and keep the same intervals as the init conversation with a single contact.
Headers
| Name | Type | Description |
|---|---|---|
| Authorization* | String | API Key. Required*. |
| Content-Type* | String | application/json |
Request Body
| Name | Type | Description |
|---|---|---|
| contacts* | Array | Phone numbers or iMessage email addresses of the group participants. |
| text* | String | The first message sent to the group. |
| name | String | Group name. Required for WhatsApp groups. |
| sender* | String | Sender name ID. |
| channel* | String | Delivery channel. Possible values: imessage, sms , rcs, or whatsapp. |
The request is accepted asynchronously. Use the webhook data to obtain the persisted group ID for future requests.
{
"contacts": ["+13231112233", "+13232223344"],
"text": "Hello everyone",
"sender": "sender-name-id",
"channel": "imessage"
}
Create a WhatsApp group
This feature requires an active WhatsApp add-on for your sender
Set channel to whatsapp and provide the group name in name:
{
"contacts": ["+13231112233", "+13232223344"],
"name": "Project team",
"text": "Hello everyone",
"sender": "sender-name-id",
"channel": "whatsapp"
}
The request is asynchronous. LoopMessage creates the WhatsApp group, sends the first message, and then reports the resulting group ID through the webhook. The initial HTTP response contains the message/request ID, not the WhatsApp group ID.
WhatsApp privacy settings can prevent some contacts from being added directly to a group. In that case, you can still create the group and send the first message. The webhook’s group participants list will include only the participants whose WhatsApp privacy policy has been accepted.
Response {.tabset .tabset-fade}
tab 200: Request accepted
{
"contacts": ["+13231112233", "+13232223344"],
"id": "2BC4FD6A-CE49-439F-81DF-E895C09CA49C",
"sender": "sender-id"
}
Get group information
GET https://a.loopmessage.com/api/v1/group/{group_id}/
Returns the group name, participants, channel, and activity dates.
Response {.tabset .tabset-fade}
tab 200: Request accepted
{
"id": "2BC4FD6A-CE49-439F-81DF-E895C09CA49C",
"name": "Project team",
"participants": ["+13231112233", "+13232223344"],
"create_date": "2026-08-30T12:00:00+00:00",
"channel": "imessage",
"sender": "sender-name"
}
Add a participant
PUT https://a.loopmessage.com/api/v1/group/{group_id}/
Request Body
| Name | Type | Description |
|---|---|---|
| contact* | String | Phone number or iMessage email. |
{
"contact": "+13233334444"
}
Remove a participant
DELETE https://a.loopmessage.com/api/v1/group/{group_id}/
Request Body
Use the same body as for adding a participant:
{
"contact": "+13233334444"
}
Update a group
PATCH https://a.loopmessage.com/api/v1/group/{group_id}/
Updates the group name or photo. Send one update at a time.
Request Body
| Name | Type | Description |
|---|---|---|
| name | String | Optional group name. Maximum length: 32 characters. |
| photo_url | String | Optional publicly accessible HTTPS image URL. |
Change the name:
{
"name": "New group name"
}
Change the photo:
{
"photo_url": "https://example.com/group-photo.jpg"
}
To remove the group photo, send an empty value:
{
"photo_url": ""
}
All group operations are processed asynchronously. A successful HTTP response confirms that the request was accepted, not necessarily that the operation has completed.
Response {.tabset .tabset-fade}
tab 200: Request accepted
{
"group": "2BC4FD6A-CE49-439F-81DF-E895C09CA49C",
"id": "2BC4FD6A-CE49-439F-81DF-E895C09CA49C",
"sender": "sender-uuid"
}