Skip to main content
As rotas de lead ficam em /leads/{numero}, em que {numero} é o número do WhatsApp do lead, só dígitos, com DDI (ver Identificar o lead). Se o lead não existe no projeto da chave, toda rota daqui responde 404 Lead with number … not found. Ligar ou desligar a IA e encerrar o atendimento ficam em Controle da IA. Notificar o responsável fica em Notificar responsável.

Como obter uma lista de leads?

Não existe endpoint para listar ou buscar leads. A API age sobre um lead que você já conhece. Para trabalhar com vários leads:
  • Exportação: Contatos → Exportar gera um CSV com nome, telefone, coluna e tags de todos os contatos. Filtre a planilha e use a coluna telefone. Ver Contatos.
  • Do seu sistema: os números ou ids que o seu CRM, ERP ou planilha já tem.
  • Dos webhooks: guarde lead.id e lead.wa_id de cada evento recebido. Ver Webhooks de saída.
Para a mesma ação em muitos leads (pôr tag, mover), as ações em massa de Contatos costumam ser mais simples. Se for pela API, espace as chamadas (Limites).

GET /leads/{numero}

Devolve os dados do lead.
200
Campos sem valor não aparecem no JSON. Trate ausência como vazio.

GET /leads/{numero}/threads

Lista as conversas (threads) do lead, da mais nova para a mais antiga.
200
closed_at: null é a conversa aberta. Use o thread_id em GET /messages/history.

PATCH /leads/{numero}/notes

Escreve na anotação do lead.
200 { "message": "Update note successfully" } Não dá para apagar a anotação pela API (note vazio é 400). Para zerar, substitua por um texto curto ou limpe no painel.

PATCH /leads/{numero}/properties

Preenche uma propriedade do lead.
200 { "message": "Update property successfully" } Para mudar várias propriedades, faça uma chamada por propriedade. Não dá para apagar o valor de uma propriedade pela API.

POST e DELETE /leads/{numero}/tag

Põe (POST) ou tira (DELETE) uma tag. O corpo é o mesmo nos dois.
O 409 quer dizer “já está como você queria”. Trate como sucesso numa sincronização.

PATCH /leads/{numero}/kanban

Move o lead para uma coluna do funil.

PATCH /leads/{numero}/assignee

Põe o lead num departamento e escolhe o responsável, ou deixa o rodízio escolher. Sem user_email e sem user_id, o rodízio do departamento escolhe: recebe quem está há mais tempo sem receber, entre os membros com Receber Leads ligado. Quem já é o responsável fica fora do sorteio.
200
changed: false quer dizer que o lead já estava com esse responsável nesse departamento: nada foi gravado e ninguém perdeu a vez no rodízio.

O que cada mudança dispara

O gatilho Propriedade alterada está indisponível hoje (em breve), também pela API: preencher uma propriedade não roda fluxo nenhum. Mover e pôr tag já rodam os fluxos sozinhos: não chame /flows/trigger de novo para o mesmo evento, ou o fluxo roda duas vezes. Para agendar automações, chame /automations/trigger (só na conexão oficial).

Armadilhas

  • Tag e coluna vão pelo id; propriedade vai pelo slug. Nome não funciona em nenhum dos três. Pegue os ids em Catálogos.
  • Mover para coluna com “Desativar IA” desliga a IA do lead. Diga isso a quem pediu.
  • Mover pela API não dispara automações. Se precisar, chame POST /automations/trigger depois (só na conexão oficial).
  • Propriedade pela API não roda fluxos. O gatilho Propriedade alterada está em breve. Mover e pôr ou tirar tag já rodam os fluxos de Kanban e de tag.
  • Propriedade com o mesmo valor volta 200 com error. Não trate esse error como falha.
  • ai_status: "inactive" não diz se é pausa ou desligamento.
  • Nota acrescenta por padrão. Uma integração que reenvia a mesma nota a cada evento vai repetir o texto. Use delete_previous_note: true se a nota for “estado atual”.
  • Responsável fora do departamento dá 404. Adicione o usuário ao departamento no painel antes.

Para saber mais