---
title: "List Slack channels for the channel picker"
method: GET
path: "/v1/connect/slack"
tags: ["Connect"]
---

# List Slack channels for the channel picker

`GET /v1/connect/slack`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/connect/slack`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/zernio/apis/zernio-api/docs/v1/connect/slack/get.ts> (a function with typed inputs; its response is checked against the schema)

Serves the channel picker of the Slack connect flow. Slack's OAuth installs the bot into a workspace, not a channel, so after the redirect the caller lists the workspace's channels here and finalizes one with `POST /v1/connect/slack`.

Served by a dedicated route that shadows `GET /v1/connect/{platform}` for `slack`.

### Parameters

Send exactly one of:

- `pendingDataToken`: first connect. The nonce from the OAuth redirect, bound to the same `profileId`.
- `accountId`: add another channel to a workspace already connected. The existing Slack account's workspace token is reused, no re-OAuth.

With neither, the endpoint behaves like `GET /v1/connect/{platform}` and returns `authUrl` and `state` to start the OAuth flow.

### Channels

Channels are read live from Slack (`conversations.list`, public and private, archived excluded, up to 2,000).

`isMember` says whether the Zernio bot is already in the channel. A public channel is joined automatically on finalize; a private one must be invited (`/invite @Zernio`) first.

## Query parameters

- `profileId` string, required
- `pendingDataToken` string
- `accountId` string
- `redirect_url` string, uri
- `scopes` string

## Response `200`

Channel list (picker mode), or the OAuth URL when neither `pendingDataToken` nor `accountId` is sent

- union
  - object
    - `team` object, required
      - `id` string: Slack workspace (team) id
      - `name` string, nullable
      - `icon` string, uri, nullable: Workspace icon URL
    - `channels` object[], required
      - `id` string, required: Channel id (C... or G...), the value to send as channelId on POST
      - `name` string, required
      - `isPrivate` boolean, required
      - `isMember` boolean, required: Whether the Zernio bot is already a member of the channel
  - object
    - `authUrl` string, uri, required
    - `state` string, required

## Other responses

- `400`: Invalid profileId or accountId format, or pendingDataToken invalid, expired or issued for another profile (code: invalid_field_value)
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `403`: No access to the profile, or Slack connections are temporarily unavailable (code: feature_not_available), or the connect token was issued for a different profile or platform (INSUFFICIENT_PERMISSIONS)
- `404`: Profile not found (start-OAuth mode), or no active Slack account with that accountId for this user or their team (code: account_not_found)

## Changes

- **2026-11-10** `d568bb00ed73`: 5 info
  - added the optional property `docsUrl` to the response with the `401` status
  - added the optional property `provider` to the response with the `401` status
  - added the optional property `providerError` to the response with the `401` status
  - added the optional property `requestId` to the response with the `401` status
  - …1 more
- **2026-10-06** `f8c8f34fb41a`: 1 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 7 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `401` status
  - added the optional property `param` to the response with the `401` status
  - …3 more
- **2026-09-29** `69bbe3da3a18`: 1 info
  - added the new optional `query` request parameter `scopes`
- **2026-09-08** `d7a8fa118ef0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/connect/slack/get.md)

---

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