# Add group members

> Add contacts to a group by ID.

Source: https://sndr.sh/docs/cranl/contact-groups/add-group-members

`POST https://api.sndr.sh/api/cranl/v1/contact-groups/{id}/members`

Add contacts to a group by ID. Contacts already in the group or not in the account are skipped; added counts new memberships only.

Scope: `send`

**Path parameters**

- `id` (string, required): Group ID (grp_...).

**Body** (JSON)

- `contact_ids` (string[], required): Contact IDs (con_...) to add, at least one.

**Request**

```bash
curl -X POST 'https://api.sndr.sh/api/cranl/v1/contact-groups/grp_4d8a0c5e-1f7/members' \
  -H 'Authorization: Bearer sndr_your_access_token' \
  -H 'Content-Type: application/json' \
  -d '{"contact_ids": ["con_0e6b7f21-c58", "con_71c3b9e4-a02"]}'
```

**Response** (200)

```json
{
  "added": 2
}
```

**Errors**

- `unauthenticated` (401): Missing or invalid Bearer token.
- `token_expired` (401): Access token expired — exchange the refresh token for a new pair.
- `token_revoked` (401): Token was explicitly revoked.
- `invalid_request` (400): Body is not valid JSON, or contact_ids is missing or empty.
- `insufficient_scope` (403): Token is missing the send scope.
- `not_found` (404): Resource does not exist or belongs to a different account.
