Manage groups
Create, read, update and delete WhatsApp groups, including their settings and profile picture.
Integration summary
- Base URL:
https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services- Token: admin token, in the
Authorization: Bearer {{admin-token}}header (how to generate it)- Endpoints on this page:
POST /v1/group/{{waba_id}}/{{business_phone_number}}: Create groupGET /v1/group/{{waba_id}}/{{business_phone_number}}/groups?limit=25: Get active groupsGET /v1/group/{{waba_id}}/{{group_id}}?fields={{fields}}: Get group infoPUT /v1/group/{{waba_id}}/{{group_id}}: Update group settingsPUT /v1/group/{{waba_id}}/{{group_id}}: Update group profile pictureDELETE /v1/group/{{waba_id}}/{{group_id}}: Delete group
Create group
Only eligible phone numbers can create groups (see the requirements in Groups).
Request
Create group request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{business_phone_number}} |
| Method | POST |
| Type | application/json |
Headers
Create group headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Create group parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| business_phone_number | Phone number that owns the group. | String | Required |
Body
Create group body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| subject | Group subject. Maximum 128 characters, counted by this service excluding whitespace. Meta applies its own character counting rules on top, which may differ. | String | Required |
| description | Group description. Maximum 2048 characters. | String | Optional |
| join_approval_mode | Whether users who click the invite link can join the group with or without prior approval. Possible values:
| String | Optional |
Example
Complete Create group example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{business_phone_number}}' \--header 'Authorization: Bearer {{admin-token}}' \--header 'Content-Type: application/json' \--data '{"subject": "Support Team","description": "Group for customer support coordination","join_approval_mode": "approval_required"}'
Response
Create group response:
Group creation is asynchronous: the response only confirms that the request was accepted. The actual result (the created group with its invite_link, or an error) arrives by webhook.
| Name | Description | Type |
|---|---|---|
| request_id | Unique request ID. Make sure to store it so you can match the later webhook (which contains the actual group details) to this request. | String |
{"request_id": "384EE736D97215A005AF71B3482C5DB5"}
Get active groups
Returns the list of active groups associated with a phone number, paginated with after/before cursors.
Request
Get active groups request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{business_phone_number}}/groups?limit=25 |
| Method | GET |
Headers
Get active groups headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Get active groups parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| business_phone_number | Phone number that owns the groups. | String | Required |
| limit | Number of groups to return. Minimum 1, maximum 1024. Default: 25. | Integer | Optional |
| after | Cursor that points to the end of a page of data. | String | Optional |
| before | Cursor that points to the start of a page of data. | String | Optional |
Example
Complete Get active groups example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{business_phone_number}}/groups?limit=25' \--header 'Authorization: Bearer {{admin-token}}'
Response
Get active groups response:
| Name | Description | Type |
|---|---|---|
| data | List of groups. Each group includes id, subject, and created_at. | List of objects |
| paging | Pagination object with the after and before cursors. | Object |
{"data": [{ "id": "{{group_id}}", "subject": "Support Team", "created_at": "683731200" }],"paging": {"cursors": {"after": "MTAxNTExOTQ1MjAwNzI5NDE=","before": "NDMyNzQyODI3OTQw"}}}
Get group info
Returns the group information for the fields requested in the fields parameter. If you don't specify any fields, the response includes id, subject, description, and join_approval_mode by default.
Request
Get group info request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}?fields={{fields}} |
| Method | GET |
Headers
Get group info headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Get group info parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
| fields | Comma-separated list of fields to return. Possible values: subject, description, participants, join_approval_mode, suspended, creation_timestamp, total_participant_count. | String | Optional |
Example
Complete Get group info example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}?fields=subject,description,participants,join_approval_mode' \--header 'Authorization: Bearer {{admin-token}}'
Response
Get group info response:
| Name | Description | Type |
|---|---|---|
| id | ID of the requested group. | String |
| subject | Group subject. | String |
| description | Group description, if one was set when the group was created. | String |
| join_approval_mode | approval_required | auto_approve. | String |
| suspended | true if the group was suspended by WhatsApp. | Boolean |
| creation_timestamp | UNIX timestamp (seconds) when the group was created. | String |
| participants | List of {"wa_id": "<WA_ID>"} objects for the group participants. | Object list |
| total_participant_count | Total number of participants, excluding your business. | Integer |
{"id": "{{group_id}}","subject": "Artificial Intelligence Insights","creation_timestamp": "683731200","suspended": false,"description": "Explore AI developments and discuss the future of AI.","total_participant_count": 6,"participants": [{ "wa_id": "2228675309" },{ "wa_id": "7693349922" }],"join_approval_mode": "auto_approve"}
Update group settings
Updates the group subject and/or description. The operation is asynchronous: the request returns a request_id, and the result (success, partial success, or an error for each field) is confirmed by webhook.
Request
Update group settings request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}} |
| Method | PUT |
| Type | application/json |
Headers
Update group settings headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Update group settings parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Body
Update group settings body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| subject | New group subject. Maximum 128 characters. Can't be empty if included. | String | Optional |
| description | New group description. Maximum 2048 characters. | String | Optional |
Example
Complete Update group settings example:
curl --location --request PUT 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}' \--header 'Authorization: Bearer {{admin-token}}' \--header 'Content-Type: application/json' \--data '{"subject": "Watch Enthusiasts","description": "Join our community to discuss the latest timepieces."}'
Response
Update group settings response:
| Name | Description | Type |
|---|---|---|
| request_id | Unique request ID. The result is confirmed by webhook (group_settings_update). | String |
{"request_id": "384EE736D97215A005AF71B3482C5DB5"}
Update group profile picture
Updates the group's profile picture. The image must be image/jpeg, square (height = width), at least 192x192 px, and no larger than 5MB. The operation is asynchronous: the request returns a request_id, and the result is confirmed by webhook (profile_picture field).
Request
Update group profile picture request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}} |
| Method | PUT |
| Type | multipart/form-data |
Headers
Update group profile picture headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Update group profile picture parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Body
Update group profile picture body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| file | Image file for the profile picture. image/jpeg only. Maximum 5MB. Square, at least 192x192 px. | File | Required |
Example
Complete Update group profile picture example:
curl --location --request PUT 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}' \--header 'Authorization: Bearer {{admin-token}}' \--form 'file=@"/local/path/image.jpg"'
Response
Update group profile picture response:
| Name | Description | Type |
|---|---|---|
| request_id | Unique request ID. The result is confirmed by webhook (profile_picture field). | String |
{"request_id": "384EE736D97215A005AF71B3482C5DB5"}
Delete group
Request
Delete group request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}} |
| Method | DELETE |
Headers
Delete group headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Delete group parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | ID of the group to delete. | String | Required |
Example
Complete Delete group example:
curl --location --request DELETE 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}' \--header 'Authorization: Bearer {{admin-token}}'
Response
Delete group response:
| Name | Description | Type |
|---|---|---|
| request_id | Unique request ID. The result is confirmed by webhook. | String |
{"request_id": "384EE736D97215A005AF71B3482C5DB5"}
