# MessageRecipient

Type: object

Choose how Flownally should find the customer thread: an existing conversation
a known contact, or a phone recipient for first-message sends.

## Properties

## Discriminator

Use `type` with one of `conversation`, `contact`, `phone`.

## Variants

### ConversationRecipient

Discriminator value: `conversation`

Continue a known conversation.

Required fields: `type`, `conversationId`

- `type` (const, required)
- `conversationId` (string, required)

```json
{
  "type": "conversation",
  "conversationId": "cnv_01HV8Z2JH0Q7K4M9N6P2A1B3C5"
}
```

### ContactRecipient

Discriminator value: `contact`

Send to a contact through the request inbox. Flownally uses an existing contact conversation for that inbox when available, otherwise the contact `cf_phone` custom field.

Required fields: `type`, `contactId`

- `type` (const, required)
- `contactId` (string, required)

```json
{
  "type": "contact",
  "contactId": "ctc_01HV8Z2JH0Q7K4M9N6P2A1B3C5"
}
```

### PhoneRecipient

Discriminator value: `phone`

Start a conversation with a phone number through the request inbox.

Required fields: `type`, `phoneNumber`

- `type` (const, required)
- `phoneNumber` (string, required) - E.164 phone number. Common formatting is accepted and normalized.

```json
{
  "type": "phone",
  "phoneNumber": "+48123456789"
}
```

