Summary
Use the WhatsApp Groups API to create and manage WhatsApp groups programmatically. You can create groups, send invitations to pending contacts, remove participants, delete groups, and retrieve a list of active groups.
Note: The WhatsApp Groups API is available on the Business plan.
Instructions
Before you start
Before using the WhatsApp Groups API:
Make sure your Wati account is on the Business plan.
Generate a Wati API token and keep it secure.
Use the API base URL provided in your Wati API documentation.
For more information, see Authentication. Wati APIs use Bearer Token authentication, and requests must include the API token in the Authorization header.
Authentication
Include the following headers with your API requests:
Authorization: Bearer <your_api_token>
Content-Type: application/json
For example:
curl --location 'https://live-mt-server.wati.io/xxxxxx/api/ext/v3/conversations/groups' \
--header 'Authorization: Bearer <your_api_token>' \
--header 'Content-Type: application/json'
Note: Use the API base URL shown in your Wati account (Connectors > API Docs > API Endpoint) rather than the example URL above.
Security: Never share your API token or commit it to public code. Wati recommends storing API credentials in environment variables or a secrets manager.
Available endpoints
Method | Endpoint | Description |
|
| Create a WhatsApp group |
|
| Delete a WhatsApp group |
|
| Send invitations to pending contacts |
|
| Remove participants from a group |
|
| List active WhatsApp groups |
1. Create a WhatsApp group
POST /api/ext/v3/conversations/groups
Creates a new WhatsApp group.
You can optionally specify a channel. If you don't specify a channel, the default channel is used. Operators are identified by email address, while contacts are identified by phone number or supported contact target.
Request body
{
"channel": "MyChannel",
"name": "VIP Support Group",
"description": "Group for VIP customers",
"owner_email": "[email protected]",
"operator_emails": [
"[email protected]"
],
"contact_targets": [
"14155551234",
"14155555678"
],
"join_approval_mode": "auto_approve"
}Request body parameters
Field | Type | Description |
| string | The channel to use. If omitted, the default channel is used. |
| string | The name of the WhatsApp group. |
| string | The description of the WhatsApp group. |
| string | Email address of the group owner. |
| array | Email addresses of operators to add to the group. |
| array | Phone number, BSUID, or ContactId of the contacts to add to the group. Maximum 7 contacts per group. |
| string | Specifies the group join approval mode. |
Response
A successful request returns 201 Created and the details of the newly created group.
{
"group": {
"id": "6828abc123def456789012ab",
"name": "VIP Support Group",
"description": "Group for VIP customers",
"invite_link": "",
"channel_id": "ch_123",
"conversation_id": "conv_456",
"operators": [
{
"id": "682800000000000000000001",
"operator_id": "op_id",
"name": "Owner Name",
"role": "owner",
"added_at": "2026-08-13T08:27:00.8447035Z"
}
],
"contacts": [
{
"id": "682800000000000000000003",
"contact_id": "contact_id",
"wa_id": "+14155551234",
"name": "Contact Name",
"join_status": "pending"
}
],
"created_at": "2026-08-13T08:27:00.8448051Z"
}
}Response codes
Code | Description |
| The group was created successfully. |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
2. Delete a WhatsApp group
DELETE /api/ext/v3/conversations/groups/{groupId}
Deletes the specified WhatsApp group.
If the group has already been deleted, the endpoint still returns 200 OK.
Path parameters
Parameter | Type | Required | Description |
| string | Yes | The ID of the group to delete. |
Response
A successful request returns 200 OK.
{
"result": true
}Response codes
Code | Description |
| The group was deleted successfully. |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
3. Send group invitations
POST /api/ext/v3/conversations/groups/{groupId}/invites
Sends a group invitation to all contacts that are still pending.
The API checks the contacts in the group, identifies those with a pending join status, and sends the group invite template to each contact's 1:1 conversation.
Path parameters
Parameter | Type | Required | Description |
| string | Yes | The ID of the group to send invitations for. |
Response
A successful request returns the invitation result for each pending contact.
{
"total_pending": 3,
"sent": 2,
"failed": 1,
"results": [
{
"contact_name": "Alice",
"phone": "14155551234",
"success": true
},
{
"contact_name": "Bob",
"phone": "14155555678",
"success": true
},
{
"contact_name": "Charlie",
"phone": "",
"success": false,
"error": "BSUID-only contact, no phone number"
}
]
}The response includes:total_pending: Number of contacts with a pending join status.sent: Number of invitations sent successfully.failed: Number of invitations that could not be sent.results: Invitation result for each pending contact.
Response codes
Code | Description |
| The invitation results were returned successfully. |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
4. Remove participants from a WhatsApp group
DELETE /api/ext/v3/conversations/groups/{groupId}/participants
Removes operators and/or contacts from a WhatsApp group.
You must provide at least one operator email or contact target.
Path parameters
Parameter | Type | Required | Description |
| string | Yes | The ID of the group to remove participants from. |
Request body
{
"operator_emails": [
"[email protected]"
],
"contact_targets": [
"14155551234"
]
}Request body parameters
Field | Type | Description |
| array | Email addresses of operators to remove from the group. |
| array | Phone number, BSUID, or ContactId of the contacts to add to the group. Maximum 7 contacts per group. |
You can provide operator_emails, contact_targets, or both. At least one must be provided.
Response
A successful request returns 200 OK.
{
"result": true
}Response codes
Code | Description |
| The participants were removed successfully. |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
5. List active WhatsApp groups
POST /api/ext/v3/conversations/groups/list
Returns a cursor-paginated list of active WhatsApp groups.
You can optionally filter the results by channel or specific group IDs. If you don't specify a channel, the default channel is used.
Request body
{
"channel": "MyChannel",
"limit": 20
}Request body parameters
Field | Type | Description |
| string | The channel to use. If omitted, the default channel is used. |
| integer | The number of groups to return in the response. |
Response
A successful request returns 200 OK with the active groups and pagination information.
{
"groups": [
{
"id": "6828abc123def456789012ab",
"name": "VIP Support Group",
"description": "Group for VIP customers",
"invite_link": "https://chat.whatsapp.com/abc123",
"channel_id": "ch_123",
"conversation_id": "conv_456",
"operators": [
{
"id": "682800000000000000000001",
"operator_id": "op_id",
"name": "Owner",
"role": "owner",
"added_at": "2026-08-13T08:27:00.8595387Z"
}
],
"contacts": [
{
"id": "682800000000000000000003",
"contact_id": "contact_id",
"wa_id": "+14155551234",
"name": "Alice",
"join_status": "joined",
"joined_at": "2026-08-13T08:27:00.8595402Z"
}
],
"created_at": "2026-08-13T08:27:00.8595404Z"
}
],
"continuous_token": "eyJsIjoiNjgyOGFiYzEyM2RlZjQ1Njc4OTAxMmFiIn0=",
"total": 5
}Pagination
The List Groups endpoint returns results in pages.
If more groups are available, the response includes a continuous_token. Use this token to retrieve subsequent pages.
When continuous_token is absent or null, there are no more results.
Response codes
Code | Description |
| The list of active groups was returned successfully. |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
Error responses
The following HTTP status codes can be returned by the WhatsApp Groups API endpoints:
Code | Description |
| The request is invalid. |
| The request is unauthorized. |
| The request is forbidden. |
| Too many requests. |
| An unexpected error occurred. |
For 400, 403, and 500 responses, the API can return additional details such as an error code, message, and timestamp.
Example error response
{
"details": "string",
"code": 0,
"message": "string",
"timestamp": "2026-08-13T09:01:03.204Z"
}For authentication-related errors, verify that your request includes a valid API token in the Authorization header. See Authentication for more information.
