Pular para o conteúdo principal
Quando alguém envia um Formulário Instantâneo do Meta Lead Ads (Facebook ou Instagram) numa Página do Facebook vinculada a um dos seus números de WhatsApp no painel da Pilot Status, a Pilot Status guarda o lead sob esse número. Estes dois endpoints leem esses leads de volta: um lista, outro devolve um único lead.

Endpoints

GET https://pilotstatus.com.br/v1/leads GET https://pilotstatus.com.br/v1/leads/{id}
Os dois atuam sobre um número: use uma API key escopada a número (ps_*) no header x-api-key, ou uma chave da conta que indique o número no header x-whatsapp-number-id. Uma chave da conta sem esse header recebe 403 TENANT_SCOPE_NOT_ALLOWED.
Um lead pertence ao número ao qual a Página dele está vinculada, exatamente como uma conversa. Você só vê os leads do número sobre o qual a requisição atua — nunca os dos seus outros números. Tokens OAuth / MCP também precisam da permissão chat:read no workspace: lead é dado de contato de uma pessoa, então o papel ANALYST é recusado com 403 PERMISSION_DENIED. Uma chave ps_ clássica não é afetada por papéis. Os mesmos dados estão disponíveis para agentes de IA pelas ferramentas leads_list e leads_get do servidor MCP. Para ser avisado de um lead novo assim que ele chega, em vez de consultar, assine um webhook no evento lead.received. Ele é opt-in: um webhook assinado em "*" não o recebe, então cite "lead.received" pelo nome.

Dois ids: id e leadgenId

consentGiven tem três estados

null significa desconhecido — nunca leia como recusa, nem como consentimento.
O valor é decidido quando o lead é guardado, a partir da caixa configurada para o formulário naquele momento. Configurar a caixa depois não altera leads já guardados.

GET /v1/leads

Mais recentes primeiro por createdAt (empate desfeito pelo id, decrescente). Leads apagados nunca são listados nem contados.

Parâmetros de consulta

string
Restringe a um único id de Formulário Instantâneo.
string
Restringe a um único id de anúncio.
string
Restringe a um único id de Página do Facebook.
string
Data e hora ISO 8601. Leads com createdAt a partir deste instante (inclusive).
string
Data e hora ISO 8601. Leads com createdAt até este instante (inclusive).
integer
padrão:"1"
Número da página (≥ 1). Um valor ausente, não numérico ou menor é lido como 1.
integer
padrão:"30"
Resultados por página (1–100). Um valor maior é limitado a 100.
Os filtros de data valem sobre o createdAt — quando a pessoa enviou o formulário na Meta — e não sobre quando a Pilot Status guardou o lead. Um lead importado depois (source: "backfill") mantém a data em que a pessoa o enviou.

Paginação

A resposta traz total (todos os leads que atendem ao filtro), page, pageSize e totalPages. Informe contagens pelo total, não pelo tamanho de leads. A paginação para em 10.000 linhas: quando page × pageSize passa disso, a requisição falha com 400 INVALID_PAGINATION. Estreite o período com startDate/endDate em vez de paginar mais fundo.

Exemplo

GET /v1/leads/{id}

Devolve um lead do número pelo id da Pilot Status, no formato { "lead": { … } }, com os mesmos campos, as mesmas regras de privacidade e o mesmo notice da listagem.
string
obrigatório
O id do lead na Pilot Status — o campo id devolvido por GET /v1/leads, não o leadgenId da Meta.
Um lead de outro número, de outra conta, ou que foi apagado responde 404 LEAD_NOT_FOUND — a mesma resposta de um id que nunca existiu.

O objeto lead

Efeito do modo de privacidade (PII)

Um lead ocultado continua existindo e continua contando: mantém os ids, a atribuição (página, formulário, anúncio e os nomes resolvidos do anúncio — rótulos do próprio anunciante, não dados pessoais) e os campos de status. Só fullName, email e phone voltam null e fields volta vazio, com redacted: true. Essa divisão mantém a contagem e a atribuição de leads funcionando num número RELAY_ONLY em vez de não devolver nada. Um lead guardado já ocultado (porque o número estava em RELAY_ONLY quando ele chegou) continua ocultado mesmo depois que o número muda de modo — os dados pessoais nunca foram guardados.
Se o modo de privacidade do número não puder ser lido, os leads voltam sem ocultação. A checagem falha aberta: quando a Pilot Status não consegue ler o modo de PII do número ao responder (um erro de banco de dados, por exemplo), a requisição não é recusada — todo lead cujos dados pessoais estão guardados volta com fullName, email, phone e fields, e sem notice, mesmo num número RELAY_ONLY (por exemplo, leads captados antes de o número passar para RELAY_ONLY) e mesmo depois da janela do STORE_X_DAYS. Só um lead guardado já ocultado continua ocultado, porque não há nada para devolver. É proposital: uma checagem que falha nunca faz os seus leads sumirem. Se você depende da ocultação mais adiante, confira redacted lead a lead em vez de deduzi-la do modo do número.

Erros