---
title: "List School Channels"
method: GET
path: "/channels/school"
tags: ["channels", "channels"]
---

# List School Channels

`GET /channels/school`

School Spaces: the private channel(s) of the organization(s) the current
user belongs to. Auto-joins them as a ChannelMember (for unread tracking).

`org_id` scopes the answer to ONE school, and the school surfaces pass it.
Without it this returns every school the viewer belongs to merged into one
list, which is right for the chat sidebar — that is the viewer's own list of
places, not a page about one institution — and wrong everywhere else. A
coordinator of two schools opened one school's Channels tab and saw the
other school's channels in it.

Not a filter the client could have applied for itself: the auto-join below
is a WRITE, so an unscoped call quietly enrols the viewer in every channel
of every school they belong to whichever page they happened to open.
Scoping the query scopes the write with it.

Membership is still what decides. `org_id` may only narrow what the viewer
would have been shown anyway — asking for a school you are not in returns
nothing rather than 403, because the honest answer to "your channels at that
school" is that you have none, and a 403 would confirm the school exists.

## Query parameters

- `org_id` string, nullable — Scope to ONE school. Omit for every school you are in.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fluentea/aurqa-language-learning-platform-refactored/revisions/78f314acd8bf/schema)
