> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Add a Connect participant

> Add a participant to a thread — typically the courier at assignment time. Waiting lanes for their role activate automatically on join.

Add a participant to an open thread. The standard use is adding the `courier` at assignment — the `customer_courier` lane flips from `waiting` to `active` and the Supervisor briefs the courier with any context that matters ("leave at the gate, code 4411").

A thread holds one active participant per role; adding a second courier returns `409` — [remove](/api-reference/connect/remove-participant) the first for reassignment.

## Path

<ParamField path="thread_id" type="string" required>
  Thread ID (`th_…`) or your `reference`.
</ParamField>

## Request

<ParamField body="role" type="string" required>
  `customer`, `merchant`, or `courier`.
</ParamField>

<ParamField body="external_id" type="string" required>
  Your ID for this person.
</ParamField>

<ParamField body="display_name" type="string" required>
  Name shown to other participants.
</ParamField>

<ParamField body="language" type="string">
  BCP-47 code for this participant's reading language.
</ParamField>

## Response

<ResponseField name="participant" type="object">
  The created participant with server ID (`prt_…`).
</ResponseField>

<ResponseField name="lanes" type="array">
  Updated lane states — the joining role's lanes become `active`.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"dark"}
  curl -X POST https://api.open.cx/connect/threads/order_84421/participants \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "role": "courier", "external_id": "drv_318",
          "display_name": "Aleksei", "language": "en" }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={"dark"}
  {
    "participant": { "id": "prt_d55", "role": "courier", "external_id": "drv_318",
                     "display_name": "Aleksei", "language": "en" },
    "lanes": [
      { "id": "customer_merchant", "status": "active" },
      { "id": "customer_courier", "status": "active" }
    ]
  }
  ```
</ResponseExample>
