List channels
GET
Terminal window
/api/public/apps/v1/channels
Needs the channels:read permission (and groups:read to widen the result).
Every public channel of the workspace, each flagged is_member, so an integration can offer them in a picker and let people choose where the app goes. With groups:read it also lists the private channels the app already belongs to; a private channel the app was not added to is never listed.
Example
Section titled “Example”curl "https://amedeus.app/api/public/apps/v1/channels" \ -H "Authorization: Bearer $TOKEN"const response = await fetch("https://amedeus.app/api/public/apps/v1/channels", { headers: { Authorization: `Bearer ${process.env.TOKEN}` },});const result = await response.json(); // { ok: true, … } or { ok: false, error, message }import jsonimport osimport urllib.request
request = urllib.request.Request( "https://amedeus.app/api/public/apps/v1/channels", headers={ "Authorization": f"Bearer {os.environ['TOKEN']}", "User-Agent": "my-app/1.0", },)with urllib.request.urlopen(request) as response: result = json.load(response) # a 4xx or 5xx raises urllib.error.HTTPErrorResponse
Section titled “Response”| Field | Type | Required | Meaning |
|---|---|---|---|
ok |
true |
yes | |
channels |
array of object | yes |
{ "ok": true, "channels": [ { "id": "52f4c823-8e7f-4349-bb98-1ac8683aad13", "name": "…", "topic": "…", "kind": "public", "is_member": true, "created_at": "2026-11-12T19:18:43.527829+00:00" } ]}Errors
Section titled “Errors”Failures answer { "ok": false, "error": "<code>", "message": "…" }; see Errors.
401: The token is missing, wrong or revoked.403: A missing scope (the message names it), or a channel the app isn’t in.429: Slow down;Retry-Aftersays for how many seconds.