> ## Documentation Index
> Fetch the complete documentation index at: https://developer.wabox.me/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Wabox é uma API não-oficial de WhatsApp (aparelho vinculado). Tudo é snake_case; a base é https://api.wabox.me/instances/{instance_id}/token/{token}.
> Envios respondem { id, message_id, wabox_id, status: "queued" } na hora; o resultado real chega no webhook delivery. Envios não são idempotentes: confira GET /queue antes de repetir.
> Sempre verifique X-Wabox-Signature (HMAC-SHA256 de "<t>.<corpo cru>") nos webhooks e deduplique por event_id.
> Botões, listas, carrossel e catálogo são best effort e não renderizam no WhatsApp Web/Desktop. Não existem: chamadas, listas de transmissão, histórico de mensagens, instância mobile.
> Não invente endpoints ou campos: use o OpenAPI em https://api.wabox.me/openapi.json.

# Publicações recentes

> Metadados + texto das últimas publicações. A mídia não é baixada: para publicações de imagem/vídeo/documento você recebe só o `type` (e o `text`, se houver). `?count=` (≤ 100, padrão 50) e `?before=<server_id>` paginam para trás. Imediata: exige a instância conectada (caso contrário, 409 `instance_not_connected`).



## OpenAPI

````yaml /openapi.json get /instances/{instance_id}/token/{token}/newsletters/{id}/messages
openapi: 3.1.0
info:
  title: Wabox API
  description: >-
    API pública do Wabox — WhatsApp via REST + webhooks.


    Base: `{server}/instances/{instance_id}/token/{token}`. Header
    `Client-Token` obrigatório quando ativado em Segurança.


    Tudo em `snake_case`. Datas ISO-8601 (UTC). Erros: `{ "error": { "code":
    "...", "message": "..." } }`.


    Envios respondem `{ id, message_id, wabox_id, status: "queued" }` na hora; o
    resultado chega no webhook `delivery`. `message_id` já é o id definitivo do
    WhatsApp.
  version: '1.0'
  contact: {}
servers:
  - url: https://api.wabox.me
security: []
tags:
  - name: Instance
    description: >-
      Conexão (QR code / código de pareamento), status, webhooks e configurações
      da instância.
    x-group: Instância
  - name: Messages
    description: >-
      Envio de texto, mídia, localização, contatos, reações, enquetes e ações
      sobre mensagens. Tudo passa pela fila; o resultado chega no webhook
      `delivery`.
    x-group: Mensagens
  - name: Interactive
    description: >-
      Botões, listas, carrossel, PIX, eventos de calendário, status (stories) e
      convite de canal. Best effort: renderizam no celular; o WhatsApp
      Web/Desktop não exibe botões, listas nem carrossel.
    x-group: Interativos
  - name: Queue
    description: Mensagens aguardando envio (pacing anti-ban ou instância desconectada).
    x-group: Fila
  - name: Chats
    description: >-
      Lista de conversas, ações (arquivar, silenciar, fixar, ler) e mensagens
      temporárias.
    x-group: Chats
  - name: Contacts
    description: Contatos, foto de perfil, verificação de números e bloqueio.
    x-group: Contatos
  - name: Profile
    description: Nome, recado e foto do número conectado.
    x-group: Perfil
  - name: Groups
    description: >-
      Criar, listar, administrar participantes, links de convite e
      configurações.
    x-group: Grupos
  - name: Communities
    description: Comunidades e vínculo de grupos.
    x-group: Comunidades
  - name: Newsletters
    description: >-
      Canais (newsletters): criar, seguir, ler e reagir a posts. Para publicar,
      use qualquer `send-*` com `phone: <id>@newsletter`.
    x-group: Canais
  - name: Privacy
    description: Configurações de privacidade da conta.
    x-group: Privacidade
  - name: Business
    description: >-
      Perfil comercial, catálogo de produtos, pedidos e envio de
      produto/catálogo/pedido. Best effort: depende do protocolo do WhatsApp
      Web.
    x-group: Business e catálogo
  - name: Labels
    description: Etiquetas (labels) de conversas — só em contas WhatsApp Business.
    x-group: Etiquetas
  - name: Partner
    description: >-
      Para integradores: criar e administrar instâncias do próprio workspace
      Partner com o header `Partner-Token` (base `/partner`, sem
      `instance_id`/`token` na URL). As instâncias criadas aqui são operadas
      pela API pública normal e não têm trial nem `402`.
    x-group: Partner
  - name: Webhooks
    description: Eventos entregues por `POST` na URL configurada em cada instância.
    x-group: Webhooks
paths:
  /instances/{instance_id}/token/{token}/newsletters/{id}/messages:
    get:
      tags:
        - Newsletters
      summary: Publicações recentes
      description: >-
        Metadados + texto das últimas publicações. A mídia não é baixada: para
        publicações de imagem/vídeo/documento você recebe só o `type` (e o
        `text`, se houver). `?count=` (≤ 100, padrão 50) e `?before=<server_id>`
        paginam para trás. Imediata: exige a instância conectada (caso
        contrário, 409 `instance_not_connected`).
      operationId: newsletters.messages
      parameters:
        - name: instance_id
          required: true
          in: path
          description: Id da instância (dashboard › instância › Credenciais).
          schema:
            type: string
          example: 8f2a3c1e-6b7d-4e5f-9a0b-1c2d3e4f5a6b
        - name: token
          required: true
          in: path
          description: Token da instância. Trate como senha.
          schema:
            type: string
          example: 3A1F5C7E9B2D4F6A8C0E1B3D5F7A9C2E
        - name: id
          required: true
          in: path
          description: Id do canal (`<id>@newsletter`).
          schema:
            example: 120363999999999999@newsletter
            type: string
        - name: before
          required: false
          in: query
          description: Retorna publicações anteriores a este `server_id` (paginação).
          schema: {}
        - name: count
          required: false
          in: query
          description: Quantidade de publicações (1–100, padrão 50).
          schema: {}
      responses:
        '200':
          description: Publicações em `data`, da mais recente para a mais antiga.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/NewsletterPost'
                required:
                  - data
                additionalProperties: false
              example:
                data:
                  - server_id: 119
                    message_id: 3EB0A9C6D2F1E4B5A7F1
                    timestamp: '2026-08-19T10:00:00.000Z'
                    type: text
                    text: Bem-vindos ao canal!
                    views_count: 980
                    reactions:
                      👍: 12
                      ❤️: 3
                  - server_id: 118
                    message_id: 3EB0A9C6D2F1E4B5A7F0
                    timestamp: '2026-08-18T10:00:00.000Z'
                    type: image
                    views_count: 1500
                    reactions: {}
        '401':
          description: Instância/token inválidos ou `Client-Token` ausente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              example:
                error:
                  code: instance_not_found
                  message: Instance not found or invalid token
        '402':
          description: Trial expirado ou assinatura inativa.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              example:
                error:
                  code: subscription_required
                  message: >-
                    Trial expired or subscription inactive. Subscribe in the
                    dashboard to keep sending.
        '409':
          description: Instância não conectada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
              example:
                error:
                  code: instance_not_connected
                  message: Instance is not connected
      x-codeSamples:
        - lang: typescript
          label: TypeScript (@wabox/sdk)
          source: >
            import { createWabox } from "@wabox/sdk";


            const wabox = createWabox({
              instanceId: process.env.WABOX_INSTANCE_ID!,
              token: process.env.WABOX_TOKEN!,
            });


            const { data, error } = await
            wabox.GET("/newsletters/{id}/messages", {
              params: {
                path: { id: "120363999999999999@newsletter" },
              },
            });

            if (error) throw new Error(error.error.message);

            console.log(data);
components:
  schemas:
    NewsletterPost:
      type: object
      properties:
        server_id:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        message_id:
          type: string
        timestamp:
          type: string
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
            - ptv
            - gif
            - document
            - sticker
            - location
            - contact
            - contacts
            - link
            - reaction
            - poll
            - poll_vote
            - buttons
            - buttons_response
            - list
            - list_response
            - template
            - carousel
            - pix
            - event
            - event_response
            - status
            - newsletter_invite
            - product
            - order
            - payment
            - pin
            - forward
            - revoke
            - notification
            - unsupported
        text:
          type: string
        views_count:
          type: integer
          minimum: 0
          maximum: 9007199254740991
        reactions:
          default: {}
          type: object
          additionalProperties:
            type: integer
            minimum: 0
            maximum: 9007199254740991
      required:
        - server_id
        - message_id
        - timestamp
        - type
        - views_count
        - reactions
      additionalProperties: false
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: >-
                Código estável do erro (`instance_not_found`,
                `invalid_request`…).
            message:
              type: string
              description: Descrição legível, em inglês.
            details:
              description: 'Contexto extra (ex.: `issues` de validação).'
              type: object
              additionalProperties: {}
          required:
            - code
            - message
          additionalProperties: false
      required:
        - error
      additionalProperties: false

````