# Reject WhatsApp group join requests

`POST /v1/whatsapp/groups/{group_id}/join-requests/batch-reject`

Rejects the named join requests, up to 50 in one call.

WhatsApp decides each request on its own, so the batch can be part-applied:
the response lists the ones it accepted in `decided` and the rest in
`failed` with the reason each was refused. A refusal is usually a person
who has not accepted WhatsApp's current terms, which no retry fixes.

A group that is not `active` refuses the whole call, with a `409`
`WhatsAppGroupNotActive`, rather than returning per-request failures.

Each person rejected sees the option to ask again the next time they open the invite link, so a rejection is not a ban. Remove someone through the participants operation if they should not be able to come back.

## Code samples

**TypeScript**

```ts
const result = await bird.whatsapp.groups.joinRequests.reject(
  "wag_01krdgeqcxet5s7t44vh8rt9mg",
  { join_request_ids: ["wgj_01krdgeqcxet5s7t44vh8rt9mg"] },
);
for (const failure of result.failed) {
  console.log(failure.join_request_id, failure.error.description);
}
```

Examples: [TypeScript](/docs/api/reference/reject-whatsapp-group-join-requests.ts.md) · [Python](/docs/api/reference/reject-whatsapp-group-join-requests.py.md) · [Go](/docs/api/reference/reject-whatsapp-group-join-requests.go.md) · [PHP](/docs/api/reference/reject-whatsapp-group-join-requests.php.md) · [CLI](/docs/api/reference/reject-whatsapp-group-join-requests.cli.md) · [MCP](/docs/api/reference/reject-whatsapp-group-join-requests.mcp.md) · [cURL](/docs/api/reference/reject-whatsapp-group-join-requests.curl.md)

## Example response `202`

```json
{
  "decided": [
    "wgj_01krdgeqcxet5s7t44vh8rt9mg"
  ],
  "failed": [
    {
      "join_request_id": "wgj_01krdgeqcxet5s7t44vh8rt9mg",
      "error": {
        "description": "Group subject contains content that cannot be used.",
        "meta_error_code": "2388024"
      }
    }
  ]
}
```

## Path parameters

- `group_id` (string): ID of the group whose join requests are being decided.

## Request body

- `join_request_ids` (array of string, required): The join requests to act on, as returned by `GET /v1/whatsapp/groups/{group_id}/join-requests`. Each is decided on its own, so one can fail while the rest succeed. An ID that names no waiting request returns a `422` `WhatsAppGroupJoinRequestNotFound`. The 50 is Bird's own request bound, not a WhatsApp one: how many people the group can hold does not limit how many can queue at its link, so a rejection sweep is not held to the size of the group it is refusing entry to.

## Response body

- `decided` (array of string, required): The join requests WhatsApp accepted the decision for. A person approved here can enter the group; a person rejected here sees the join button again.
- `failed` (array of object, required): The join requests WhatsApp refused, each with its reason. Empty when the whole batch was applied.
- `failed.join_request_id` (string, required): The join request that was not decided.
- `failed.error` (object, required): Why WhatsApp refused. The common one is a person who has not accepted WhatsApp's current terms, which no retry fixes.
- `failed.error.description` (string, required): WhatsApp's own explanation of the refusal, passed through. Show it to the person who asked for the change; never match on its text. Carries Bird's own words instead when the failure was Bird's verdict, such as a confirmation that never arrived.
- `failed.error.meta_error_code` (nullable string): WhatsApp's most specific code for the refusal: its error subcode where it sent one, otherwise its top-level code. Treat it as an opaque string. Null when the failure was Bird's own verdict rather than a WhatsApp refusal.

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
