> ## 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.

# List Lead Ads Pages

> The Facebook Pages linked to your WhatsApp numbers for **Meta Lead Ads** capture, and the Pages you can still link. A lead submitted on an Instant Form of a linked Page is stored under that Page's number (read them with [`GET /v1/leads`](/api/leads)).

There is no Meta login step: the advertiser shares the Page with the Pilot Status business portfolio (`partnerBusinessId`) in Meta Business Manager and gives the Pilot Status system user the Page tasks. `candidates[].missingTasks` lists what is still missing (`MODERATE`, `MANAGE_LEADS`, or `PAGE_ACCESS` when the Page was not assigned to the system user at all); an empty list means ready to link, `null` means Meta could not be asked.

A Page can be linked only when its owner business also owns the WABA of one of your **official** (Meta Cloud API) numbers; with none, `candidates` is empty and `eligibilityBlocker` is `NO_OFFICIAL_NUMBER`. In `linked`, `subscribedAt: null` means Meta is **not** pushing leads for that Page — `subscriptionError` says why (`META_PERMISSION_MISSING`, `PAGE_ACCESS_MISSING`, `PAGE_NOT_SHARED`, `PAGE_BUSINESS_MISMATCH`, …) and [resync](/api/lead-pages) retries it. `candidatesLookup` is `ok`, `unavailable` or `not_configured`.

OAuth/MCP tokens need `integrations:manage` (workspace ADMIN or OWNER) on every verb, reads included. Scope: a number-scoped key, or an account-wide credential with `x-whatsapp-number-id`, acts only on that number's links; an account-wide credential without the header sees the whole workspace.



## OpenAPI

````yaml openapi.json GET /v1/lead-pages
openapi: 3.1.0
info:
  title: Pilot Status API
  version: 1.0.0
  license:
    name: Pilot Status Terms of Service
    url: https://pilotstatus.com.br/terms
  description: >-
    Public REST API for Pilot Status. Authenticate with the `x-api-key: ps_...`
    header (or `x-api-key-id`). Base URL: https://pilotstatus.com.br
servers:
  - url: https://pilotstatus.com.br
security:
  - apiKey: []
  - apiKeyId: []
paths:
  /v1/lead-pages:
    get:
      tags:
        - Ads
      summary: List Lead Ads Pages
      description: >-
        The Facebook Pages linked to your WhatsApp numbers for **Meta Lead Ads**
        capture, and the Pages you can still link. A lead submitted on an
        Instant Form of a linked Page is stored under that Page's number (read
        them with [`GET /v1/leads`](/api/leads)).


        There is no Meta login step: the advertiser shares the Page with the
        Pilot Status business portfolio (`partnerBusinessId`) in Meta Business
        Manager and gives the Pilot Status system user the Page tasks.
        `candidates[].missingTasks` lists what is still missing (`MODERATE`,
        `MANAGE_LEADS`, or `PAGE_ACCESS` when the Page was not assigned to the
        system user at all); an empty list means ready to link, `null` means
        Meta could not be asked.


        A Page can be linked only when its owner business also owns the WABA of
        one of your **official** (Meta Cloud API) numbers; with none,
        `candidates` is empty and `eligibilityBlocker` is `NO_OFFICIAL_NUMBER`.
        In `linked`, `subscribedAt: null` means Meta is **not** pushing leads
        for that Page — `subscriptionError` says why (`META_PERMISSION_MISSING`,
        `PAGE_ACCESS_MISSING`, `PAGE_NOT_SHARED`, `PAGE_BUSINESS_MISMATCH`, …)
        and [resync](/api/lead-pages) retries it. `candidatesLookup` is `ok`,
        `unavailable` or `not_configured`.


        OAuth/MCP tokens need `integrations:manage` (workspace ADMIN or OWNER)
        on every verb, reads included. Scope: a number-scoped key, or an
        account-wide credential with `x-whatsapp-number-id`, acts only on that
        number's links; an account-wide credential without the header sees the
        whole workspace.
      operationId: get_lead-pages
      parameters:
        - name: x-whatsapp-number-id
          in: header
          required: false
          description: >-
            Narrows an account-wide credential to one number (its id or instance
            id from `GET /v1/numbers`). Without it, an account-wide credential
            sees the whole workspace; a number-scoped key always sees only its
            own number.
          schema:
            type: string
          example: num_01HZX...
      responses:
        '200':
          description: Linked and linkable Pages
          content:
            application/json:
              example:
                linked:
                  - pageLinkId: cmgpl0001ab12cd34ef56
                    pageId: '102345678901234'
                    pageName: MM Design
                    whatsappNumberId: num_01HZX...
                    subscribedAt: '2026-10-06T10:15:00.000Z'
                    subscriptionError: null
                    linkedAt: '2026-10-06T10:14:58.000Z'
                    leadsCount: 42
                candidates:
                  - pageId: '109876543210987'
                    pageName: MM Design Outlet
                    missingTasks:
                      - MANAGE_LEADS
                configured: true
                partnerBusinessId: '123456789012345'
                candidatesLookup: ok
                eligibilityBlocker: null
        '400':
          description: >-
            `NUMBER_REQUIRED` (a per-number OAuth grant without
            `x-whatsapp-number-id`) or `NUMBER_NOT_FOUND` (a number-scoped key
            whose number was deleted)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: >-
                  Provide x-whatsapp-number-id for a per-number connection |
                  Envie o header x-whatsapp-number-id para uma conexão por
                  número
                code: NUMBER_REQUIRED
        '401':
          description: Missing or invalid `x-api-key` / `x-api-key-id` header
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: Unauthorized
        '403':
          description: An OAuth token whose workspace role lacks `integrations:manage`
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
              example:
                error: >-
                  Your workspace role does not allow this action
                  (integrations:manage).
                code: PERMISSION_DENIED
        '500':
          description: Internal error
          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: Your ps_ API key
    apiKeyId:
      type: apiKey
      in: header
      name: x-api-key-id
      description: API key id (alternative to x-api-key)

````

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