Participants and invitations
Manage group participants and invitations: invite links, join requests, and removing participants.
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:
GET /v1/group/{{waba_id}}/{{group_id}}/invite_link: Get group invite linkPUT /v1/group/{{waba_id}}/{{group_id}}/invite_link: Reset group invite linkGET /v1/group/{{waba_id}}/{{group_id}}/join_requests: Get group join requestsPOST /v1/group/{{waba_id}}/{{group_id}}/join_requests: Approve group join requestsPUT /v1/group/{{waba_id}}/{{group_id}}/join_requests: Reject group join requestsPUT /v1/group/{{waba_id}}/{{group_id}}/participants: Remove group participants
Get group invite link
Returns the group's current invite link. It always starts with the prefix https://chat.whatsapp.com/.
Request
Get group invite link request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/invite_link |
| Method | GET |
Headers
Get group invite link headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Get group invite link parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Example
Complete Get group invite link example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/invite_link' \--header 'Authorization: Bearer {{admin-token}}'
Response
Get group invite link response:
| Name | Description | Type |
|---|---|---|
| invite_link | Group invite link. It always starts with https://chat.whatsapp.com/. | String |
{"invite_link": "https://chat.whatsapp.com/{{link_id}}"}
Reset group invite link
Generates a new invite link and immediately invalidates the previous one. This is useful if the previous link was shared with people it wasn't meant for; users who are already in the group are not affected.
Request
Reset group invite link request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/invite_link |
| Method | PUT |
Headers
Reset group invite link headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Reset group invite link parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Example
Complete Reset group invite link example:
curl --location --request PUT 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/invite_link' \--header 'Authorization: Bearer {{admin-token}}'
Response
Reset group invite link response:
| Name | Description | Type |
|---|---|---|
| invite_link | New invite link. Once the link is reset, previous links are no longer valid. | String |
{"invite_link": "https://chat.whatsapp.com/{{link_id}}"}
Get group join requests
Returns the list of open join requests for a group that requires approval.
Request
Get group join requests request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests |
| Method | GET |
Headers
Get group join requests headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Get group join requests parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Example
Complete Get group join requests example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests' \--header 'Authorization: Bearer {{admin-token}}'
Response
Get group join requests response:
| Name | Description | Type |
|---|---|---|
| data | List of open join requests. Each object contains join_request_id, wa_id, and creation_timestamp. | Object list |
{"data": [{"join_request_id": "MTY0NjcwNDM1OTU6MTIwMzYzNDA0Njk0MjMzODIw","wa_id": "16505551234","creation_timestamp": "1755548877"}]}
Approve group join requests
Applies only to groups created with join_approval_mode set to require approval. Lets you approve, in bulk, pending requests from users who want to join through the invite link.
Request
Approve group join requests request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests |
| Method | POST |
| Type | application/json |
Headers
Approve group join requests headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Approve group join requests parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Body
Approve group join requests body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| join_requests | List of IDs (join_request_id) of the join requests to approve. | Array of strings | Required |
Example
Complete Approve group join requests example:
curl --location 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests' \--header 'Authorization: Bearer {{admin-token}}' \--header 'Content-Type: application/json' \--data '{"join_requests": ["{{join_request_id}}"]}'
Response
Approve group join requests response:
| Name | Description | Type |
|---|---|---|
| approved_join_requests | List of IDs of the join requests that were approved. | Array of strings |
{"approved_join_requests": ["NTIxMjcyMjE1OTgwMToxMjAzNjM0Mjg5OTE4MTE1ODAZD"]}
Reject group join requests
Rejects one or more pending join requests in bulk, identified by their join_request_id.
Request
Reject group join requests request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests |
| Method | PUT |
| Type | application/json |
Headers
Reject group join requests headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Reject group join requests parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Body
Reject group join requests body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| join_requests | List of IDs of the join requests to reject. | Array of strings | Required |
Example
Complete Reject group join requests example:
curl --location --request PUT 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/join_requests' \--header 'Authorization: Bearer {{admin-token}}' \--header 'Content-Type: application/json' \--data '{"join_requests": ["{{join_request_id}}"]}'
Response
Reject group join requests response:
| Name | Description | Type |
|---|---|---|
| rejected_join_requests | List of IDs of the join requests that were successfully rejected. | Array of strings |
| failed_join_requests | Only included if one or more requests couldn't be rejected. Each item contains join_request_id (String) and errors (list of objects with code Integer, title String, message String, and error_data Object). | Object list |
| errors | List of overall request errors. Each error contains code (Integer), title (String), message (String), and error_data (Object). | Object list |
{"rejected_join_requests": ["NTIxMjcyMjE1OTgwMToxMjAzNjM0Mjg5OTE4MTE1ODAZD"],"failed_join_requests": [{"join_request_id": "{{join_request_id}}","errors": [{"code": 100,"title": "Invalid parameter","message": "Join request not found","error_data": {}}]}],"errors": []}
Remove group participants
Removes one or more participants from the group (up to 8 per request). There is no endpoint to add participants: users always join by invitation. A removed user can't rejoin the same group. The operation is asynchronous: the request returns a request_id, and the result is confirmed by webhook.
Request
Remove group participants request:
| URL | https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/participants |
| Method | PUT |
| Type | application/json |
Headers
Remove group participants headers:
| Name | Description | Type | Requirements |
|---|---|---|---|
| Content-Type | application/json | String | Required |
| Authorization | Admin token. See Generate authentication token. | String | Required |
Parameters
Remove group participants parameters:
| Name | Description | Type | Requirements |
|---|---|---|---|
| waba_id | WhatsApp Business Account ID. | String | Required |
| group_id | Group ID. | String | Required |
Body
Remove group participants body fields:
| Name | Description | Type | Requirements |
|---|---|---|---|
| participants | List of { "user": "<phone_number_or_wa_id>" } objects to remove. Maximum 8. Can't be empty. Each object has a user field (String, required) with the phone number or WhatsApp ID. | List of objects | Required |
Example
Complete Remove group participants example:
curl --location --request PUT 'https://{{url}}/whatsapp-bsp-admin-ext-endpoint-ws/services/v1/group/{{waba_id}}/{{group_id}}/participants' \--header 'Authorization: Bearer {{admin-token}}' \--header 'Content-Type: application/json' \--data '{"participants": [{ "user": "5212722159801" }]}'
Response
Remove group participants response:
| Name | Description | Type |
|---|---|---|
| request_id | Unique request ID. Removal is asynchronous; the result is confirmed by webhook. | String |
{"request_id": "384EE736D97215A005AF71B3482C5DB5"}
