Leads
Endpoints para criar, buscar, atualizar e mover leads (negócios) no funil, além de tags, sequências e envio de WhatsApp por lead.
https://app.syncro.chat/api/v1AuthX-API-Key: crm_SUA_CHAVE_AQUIO objeto Lead
A maioria dos endpoints retorna o lead neste formato base (campos adicionais entram via ?include):
{
"id": 123,
"name": "João Silva",
"phone": "+5511999887766",
"email": "[email protected]",
"company": "ACME",
"birthday": "1990-01-15",
"value": 5000.0,
"source": "site",
"tags": ["vip", "enterprise"],
"pipeline_id": 1,
"stage_id": 5,
"notes": "Anotações do lead",
"utm_source": "google",
"utm_medium": "cpc",
"utm_campaign": "verao_2026",
"utm_term": null,
"utm_content": null,
"stage": { "id": 5, "name": "Proposta" },
"pipeline": { "id": 1, "name": "Vendas" },
"created_at": "2026-06-30T10:00:00Z",
"custom_fields": { "tamanho_empresa": "100+" }
}
Listar leads
/leadsleads:readLista os leads da conta, paginado, com filtros.
Parâmetros de query
pipeline_idintegeropcionalstage_idintegeropcionalassigned_tointegeropcionalsourcestringopcionalstatusstringopcionaltagsarrayopcionalqstringopcionalupdated_sincedate (ISO 8601)opcionalcreated_fromdateopcionalcreated_todateopcionalpageintegeropcional1)per_pageintegeropcional50, máx 200)includestringopcionalcurl "https://app.syncro.chat/api/v1/leads?pipeline_id=1&per_page=2&include=owner" \ -H "X-API-Key: crm_SUA_CHAVE_AQUI"
{
"success": true,
"data": [
{
"id": 123,
"name": "João Silva",
"phone": "+5511999887766",
"email": "[email protected]",
"company": "ACME",
"value": 5000,
"source": "site",
"tags": [
"vip"
],
"pipeline_id": 1,
"stage_id": 5,
"stage": {
"id": 5,
"name": "Proposta"
},
"pipeline": {
"id": 1,
"name": "Vendas"
},
"created_at": "2026-06-30T10:00:00Z",
"custom_fields": {},
"assigned_to": 12,
"owner": {
"id": 12,
"name": "Ana",
"email": "[email protected]"
}
}
],
"meta": {
"total": 250,
"per_page": 2,
"current_page": 1,
"last_page": 125,
"has_more": true
}
}Criar lead
/leadsleads:writeCria um novo lead.
Parâmetros do body
namestringobrigatóriopipeline_idintegerobrigatóriostage_idintegerobrigatóriophonestringopcionalemailstringopcionalvaluenumberopcionalsourcestringopcionaltagsarray(string)opcionalnotesstringopcionalutm_source / utm_medium / utm_campaign / utm_term / utm_contentstringopcionalassigned_tointegeropcionalcustom_fieldsobjectopcionalnome_do_campo: valor (ver [Campos personalizados](/pt-BR/custom-fields))Se a stage_id for uma etapa marcada como ganho/perda, o Syncro cria automaticamente a Venda (Sale) ou a Perda (LostSale) correspondente.
Erros: 422 com limit_reached: true se o limite de leads do plano foi atingido.
curl -X POST "https://app.syncro.chat/api/v1/leads" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"phone": "+5511999887766",
"email": "[email protected]",
"value": 5000,
"source": "site",
"tags": [
"vip"
],
"pipeline_id": 1,
"stage_id": 5,
"assigned_to": 12,
"custom_fields": {
"tamanho_empresa": "100+"
}
}'{
"success": true,
"lead": {
"id": 123,
"name": "João Silva",
"pipeline_id": 1,
"stage_id": 5,
"stage": {
"id": 5,
"name": "Proposta"
},
"pipeline": {
"id": 1,
"name": "Vendas"
},
"created_at": "2026-06-30T10:00:00Z",
"custom_fields": {
"tamanho_empresa": "100+"
}
}
}Criar ou atualizar lead (upsert)
/leads/upsertleads:writeCria um lead novo ou atualiza um existente, casando por e-mail e/ou telefone. Ideal para sincronização. Aceita os mesmos campos de POST /leads, mais o campo abaixo.
Parâmetros do body
match_bystringopcionalemail, phone ou email_or_phone (padrão email_or_phone)É obrigatório enviar e-mail ou telefone (é a chave de match). Em update, só os campos enviados (não vazios) são alterados.
curl -X POST "https://app.syncro.chat/api/v1/leads/upsert" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"email": "[email protected]",
"pipeline_id": 1,
"stage_id": 5,
"match_by": "email"
}'{
"success": true,
"created": true,
"lead": {
"id": 123,
"name": "João Silva",
"stage_id": 5
}
}Buscar lead por ID
/leads/123leads:readRetorna um lead. Aceita ?include= para carregar relações.
curl "https://app.syncro.chat/api/v1/leads/123?include=owner%2Ctasks%2Cnotes" \ -H "X-API-Key: crm_SUA_CHAVE_AQUI"
{
"success": true,
"lead": {
"id": 123,
"name": "João Silva",
"stage_id": 5
}
}Mover lead de etapa
/leads/123/stageleads:writeMove o lead para outra etapa (e pipeline).
Parâmetros do body
stage_idintegerobrigatóriopipeline_idintegerobrigatórioErros: 422 com blocked: true e pending_tasks se a etapa atual tem tarefas obrigatórias pendentes.
curl -X PUT "https://app.syncro.chat/api/v1/leads/123/stage" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"stage_id": 7,
"pipeline_id": 1
}'{
"success": true,
"lead_id": 123
}Marcar como ganho
/leads/123/wonleads:writeMove o lead para uma etapa de ganho e registra a venda.
Parâmetros do body
stage_idintegerobrigatóriois_won = true)valuenumberopcionalErros: 422 se a etapa não for de ganho ("A etapa informada não é uma etapa de ganho.") ou 422 blocked por tarefas obrigatórias pendentes.
curl -X PUT "https://app.syncro.chat/api/v1/leads/123/won" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"stage_id": 10,
"value": 7500
}'{
"success": true,
"lead_id": 123
}Marcar como perdido
/leads/123/lostleads:writeMove o lead para uma etapa de perda e registra o motivo.
Parâmetros do body
stage_idintegerobrigatóriois_lost = true)reason_idintegeropcionallost_reasons em [Pipelines](/pt-BR/pipelines))Erros: 422 se a etapa não for de perda; 422 blocked por tarefas pendentes.
curl -X PUT "https://app.syncro.chat/api/v1/leads/123/lost" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"stage_id": 11,
"reason_id": 3
}'{
"success": true,
"lead_id": 123
}Excluir lead
/leads/123leads:writeRemove o lead.
curl -X DELETE "https://app.syncro.chat/api/v1/leads/123" \ -H "X-API-Key: crm_SUA_CHAVE_AQUI"
{
"success": true
}Remover uma tag
/leads/123/tags/vipleads:writeRemove uma tag pelo nome.
curl -X DELETE "https://app.syncro.chat/api/v1/leads/123/tags/vip" \ -H "X-API-Key: crm_SUA_CHAVE_AQUI"
{
"success": true,
"lead_id": 123,
"tags": [
"enterprise"
]
}Inscrever em sequência de nutrição
/leads/123/enroll-sequencesequences:writeInscreve o lead em uma sequência ativa. Veja a lista de sequências em Sequências.
Parâmetros do body
sequence_idintegerobrigatóriocurl -X POST "https://app.syncro.chat/api/v1/leads/123/enroll-sequence" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"sequence_id": 1
}'{
"success": true,
"lead_id": 123,
"sequence_id": 1,
"lead_sequence_id": 45,
"status": "active",
"next_step_at": "2026-07-01T10:00:00Z"
}Remover de sequência
/leads/123/enroll-sequence/1sequences:writeTira o lead de uma sequência.
curl -X DELETE "https://app.syncro.chat/api/v1/leads/123/enroll-sequence/1" \ -H "X-API-Key: crm_SUA_CHAVE_AQUI"
{
"success": true,
"lead_id": 123,
"sequence_id": 1,
"status": "exited_manual"
}Enviar WhatsApp (texto ou imagem)
/leads/123/send-whatsappwhatsapp:writeEnvia uma mensagem de texto ou imagem para o telefone do lead. Veja números conectados em WhatsApp.
Parâmetros do body
typestringobrigatóriotext ou imagebodystringcondicionalmedia_url)media_urlstring (URL)condicionaltype=image)captionstringopcionalinstance_idintegeropcionalErros: 422 se o lead não tem telefone; 422 com skip_reason: "window_closed" em números da API Oficial fora da janela de 24h (use template); 502 em falha do provedor.
curl -X POST "https://app.syncro.chat/api/v1/leads/123/send-whatsapp" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"type": "text",
"body": "Olá! Tudo bem?",
"instance_id": 1
}'{
"success": true,
"conversation_id": 99,
"message_id": 456,
"provider_msg_id": "wamid.xyz123"
}Enviar template (HSM)
/leads/123/send-whatsapp-templatewhatsapp:writeEnvia um template oficial aprovado (necessário fora da janela de 24h na API Oficial). Veja templates em WhatsApp.
Parâmetros do body
template_idintegerobrigatórioAPPROVED)variablesarray(string)opcionalheader_media_urlstring (URL)opcionalinstance_idintegeropcionalcurl -X POST "https://app.syncro.chat/api/v1/leads/123/send-whatsapp-template" \
-H "X-API-Key: crm_SUA_CHAVE_AQUI" \
-H "Content-Type: application/json" \
-d '{
"template_id": 1,
"variables": [
"João",
"Proposta",
"30/07"
],
"instance_id": 2
}'{
"success": true,
"conversation_id": 99,
"message_id": 457,
"provider_msg_id": "wamid.xyz456",
"template_name": "lembrete_proposta"
}Relações extras (`?include`)
Em GET /leads e GET /leads/{id}, use ?include= com nomes separados por vírgula para carregar dados adicionais. Tokens desconhecidos são ignorados.
| include | O que adiciona |
|---|---|
owner |
assigned_to (int) + owner {id, name, email} |
products |
products[] {id, product_id, product_name, quantity, unit_price, discount_percent, total} |
contacts |
contacts[] {id, name, role, phone, email, is_primary} |
notes |
notes_list[] {id, body, author, created_at} |
sales |
sales[] {id, pipeline_id, value, closed_by, closed_at} + lost_sales[] {id, pipeline_id, reason_id, lost_at, lost_by} |
tasks |
tasks[] {id, subject, type, status, priority, due_date, due_time, completed_at, assigned_to} |
sequences |
active_sequence {id, name, current_step, total_steps, status} + sequences[] {id, sequence_id, name, status, next_step_at} |
score |
score (int) + score_updated_at |
siblings |
siblings[] (outros negócios do mesmo contato) + contact_totals |
events |
events[] {id, event_type, description, performed_by, created_at} |
conversation |
conversation {id, phone, status, last_message_at, unread_count, instance_id} |
events,conversationesiblingssó estão disponíveis emGET /leads/{id}(não na listagem, por custo).