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

# Resumo por anúncio

> Tráfego Click-to-WhatsApp agrupado **por anúncio**, com os nomes resolvidos do anúncio, do conjunto de anúncios e da campanha e a quantidade de leads do Meta Lead Ads que cada anúncio gerou (`leadCount`). Ordenado por `conversations` e depois por `lastAt`.

**Permissão: `analytics:read`**, que todo papel do workspace tem, ANALYST incluído — é volume, não conteúdo de conversa (compare com [`GET /v1/referrals/summary`](/pt-BR/api/referrals), que exige `chat:read` e cobre um número). **Escopo:** uma chave com escopo de número, ou uma credencial da conta inteira com `x-whatsapp-number-id`, reporta só aquele número; uma credencial da conta inteira sem o header reporta o workspace todo e pode restringir com o parâmetro de consulta `whatsappNumberId`.

`conversations` conta conversas distintas e `messages` conta mensagens, separadamente. `lastHeadline` e `lastSourceUrl` (o texto do anúncio) vêm `null` para um anúncio visto só em número RELAY_ONLY; as contagens não mudam. `namesResolvedAt` preenchido com todos os nomes `null` significa que a Pilot Status perguntou à Meta e não recebeu nada (peça a concessão de parceiro ao anunciante); `null` significa que ainda não perguntou. Limite de 200 anúncios: `truncated: true` avisa que a lista foi cortada — restrinja com `startDate`/`endDate`. Um anúncio que gerou leads mas nunca uma conversa não tem linha aqui; consulte-o em [`GET /v1/leads`](/pt-BR/api/leads).



## OpenAPI

````yaml openapi.pt.json GET /v1/ads/summary
openapi: 3.1.0
info:
  title: API Pilot Status
  version: 1.0.0
  license:
    name: Pilot Status Terms of Service
    url: https://pilotstatus.com.br/terms
  description: >-
    API REST pública do Pilot Status. Autentique com o header `x-api-key:
    ps_...` (ou `x-api-key-id`). Base URL: https://pilotstatus.com.br
servers:
  - url: https://pilotstatus.com.br
security:
  - apiKey: []
  - apiKeyId: []
paths:
  /v1/ads/summary:
    get:
      tags:
        - Ads
      summary: Resumo de anúncios
      description: >-
        Tráfego Click-to-WhatsApp agrupado **por anúncio**, com os nomes
        resolvidos do anúncio, do conjunto de anúncios e da campanha e a
        quantidade de leads do Meta Lead Ads que cada anúncio gerou
        (`leadCount`). Ordenado por `conversations` e depois por `lastAt`.


        **Permissão: `analytics:read`**, que todo papel do workspace tem,
        ANALYST incluído — é volume, não conteúdo de conversa (compare com [`GET
        /v1/referrals/summary`](/pt-BR/api/referrals), que exige `chat:read` e
        cobre um número). **Escopo:** uma chave com escopo de número, ou uma
        credencial da conta inteira com `x-whatsapp-number-id`, reporta só
        aquele número; uma credencial da conta inteira sem o header reporta o
        workspace todo e pode restringir com o parâmetro de consulta
        `whatsappNumberId`.


        `conversations` conta conversas distintas e `messages` conta mensagens,
        separadamente. `lastHeadline` e `lastSourceUrl` (o texto do anúncio) vêm
        `null` para um anúncio visto só em número RELAY_ONLY; as contagens não
        mudam. `namesResolvedAt` preenchido com todos os nomes `null` significa
        que a Pilot Status perguntou à Meta e não recebeu nada (peça a concessão
        de parceiro ao anunciante); `null` significa que ainda não perguntou.
        Limite de 200 anúncios: `truncated: true` avisa que a lista foi cortada
        — restrinja com `startDate`/`endDate`. Um anúncio que gerou leads mas
        nunca uma conversa não tem linha aqui; consulte-o em [`GET
        /v1/leads`](/pt-BR/api/leads).
      operationId: get_ads-summary
      parameters:
        - name: x-whatsapp-number-id
          in: header
          required: false
          description: >-
            Restringe uma credencial da conta inteira a um número (o id dele ou
            o id da instância, de `GET /v1/numbers`). Sem ele, uma credencial da
            conta inteira vê o workspace todo; uma chave com escopo de número vê
            sempre só o próprio número.
          schema:
            type: string
          example: num_01HZX...
        - name: whatsappNumberId
          in: query
          required: false
          description: >-
            Restringe a um número dentro do escopo da credencial (senão, `403
            NUMBER_NOT_IN_GRANT`).
          schema:
            type: string
          example: num_01HZX...
        - name: startDate
          in: query
          required: false
          description: >-
            Início do intervalo (ISO 8601), sobre o horário da mensagem — e a
            data de criação do lead na Meta para `leadCount`. Deve ser ≤
            endDate.
          schema:
            type: string
            format: date-time
          example: '2026-10-01T00:00:00Z'
        - name: endDate
          in: query
          required: false
          description: Fim do intervalo (ISO 8601), inclusive.
          schema:
            type: string
            format: date-time
          example: '2026-10-21T23:59:59Z'
      responses:
        '200':
          description: Resumo por anúncio
          content:
            application/json:
              example:
                ads:
                  - sourceId: '120249828053880703'
                    sourceType: ad
                    conversations: 37
                    messages: 214
                    firstAt: '2026-10-02T11:04:19.000Z'
                    lastAt: '2026-10-20T22:41:07.000Z'
                    lastSourceUrl: https://fb.me/2bXyZ
                    lastHeadline: Reforma com 70% de desconto
                    adName: Ads 01 - Vídeo dos 70%
                    adsetId: '120249828053880001'
                    adsetName: '[IG] [LL1% IG + VÍDEOS] - 35 a 50'
                    campaignId: '120249828053870000'
                    campaignName: '[CD-01] [LEADS] - MM Design - Sale 70%'
                    namesResolvedAt: '2026-10-20T23:00:02.000Z'
                    leadCount: 12
                total: 1
                limit: 200
                truncated: false
        '400':
          description: >-
            Intervalo de datas inválido (`INVALID_DATE_RANGE`), ou
            `NUMBER_REQUIRED` (concessão OAuth por número sem
            `x-whatsapp-number-id`) ou `NUMBER_NOT_FOUND` (chave com escopo de
            número cujo número foi apagado)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: >-
                  startDate must be before or equal to endDate | Intervalo de
                  datas inválido (use ISO 8601, startDate <= endDate)
                code: INVALID_DATE_RANGE
        '401':
          description: Header `x-api-key` / `x-api-key-id` ausente ou inválido
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: Unauthorized
        '403':
          description: >-
            O número está fora do escopo da credencial (`NUMBER_NOT_IN_GRANT`),
            ou token OAuth cujo papel no workspace não tem `analytics:read`
            (`PERMISSION_DENIED`)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: >-
                  This credential is not granted access to that WhatsApp number
                  | Esta credencial não tem acesso a esse número de WhatsApp
                code: NUMBER_NOT_IN_GRANT
        '500':
          description: Erro interno
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: Internal server error | Erro interno do servidor
                code: INTERNAL_ERROR
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Sua chave de API ps_
    apiKeyId:
      type: apiKey
      in: header
      name: x-api-key-id
      description: Id da chave de API (alternativa ao x-api-key)

````

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