---
title: "List channel kinds"
method: GET
path: "/v1/channel-kinds"
tags: ["Channels"]
---

# List channel kinds

`GET /v1/channel-kinds`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/channel-kinds`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Every connectable kind, its surfaces, and the predicates its routes can match on (engine-wide ones like `address_known` plus its own, like Discord's `guild_id`).

## Response `200`

Every channel kind.

- ChannelKindList
  - `data` ChannelKind[], required
    - `kind` 'whatsapp' | 'discord', required
    - `surfaces` ChannelSurface[], required
      - `name` string, required: Stable, wire-visible id, unique within the kind.
      - `title` string, required
      - `shared` boolean, required: Several humans share one conversation here (a thread, a Slack channel).
    - `predicates` ChannelPredicate[], required
      - `name` string, required
      - `type` string, required: The value shape this predicate's `match` entry expects.

## Other responses

- `401`: Missing or invalid credentials.

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
