# Participants

## Add a participant to a chat

`chats.participants.add(strchat_id, ParticipantAddParams**kwargs)  -> ParticipantAddResponse`

**post** `/v3/chats/{chatId}/participants`

Add a new participant to an existing group chat.

**Requirements:**

- Group chats only (3+ existing participants)
- New participant must support the same messaging service as the group
- Cross-service additions not allowed (e.g., can't add RCS-only user to iMessage group)
- For cross-service scenarios, create a new chat instead

### Parameters

- `chat_id: str`

- `handle: str`

  Phone number (E.164 format) or email address of the participant to add

### Returns

- `class ParticipantAddResponse: …`

  - `message: Optional[str]`

  - `status: Optional[str]`

  - `trace_id: Optional[str]`

### Example

```python
import os
from linq import LinqAPIV3

client = LinqAPIV3(
    api_key=os.environ.get("LINQ_API_V3_API_KEY"),  # This is the default and can be omitted
)
response = client.chats.participants.add(
    chat_id="550e8400-e29b-41d4-a716-446655440000",
    handle="+12052499136",
)
print(response.trace_id)
```

#### Response

```json
{
  "message": "Participant addition queued",
  "status": "accepted",
  "trace_id": "trace_id"
}
```

## Remove a participant from a chat

`chats.participants.remove(strchat_id, ParticipantRemoveParams**kwargs)  -> ParticipantRemoveResponse`

**delete** `/v3/chats/{chatId}/participants`

Remove a participant from an existing group chat.

**Requirements:**

- Group chats only
- Must have 3+ participants after removal

### Parameters

- `chat_id: str`

- `handle: str`

  Phone number (E.164 format) or email address of the participant to remove

### Returns

- `class ParticipantRemoveResponse: …`

  - `message: Optional[str]`

  - `status: Optional[str]`

  - `trace_id: Optional[str]`

### Example

```python
import os
from linq import LinqAPIV3

client = LinqAPIV3(
    api_key=os.environ.get("LINQ_API_V3_API_KEY"),  # This is the default and can be omitted
)
participant = client.chats.participants.remove(
    chat_id="550e8400-e29b-41d4-a716-446655440000",
    handle="+12052499136",
)
print(participant.trace_id)
```

#### Response

```json
{
  "message": "Participant removal queued",
  "status": "accepted",
  "trace_id": "trace_id"
}
```

## Domain Types

### Participant Add Response

- `class ParticipantAddResponse: …`

  - `message: Optional[str]`

  - `status: Optional[str]`

  - `trace_id: Optional[str]`

### Participant Remove Response

- `class ParticipantRemoveResponse: …`

  - `message: Optional[str]`

  - `status: Optional[str]`

  - `trace_id: Optional[str]`
