> ## Documentation Index
> Fetch the complete documentation index at: https://help.wizebot.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Listar canais conectados

> Lista as contas de canal da sua empresa que participam do contrato neutro, cada uma com o bloco de capacidades que o servidor consulta para aceitar ou recusar um envio.

O `id` de cada conta é o que vai em `channel_id` no envio.

SMS não aparece aqui: é de mão única, não tem conta de canal nem conversa, e um contrato cujo remetente é uma conta não consegue descrevê-lo com honestidade.



## OpenAPI

````yaml /openapi.json get /channels
openapi: 3.1.0
info:
  title: API WizeBot
  version: 3.0.0
  description: >-
    A API da WizeBot tem duas camadas sobre a **mesma base**
    `https://api.wizebot.com.br/v1`.


    **Contrato multicanal** — a camada neutra. Os mesmos endpoints falam com
    WhatsApp, com Telegram e com os canais que vierem depois. O canal não
    aparece na URL nem no corpo: ele vem da conta escolhida como remetente.
    Campos, códigos e mensagens em inglês.


    **API de WhatsApp** — a camada específica do canal, com o que só o WhatsApp
    tem. Continua existindo e não muda; quem já integrou com ela não precisa
    migrar.


    Toda requisição se autentica por cabeçalho. Não há autenticação por corpo
    nem por query string.
servers:
  - url: https://api.wizebot.com.br/v1
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Canais
    description: Contas de canal conectadas e o que cada uma aceita.
  - name: Mensagens
    description: Envio e status pelo contrato neutro, em qualquer canal.
  - name: WhatsApp · Mensagens
    description: Envio, status e modelos na camada específica de WhatsApp.
  - name: WhatsApp · Contatos
    description: Contatos e campos personalizados.
  - name: WhatsApp · Etiquetas
    description: Etiquetas e sua atribuição a contatos.
  - name: WhatsApp · Sequências
    description: Sequências agendadas de um contato.
  - name: WhatsApp · Conta
    description: Verificação da chave de API.
paths:
  /channels:
    get:
      tags:
        - Canais
      summary: Listar canais conectados
      description: >-
        Lista as contas de canal da sua empresa que participam do contrato
        neutro, cada uma com o bloco de capacidades que o servidor consulta para
        aceitar ou recusar um envio.


        O `id` de cada conta é o que vai em `channel_id` no envio.


        SMS não aparece aqui: é de mão única, não tem conta de canal nem
        conversa, e um contrato cujo remetente é uma conta não consegue
        descrevê-lo com honestidade.
      operationId: listarCanais
      responses:
        '200':
          description: Contas de canal da empresa.
          content:
            application/json:
              schema:
                type: object
                required:
                  - success
                  - data
                  - timestamp
                properties:
                  success:
                    type: boolean
                    description: Sempre `true` nas respostas de sucesso.
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: >-
                                Identificador **interno** da conta. É ele que
                                vai em `channel_id` no envio.
                            channel:
                              type: string
                              description: Canal da conta — `whatsapp`, `telegram`.
                            display_name:
                              type: string
                              description: Nome legível da conta.
                            provider_identifier:
                              type: string
                              description: >-
                                Identificador na plataforma de origem (o
                                `phone_number_id` da Meta, por exemplo). Serve
                                para conferência humana; **não** é o que vai no
                                envio.
                            status:
                              type: string
                              description: Estado da conta.
                            capabilities:
                              type: object
                              description: >-
                                Servido a partir do descritor declarativo do
                                canal — a mesma fonte que o motor de envio
                                consulta.
                              properties:
                                message_types:
                                  type: array
                                  items:
                                    type: string
                                  description: Tipos que o canal aceita nesta fase.
                                max_text_length:
                                  type:
                                    - integer
                                    - 'null'
                                  description: Teto do corpo de uma mensagem de texto.
                                max_caption_length:
                                  type:
                                    - integer
                                    - 'null'
                                  description: >-
                                    Teto da legenda de mídia; `null` quando o
                                    canal não a limita à parte.
                                session_window_hours:
                                  type:
                                    - integer
                                    - 'null'
                                  description: >-
                                    Duração da janela de atendimento; `null`
                                    quando o canal não tem janela.
                                requires_template_outside_window:
                                  type: boolean
                                  description: >-
                                    Se falar fora da janela exige modelo
                                    aprovado.
                  timestamp:
                    type: string
                    format: date-time
              example:
                success: true
                data:
                  items:
                    - id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                      channel: whatsapp
                      display_name: +55 11 99999-9999
                      provider_identifier: '102938475610293'
                      status: connected
                      capabilities:
                        message_types:
                          - text
                          - image
                          - document
                          - audio
                          - video
                        max_text_length: 4096
                        max_caption_length: null
                        session_window_hours: 24
                        requires_template_outside_window: true
                    - id: b21c0de4-9f77-4a10-8c3e-1d5f8a2b6c40
                      channel: telegram
                      display_name: '@seu_bot'
                      provider_identifier: '@seu_bot'
                      status: connected
                      capabilities:
                        message_types:
                          - text
                          - image
                          - document
                          - audio
                          - video
                        max_text_length: 4096
                        max_caption_length: 1024
                        session_window_hours: null
                        requires_template_outside_window: false
                timestamp: '2026-09-09T17:15:20.453Z'
        '401':
          description: '`UNAUTHORIZED` — Invalid or missing API key.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErroDaApi'
              examples:
                UNAUTHORIZED:
                  summary: UNAUTHORIZED
                  value:
                    success: false
                    statusCode: 401
                    timestamp: '2026-09-09T17:15:20.453Z'
                    path: /api/v1/channels
                    method: GET
                    message:
                      error: UNAUTHORIZED
                      message: Invalid or missing API key.
                    errorId: ERR-MTUD0DBO-KKRMP8
        '429':
          description: '`RATE_LIMITED` — Too many requests.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErroDaApi'
              examples:
                RATE_LIMITED:
                  summary: RATE_LIMITED
                  value:
                    success: false
                    statusCode: 429
                    timestamp: '2026-09-09T17:15:20.453Z'
                    path: /api/v1/channels
                    method: GET
                    message:
                      error: RATE_LIMITED
                      message: Too many requests.
                    errorId: ERR-MTUD0DBO-KKRMP8
components:
  schemas:
    ErroDaApi:
      type: object
      description: >-
        Corpo de erro da API. `message` é um **objeto** com o código nomeado —
        não uma string.
      required:
        - success
        - statusCode
        - message
      properties:
        success:
          type: boolean
          description: Sempre `false`.
        statusCode:
          type: integer
        timestamp:
          type: string
          format: date-time
        path:
          type: string
          description: >-
            Caminho interno da requisição. Traz o prefixo `/api/v1` mesmo quando
            você chamou por `/v1`: o apelido é reescrito antes do roteamento.
        method:
          type: string
        message:
          type: object
          required:
            - error
            - message
          properties:
            error:
              type: string
              description: >-
                Código nomeado. É por ele que se trata o erro em código, nunca
                pelo texto.
            message:
              type: string
              description: Descrição em inglês, para leitura humana.
            details:
              type: object
              additionalProperties: true
              description: >-
                Contexto estruturado, presente nos códigos que o emitem —
                `CHANNEL_MISMATCH`, `NO_OPEN_CONVERSATION`,
                `RECIPIENT_NOT_ON_CHANNEL` e `UNSUPPORTED_CAPABILITY`.
        errorId:
          type: string
          description: Identificador do erro. Cite-o ao falar com o suporte.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Chave de API no cabeçalho `Authorization: Bearer SUA-CHAVE`.


        A API também aceita `x-api-key: SUA-CHAVE` e `Authorization: ApiKey
        SUA-CHAVE` — as três formas são equivalentes, inclusive para o limite de
        requisições.


        A chave dá acesso total à conta e é de servidor para servidor: não a use
        em navegador ou aplicativo móvel.

````