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

# tai conversations

> Manage conversation routes.

Manage conversation routes.

```console theme={null}
$ tai conversations [OPTIONS] COMMAND [ARGS]...
```

## `tai conversations create`

Create or replace a conversation route.

An UPSERT — a name that already exists is REPLACED, rebinding its `execution_key`
along with everything else (`created` is `false` for a replace). A `door=api`
route's `callback_secret` is minted server-side and shown ONCE in the result; it
signs the delivery callback and is never re-readable. There is no check that you can
run the agent — the execution key's live grants bound the turn.

Example: `tai conversations create support-line --door channel --agent triage \ --execution-key svc --channel twilio --identity +15550001111`

```console theme={null}
$ tai conversations create [OPTIONS] ROUTE_NAME
```

| Argument     | Description                                                           |
| ------------ | --------------------------------------------------------------------- |
| `ROUTE_NAME` | Route name — a slug \[a-z0-9-]+ (the thread-key handle). *(required)* |

| Option                   | Description                                                                                            |
| ------------------------ | ------------------------------------------------------------------------------------------------------ |
| `--door` `TEXT`          | Inbound door: 'api' or 'channel'. *(required)*                                                         |
| `--agent` `TEXT`         | The agent the turn runs (must exist). *(required)*                                                     |
| `--execution-key` `TEXT` | The api-key user id the turn runs AS; you must own it (or be admin), tokenless-evaluable. *(required)* |
| `--channel` `TEXT`       | door=channel: the channel registry name (e.g. twilio).                                                 |
| `--identity` `TEXT`      | door=channel: the medium address we are texted at.                                                     |
| `--callback-url` `TEXT`  | door=api: the https answer-delivery URL.                                                               |
| `--json` / `--no-json`   | Emit raw JSON instead of human tables.                                                                 |

## `tai conversations delete`

Delete a conversation route by name.

Example: `tai conversations delete support-line`

```console theme={null}
$ tai conversations delete [OPTIONS] ROUTE_NAME
```

| Argument     | Description                     |
| ------------ | ------------------------------- |
| `ROUTE_NAME` | Route name (slug). *(required)* |

| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `--json` / `--no-json` | Emit raw JSON instead of human tables. |

## `tai conversations failed`

List answer records whose delivery ended failed (admin only).

Example: `tai conversations failed`

```console theme={null}
$ tai conversations failed [OPTIONS]
```

| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `--json` / `--no-json` | Emit raw JSON instead of human tables. |

## `tai conversations get`

Show one conversation route by name (its callback\_secret is withheld).

Example: `tai conversations get support-line`

```console theme={null}
$ tai conversations get [OPTIONS] ROUTE_NAME
```

| Argument     | Description                     |
| ------------ | ------------------------------- |
| `ROUTE_NAME` | Route name (slug). *(required)* |

| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `--json` / `--no-json` | Emit raw JSON instead of human tables. |

## `tai conversations get-message`

Read one conversation answer record (caller-scoped: your own records, or any as
admin; channel records are admin-only).

Example: `tai conversations get-message support-line 4f1c...`

```console theme={null}
$ tai conversations get-message [OPTIONS] ROUTE_NAME MESSAGE_ID
```

| Argument     | Description                                    |
| ------------ | ---------------------------------------------- |
| `ROUTE_NAME` | Route name (slug). *(required)*                |
| `MESSAGE_ID` | Answer record message id (uuid4). *(required)* |

| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `--json` / `--no-json` | Emit raw JSON instead of human tables. |

## `tai conversations list`

List conversation routes (each row's callback\_secret is withheld).

Example: `tai conversations list`

```console theme={null}
$ tai conversations list [OPTIONS]
```

| Option                 | Description                            |
| ---------------------- | -------------------------------------- |
| `--json` / `--no-json` | Emit raw JSON instead of human tables. |
