# Channel API

> Invoke custom ingress, inspect deployed Channels, send outbound messages, read receipts and events, and manage alarms.

## Ingress and built-in adapters {#ingress}

| Method | Path | Purpose |
| --- | --- | --- |
| `ANY` | `/v1/channels/:tenant/:namespace/:channel/*` | Invoke a deployed custom public Channel through its Auth Provider |
| `POST` | `/v1/chat/completions` | OpenAI Chat Completions adapter |
| `POST` | `/v1/messages` | Anthropic Messages adapter |

Custom ingress authentication is defined by the Channel’s exact Auth Provider. The built-in adapters use central Constal API key authentication and select the Agent from the protocol’s model field.

## Discovery and operation {#operation}

All namespace endpoints begin `/v1/namespaces/:namespace`.

| Method | Suffix | Purpose |
| --- | --- | --- |
| `GET` | `/channels` | List deployed Channels |
| `GET` | `/channels/:channel` | Read protocol, target, Auth Provider, capabilities, and deployment |
| `POST` | `/channels/:channel/messages` | Send one outbound SDK `ChannelMessage` |
| `GET` | `/channels/:channel/messages/:messageId` | Read a durable delivery receipt |
| `GET` | `/channels/:channel/events` | Read bounded Channel events |
| `POST` | `/channels/:channel/alarms` | Schedule one SDK `ChannelAlarm` |
| `GET` / `DELETE` | `/channels/:channel/alarms/:alarmId` | Inspect or cancel the alarm |

The Channel package must declare optional `send` before outbound messages and optional `alarm` before scheduled wakeups. Delivery ids and alarm ids are stable idempotency identities managed by Constal. Raw Credential values never appear in these API responses. See [Build Channels and Auth Providers](/docs/sdk/channels-and-auth.md) for executable contracts and [Operate Channels](/docs/channels/operate.md) for troubleshooting.
