# Attach a contact to a conversation

You can add participants who are contacts to a conversation, on behalf of either another contact or an admin.
If you add a contact via the email parameter and there is no user/lead found on that workspace with he given email, then we will create a new contact with `role` set to `lead`.

Endpoint: POST /conversations/{id}/customers
Version: 2.9
Security: bearerAuth

## Path parameters:

  - `id` (string, required)
    The identifier for the conversation as given by Intercom.

## Header parameters:

  - `Intercom-Version` (string)

## Request fields (application/json):

  - `admin_id` (string)
    The `id` of the admin who is adding the new participant.
    Example: 12345

  - `customer` (object)

  - `customer.intercom_user_id` (string, required)
    The identifier for the contact as given by Intercom.
    Example: 6329bd9ffe4e2e91dac76188

  - `customer.customer` (object)

  - `customer.customer.intercom_user_id` (string, required)
    The identifier for the contact as given by Intercom.
    Example: 6329bd9ffe4e2e91dac76188

  - `customer.customer.user_id` (string, required)
    The external_id you have defined for the contact who is being added as a participant.
    Example: 2e91dac761886329bd9ffe4e

  - `customer.customer.email` (string, required)
    The email you have defined for the contact who is being added as a participant.
    Example: sam.sung@example.com

  - `customer.user_id` (string, required)
    The external_id you have defined for the contact who is being added as a participant.
    Example: 6329bd9ffe4e2e91dac76188

  - `customer.email` (string, required)
    The email you have defined for the contact who is being added as a participant.
    Example: joe@example.com

## Response 200 fields (application/json):

  - `customers` (array, required)
    The conversation participants after the change
    Example: [{"type":"user","id":"6762f1a61bb69f9f2193bbd8"}]

  - `customers.type` (string, required)
    The role of the participant. Can be "user" or "lead"
    Example: user

  - `customers.id` (string, required)
    The unique identifier for the participant
    Example: 6762f1a61bb69f9f2193bbd8

## Response 401 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: error.list

  - `request_id` (string)
    Example: f93ecfa8-d08a-4325-8694-89aeb89c8f85

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: unauthorized

  - `errors.message` (string)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

  - `errors.field` (string)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: email

## Response 403 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: error.list

  - `request_id` (string)
    Example: f93ecfa8-d08a-4325-8694-89aeb89c8f85

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: unauthorized

  - `errors.message` (string)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

  - `errors.field` (string)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: email

## Response 404 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: error.list

  - `request_id` (string)
    Example: f93ecfa8-d08a-4325-8694-89aeb89c8f85

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: unauthorized

  - `errors.message` (string)
    Optional. Human readable description of the error.
    Example: Access Token Invalid

  - `errors.field` (string)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: email

