# Open a conversation with an address

Opens the thread with one address — a medium ("sms", "imessage", "email") and the contact_identifier — or answers the one that already exists. Idempotent on the address, so a caller that cannot remember whether it has written before can simply ask again. Nothing is sent here and nothing names a record.

Access class: `workspace`.

## Endpoint

`POST /v1/comms/conversations`

## Request body

Content type: `application/json`.

```json
{
  "body": {
    "account_identifier": "string",
    "contact_identifier": "string",
    "contact_name": "string",
    "contact_role": "string",
    "medium": "string"
  },
  "params": {},
  "query": {}
}
```

## Responses

### 201

the action's answer

Content type: `application/json`.

```json
{
  "account_identifier": "string",
  "contact_identifier": "string",
  "contact_name": "string",
  "contact_role": "string",
  "created_at": "string",
  "id": 1,
  "is_archived": true,
  "is_muted": true,
  "is_pinned": true,
  "is_starred": true,
  "last_message_at": "string",
  "last_message_direction": "string",
  "last_message_preview": "string",
  "medium": "string",
  "ownerAccountId": "",
  "records": [
    {
      "definition_id": "",
      "definition_key": "string",
      "linked_at": "string",
      "name": "string",
      "row_id": "",
      "status": "string",
      "status_label": "string",
      "status_tone": "string"
    }
  ],
  "subject": "string",
  "unread_count": 1,
  "visibility": "string"
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
