# sinch conversation

Interact with the Sinch Conversation API: send messages, manage contacts, list conversations, configure apps, webhooks, and templates. See [Sinch Conversation API](/docs/conversation/) on developers.sinch.com for product documentation.

SMS is sent via `sinch conversation send --channel SMS`.

## sinch conversation send

Send a message via the Conversation API. Supports 8 message types: text, media, template, card, carousel, choice, location, and list. Run without arguments for an interactive wizard that guides you through message type selection and type-specific fields.

**Syntax**

```sh
sinch conversation send [recipient] [message] [options]
```

**Options**

| Option | Description |
|  --- | --- |
| `[recipient]` | Recipient phone number in E.164 format |
| `[message]` | Message text (for text messages) |
| `-c, --channel <channel>` | Channel: `SMS`, `WHATSAPP`, `MESSENGER`, `INSTAGRAM`, `VIBER`, `TELEGRAM`, `RCS`, `LINE` |
| `-a, --app <app-id>` | Conversation App ID (uses default if configured) |
| `-t, --type <type>` | Message type: `text`, `media`, `template`, `card`, `carousel`, `choice`, `location`, `list` |
| `-m, --media <url>` | Media URL for media messages |
| `--caption <text>` | Caption for media messages |
| `--template <name>` | Template ID for template messages |
| `-p, --params <json>` | Template parameters as JSON |
| `--location` | Send a location message |
| `--lat <latitude>` | Latitude (required with `--location`) |
| `--lng <longitude>` | Longitude (required with `--location`) |
| `-n, --name <name>` | Location name |
| `--json-message <json>` | Raw message body as JSON (escape hatch for any message structure) |
| `--json` | Output result as JSON |


**Channel selection.** The CLI looks up which channels the target app actually has configured. In the interactive picker, only those channels are offered (it falls back to the full list if the lookup fails). If you pass `-c, --channel` explicitly for a channel the app doesn't have configured, the command fails fast with guidance instead of letting the send fail at the API — add the channel's credentials at [dashboard.sinch.com/convapi/apps](https://dashboard.sinch.com/convapi/apps).

**Examples**

```sh
# Interactive wizard — message type is the first question
sinch conversation send

# Direct text message
sinch conversation send +15551234567 "Hello from Sinch" --channel SMS

# Media message
sinch conversation send +15551234567 --channel WHATSAPP --media https://example.com/image.jpg --caption "Check this out"

# Raw JSON escape hatch
sinch conversation send +15551234567 -c WHATSAPP --json-message '{"text_message":{"text":"hi"}}'
```

## sinch conversation messages

Manage conversation messages: list, get, delete, and update metadata.

| Subcommand | Description |
|  --- | --- |
| `sinch conversation messages list` | List messages |
| `sinch conversation messages get <id>` | Get a specific message by ID |
| `sinch conversation messages delete <id>` | Delete a message |
| `sinch conversation messages update <id> --metadata <json>` | Update message metadata |


| Option | Description |
|  --- | --- |
| `-c, --channel <channel>` | Filter by channel |
| `-l, --limit <number>` | Maximum messages to return |
| `--json` | Output as JSON |


## sinch conversation contacts

List and manage contacts in the Conversation API.

```sh
sinch conversation contacts [options]
```

| Option | Description |
|  --- | --- |
| `-a, --app <app-id>` | Conversation App ID |
| `-l, --limit <number>` | Maximum contacts to return |
| `--json` | Output as JSON |


## sinch conversation conversations

List conversations in a Conversation API app.

```sh
sinch conversation conversations [options]
```

| Option | Description |
|  --- | --- |
| `-a, --app <app-id>` | Conversation App ID |
| `-s, --state <state>` | Filter by state: `ACTIVE`, `INACTIVE`, `CLOSED` |
| `-l, --limit <number>` | Maximum conversations to return |
| `--json` | Output as JSON |


## sinch conversation apps

Manage Conversation API apps.

| Subcommand | Description |
|  --- | --- |
| `sinch conversation apps list` | List Conversation apps |
| `sinch conversation apps get <id>` | Get a Conversation app by ID |
| `sinch conversation apps create [name]` | Create a new Conversation app |
| `sinch conversation apps delete <id>` | Delete a Conversation app |


| Option | Description |
|  --- | --- |
| `-l, --limit <number>` | Maximum apps to return |
| `--json` | Output as JSON |


## sinch conversation webhooks

Manage webhooks for Conversation apps.

| Subcommand | Description |
|  --- | --- |
| `sinch conversation webhooks list` | List webhooks for an app |
| `sinch conversation webhooks create` | Create a new webhook (interactive) |
| `sinch conversation webhooks update <id>` | Update a webhook |
| `sinch conversation webhooks delete <id>` | Delete a webhook |


| Option | Description |
|  --- | --- |
| `-a, --app <app-id>` | Conversation App ID |
| `--json` | Output as JSON |


## sinch conversation templates

Manage Conversation message templates via the templatesV2 API.

| Subcommand | Description |
|  --- | --- |
| `sinch conversation templates list` | List all message templates |
| `sinch conversation templates get <id>` | Get a template by ID (with translations) |
| `sinch conversation templates create` | Create a new message template (interactive) |
| `sinch conversation templates delete <id>` | Delete a message template |


| Option | Description |
|  --- | --- |
| `--json` | Output as JSON |