---
title: "List channels and whether they can be connected yet"
method: GET
path: "/api/channels/catalog"
tags: ["Channels"]
---

# List channels and whether they can be connected yet

`GET /api/channels/catalog`

## Request

- Base URL: `https://api.setluca.com`
- URL: `https://api.setluca.com/api/channels/catalog`
- Auth: one of:
  - API key in cookie `luca.session_token`
  - API key in header `x-api-key`
  - HTTP bearer

Every channel Luca knows about, and whether it's live yet. The UI uses this to show a coming-soon channel without pretending it can be connected. Availability is a per-channel flag, not a per-coach one.

**API key scopes:** `channels:read`.

## Headers

- `Luca-API-Version` '1'

## Response `200`

ok

- ChannelCatalogResponse
  - `channels` object[], required
    - `channel` 'telegram' | 'instagram' | 'messenger' | 'whatsapp', required
    - `status` 'available' | 'coming_soon', required
    - `releaseMode` 'off' | 'internal' | 'public', required
    - `visibility` 'hidden' | 'coming_soon' | 'visible', required

## Other responses

- `401`: unauthorized
- `429`: rate limited
- `500`: internal error
- `503`: service unavailable

---

[API](https://skmtc.dev/setluca/apis/luca-api.md) · [All operations](https://skmtc.dev/setluca/apis/luca-api/llms.txt) · [OpenAPI document](https://skmtc.dev/setluca/apis/luca-api/revisions/90a200e4100b?raw)
