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

# Consultar logs de mensagens

> Consulta o histórico de envios da conta (API, campanhas, automações e painel), do mais recente para o mais antigo, com filtros opcionais e paginação. Os filtros se combinam: só voltam os envios que atendem a todos os parâmetros informados.



## OpenAPI

````yaml openapi.json GET /query-message-logs
openapi: 3.1.0
info:
  title: OctaSend API
  description: >-
    API de mensageria multicanal — envie mensagens por E-mail, WhatsApp, SMS,
    Slack, Telegram, Web Push, In-App e Push mobile através de um único
    endpoint.
  version: 1.3.0
servers:
  - url: https://yghpblhxrfmxkwejvpjz.supabase.co/functions/v1
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Autenticação
  - name: Mensagens
  - name: Automações
  - name: Consultas
  - name: Widget In-App
  - name: Web Push
paths:
  /query-message-logs:
    get:
      tags:
        - Consultas
      summary: Consultar logs de mensagens
      description: >-
        Consulta o histórico de envios da conta (API, campanhas, automações e
        painel), do mais recente para o mais antigo, com filtros opcionais e
        paginação. Os filtros se combinam: só voltam os envios que atendem a
        todos os parâmetros informados.
      operationId: queryMessageLogs
      parameters:
        - name: id
          in: query
          description: >-
            Devolve uma única mensagem pelo id (o `message_id` do
            `/send-message`), no formato `{ "data": { ... } }`, em vez da lista
            paginada. Um valor que não é UUID responde `400`; id inexistente ou
            de outra conta responde `404`.
          schema:
            type: string
            format: uuid
        - name: tag
          in: query
          description: >-
            Devolve os envios que têm esta tag entre as suas tags. Uma tag por
            consulta.
          schema:
            type: string
          example: onboarding
        - name: channel
          in: query
          description: >-
            Devolve só os envios deste canal. Um valor fora da lista devolve
            lista vazia, sem erro.
          schema:
            $ref: '#/components/schemas/Channel'
        - name: status
          in: query
          description: >-
            Devolve só os envios com este status atual. Um valor fora da lista
            devolve lista vazia, sem erro.
          schema:
            $ref: '#/components/schemas/LogStatus'
        - name: communication_slug
          in: query
          description: >-
            Slug da comunicação, ativa ou não. Slug inexistente na conta devolve
            lista vazia, sem erro.
          schema:
            type: string
        - name: from
          in: query
          description: >-
            Envios criados a partir desta data e hora, inclusive (ISO 8601). Sem
            fuso no valor, vale UTC; para o fuso da conta, informe o
            deslocamento (ex.: `2026-01-01T00:00:00-03:00`)
          schema:
            type: string
            format: date-time
        - name: to
          in: query
          description: >-
            Envios criados até esta data e hora, inclusive (ISO 8601). Sem fuso
            no valor, vale UTC
          schema:
            type: string
            format: date-time
        - name: page
          in: query
          description: Página. Valores menores que 1 viram 1.
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: limit
          in: query
          description: Itens por página. Valores acima de 100 viram 100.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
      responses:
        '200':
          description: Lista paginada de envios
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryMessageLogsResponse'
              example:
                data:
                  - id: 3f1c2b9e-...
                    channel: email
                    status: sent
                    recipient_email: usuario@exemplo.com
                    recipient_phone: null
                    language_code: pt-BR
                    tag:
                      - onboarding
                      - junho-2024
                    variables:
                      nome: Ricardo
                    provider_message_id: 010f018e...
                    error_message: null
                    sent_at: '2026-01-10T10:00:01Z'
                    delivered_at: '2026-01-10T10:00:03Z'
                    read_at: '2026-01-10T10:12:40Z'
                    clicked_at: null
                    created_at: '2026-01-10T10:00:00Z'
                total: 150
                page: 1
                limit: 20
        '400':
          description: Com `id`, o valor não é um UUID
        '401':
          description: Credencial ausente, inválida, expirada ou revogada
          content:
            application/json:
              examples:
                missing:
                  value:
                    error: Authorization header required
                invalid:
                  value:
                    error: Invalid, expired or revoked token
        '404':
          description: Com `id`, a mensagem não existe na conta
        '500':
          description: >-
            A consulta não pôde ser feita (ex.: `from` ou `to` fora do formato
            ISO 8601)
          content:
            application/json:
              example:
                error: Database query failed
components:
  schemas:
    Channel:
      type: string
      enum:
        - email
        - whatsapp
        - sms
        - telegram
        - slack
        - web_push
        - in_app
        - push
    LogStatus:
      type: string
      description: >-
        `queued`: enfileirada, aguardando envio (ex.: fila de WhatsApp).
        `processing`: em processamento. `sent`: enviada, o provedor aceitou a
        mensagem (no WhatsApp oficial da Meta, a mensagem fica `sent` e as
        confirmações preenchem `delivered_at` e `read_at`). `delivered`:
        entregue e `read`: lida, confirmações do WhatsApp enviado pela Evolution
        API. `failed`: falhou (veja `error_message`), inclusive quando o envio
        foi recusado pelo limite diário da conta. `skipped`: ignorada (faltou
        dado do destinatário, não havia template no idioma, o número não tem
        WhatsApp, o canal In-App está desabilitado, o contato se descadastrou do
        canal — em campanhas, automações de marketing e envios pela API com
        `respect_opt_out: true` — ou, em campanhas, o contato foi removido antes
        de a mensagem sair).
      enum:
        - queued
        - processing
        - sent
        - delivered
        - read
        - failed
        - skipped
    QueryMessageLogsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/MessageLog'
        total:
          type: integer
          description: Total de envios que atendem aos filtros, somando todas as páginas
        page:
          type: integer
        limit:
          type: integer
    MessageLog:
      type: object
      description: >-
        Registro de um envio em um canal — o mesmo histórico da tela Logs do
        painel. Pode trazer outros campos além destes. As datas vêm em UTC; a
        tela Logs mostra as mesmas datas no fuso horário da conta.
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Identificador do registro — o mesmo `log_id` devolvido pelo
            `/send-message`
        channel:
          type: string
          description: 'Canal do envio (ex.: `email`, `whatsapp`, `sms`)'
        status:
          $ref: '#/components/schemas/LogStatus'
        recipient_email:
          type:
            - string
            - 'null'
          description: E-mail do destinatário, quando informado
        recipient_phone:
          type:
            - string
            - 'null'
          description: Telefone do destinatário, quando informado
        language_code:
          type: string
          description: Idioma do template usado
        tag:
          type:
            - array
            - 'null'
          items:
            type: string
          description: Tags do envio, ou `null`
        variables:
          type: object
          description: Variáveis enviadas
        sent_content:
          type:
            - object
            - 'null'
          description: >-
            Conteúdo da mensagem já com as variáveis preenchidas, como o
            destinatário recebeu. Formato por canal: `email` → `{ subject,
            body_html, body_text }`; `push`, `web_push` e `in_app` → `{ title,
            body_text }`; `whatsapp` → `{ messages: [ { body_text, status, ... }
            ] }`; `telegram`, `slack` e `sms` → `{ body_text }`. É `null` em
            envios antigos.
        provider_message_id:
          type:
            - string
            - 'null'
          description: Identificador devolvido pelo provedor
        error_message:
          type:
            - string
            - 'null'
          description: Motivo da falha ou do descarte
        error_code:
          type:
            - string
            - 'null'
          description: >-
            Código do erro, quando há: o informado pelo provedor (ex.: código da
            Meta, evento do SendGrid) ou `daily_limit_reached`, quando o envio
            foi recusado pelo limite diário da conta
        sent_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Quando o provedor aceitou a mensagem
        delivered_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Quando a entrega foi registrada. No e-mail, vem da entrega informada
            pelo SendGrid; sem ela, da primeira abertura
        read_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Quando a leitura foi registrada: no WhatsApp, a confirmação de
            leitura; no e-mail, a primeira abertura
        clicked_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Quando um clique foi registrado (e-mail e Web Push)
        created_at:
          type: string
          format: date-time
          description: Quando o registro foi criado
      additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Access token (`at_...`) obtido em `/oauth-token`, ou o par
        `client_id:client_secret` separado por dois-pontos, sem espaços.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.