Skip to main content

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

NameTypeDescription
Authorization*StringAPI Key. Required*.
Content-Type*Stringapplication/json

Request Body

NameTypeDescription
contacts*ArrayPhone numbers or iMessage email addresses of the group participants.
text*StringThe first message sent to the group.
nameStringGroup name. Required for WhatsApp groups.
sender*StringSender name ID.
channel*StringDelivery 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

NameTypeDescription
contact*StringPhone 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

NameTypeDescription
nameStringOptional group name. Maximum length: 32 characters.
photo_urlStringOptional 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"
}