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

# Channels

```bash theme={null}
telnyx-acp add channel messaging_profile:<id>
```

```text {2,5,20,24} theme={null}
support-agent/
├── agent.json                                         ◀
├── instructions.md
└── .telnyx/                        written by deploy
    ├── index.ts                                       ◀
    ├── telnyx.toml
    ├── telnyx-env.d.ts
    └── package.json

@telnyx/acp/                      the package
├── managed/
│   ├── index.ts
│   ├── agent.ts
│   ├── model.ts
│   ├── memory.ts
│   ├── tools.ts
│   ├── mcp.ts
│   ├── voice.ts
│   ├── direct-turn.ts
│   └── filler.ts
├── channels/
│   ├── index.ts                                       ◀
│   ├── phone.ts
│   ├── email.ts
│   ├── web.ts
│   └── wire.ts                                        ◀
├── synth/
│   ├── index.ts
│   ├── code-entry.ts
│   └── vendor.ts
└── spec/
    ├── schema.ts
    ├── model.ts
    ├── phone.ts
    ├── project.ts
    └── io.ts
```

`add channel <type>:<id>` appends an existing artifact to `channels`, by type and id, and never touches a number. At `deploy`, `wireChannels` in `channels/wire.ts` points the artifact's webhook at the function and remembers the previous value, and one route for it goes into the list passed to `channelRoutes` in `.telnyx/index.ts`.

`channels/index.ts` serves every route at `/webhooks/<type>/<id>` and verifies each webhook against the account's public key before reading it. A `messaging_profile` route runs `messagingWebhook`, a `call_control_application` route runs the call handler, and an `email_domain` route runs `emailWebhook`.

> [!WARNING]
>
> **Beta.** A `texml_application` channel is declared and validated, but its handler is not implemented yet. A webhook to it answers 501.
