# Participants

## Add a participant to a chat

**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

### Path Parameters

- `chatId: string`

### Body Parameters

- `handle: string`

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

### Returns

- `message: optional string`

- `status: optional string`

- `trace_id: optional string`

### Example

```http
curl https://api.linqapp.com/api/partner/v3/chats/$CHAT_ID/participants \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $LINQ_API_V3_API_KEY" \
    -d '{
          "handle": "+12052499136"
        }'
```

#### Response

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

## Remove a participant from a chat

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

Remove a participant from an existing group chat.

**Requirements:**

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

### Path Parameters

- `chatId: string`

### Body Parameters

- `handle: string`

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

### Returns

- `message: optional string`

- `status: optional string`

- `trace_id: optional string`

### Example

```http
curl https://api.linqapp.com/api/partner/v3/chats/$CHAT_ID/participants \
    -X DELETE \
    -H "Authorization: Bearer $LINQ_API_V3_API_KEY"
```

#### Response

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

## Domain Types

### Participant Add Response

- `ParticipantAddResponse object { message, status, trace_id }`

  - `message: optional string`

  - `status: optional string`

  - `trace_id: optional string`

### Participant Remove Response

- `ParticipantRemoveResponse object { message, status, trace_id }`

  - `message: optional string`

  - `status: optional string`

  - `trace_id: optional string`
