Contact2Sale (C2S) API — Documentação de Integração
Referência completa dos endpoints da API de integração da Contact2Sale (C2S CRM). Base URL:
https://api.contact2sale.com/integration. Autenticação via token no headerAuthorization(ouAuthentication).
Site: https://docs-api-leads.c2sapp.com
Autenticação
Todas as requisições exigem um token gerado dentro do C2S, enviado no header Authorization: Bearer {token} (preferencial) ou Authentication: {token}. Falha de autenticação retorna {"error":"not_authorized"} com status 403.
Informações Gerais
Retorna informações da empresa autenticada.
Informações da Empresa
GET https://api.contact2sale.com/integration/me
Retorna informações da empresa autenticada e suas sub-empresas.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Response esperado — 200
{
"company_name": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"sub_companies": [
{
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"company_name": "Empresa Exemplo"
},
{
"company_id": "d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1",
"company_name": "Empresa Exemplo - Filial 2"
}
]
}
Leads
Endpoints para criação, atualização, encaminhamento, tags, interação e fechamento de leads.
Listar Leads
GET https://api.contact2sale.com/integration/leads
Lista leads da empresa autenticada com filtros e paginação.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page |
integer | Não | Número da página |
perpage |
integer | Não | Itens por página (máximo 50) |
sort |
string | Não | Campo de ordenação. Aceita created_at, updated_at. Prefixo - para DESC |
last_update |
string | Não | Filtro por datetime ISO 8601. Retorna leads atualizados desde esta data |
created_gte |
string | Não | Leads criados a partir desta data (inclusive) |
created_lt |
string | Não | Leads criados antes desta data |
updated_gte |
string | Não | Leads atualizados a partir desta data (inclusive) |
updated_lt |
string | Não | Leads atualizados antes desta data |
status |
string | Não | Filtrar por status: novo, em_negociacao, convertido, negocio_fechado, arquivado, resgatado, pendente, recusado, finalizado |
tags |
string | Não | Nomes de tags separados por vírgula |
phone |
string | Não | Filtrar pelo telefone do cliente |
email |
string | Não | Filtrar pelo email do cliente |
first_message |
boolean | Não | Incluir primeira mensagem na resposta |
custom_attributes |
boolean | Não | Incluir atributos customizados na resposta |
from_hierarchy_company |
boolean | Não | Se true, inclui no lead o campo from_hierarchy_company com o nome da hierarquia (empresa) que gerou o lead. Retorna null caso a hierarquia que gerou seja a mesma que recebeu o lead, ou caso a empresa não utilize hierarquia. |
Response esperado — 200
{
"data": [
{
"type": "lead",
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"internal_id": 12345678,
"attributes": {
"description": "Apartamento 3 quartos",
"observation": "17 de Abril, 10:00 de 2026 - Retornar contato",
"is_favorite": false,
"product": {
"id": "p1r2o3d4u5c6t7i8d9e0x1e2m3p4l5o6",
"description": "[101] Apartamento 3 quartos",
"prop_ref": "101",
"price_float": 350000.00,
"price": "350.000,00",
"neighbourhood": "Centro",
"city": "São Paulo",
"real_estate_detail": {
"negotiation_name": "Compra"
},
"model": null,
"brand": null,
"year": null,
"version": null,
"license_plate": null
},
"customer": {
"id": "c1u2s3t4o5m6e7r8i9d0e1x2e3m4p5l6",
"name": "João Silva",
"email": "joao.silva@email.com",
"phone": "5511999999999",
"phone2": null,
"phone_global": "+5511999999999"
},
"seller": {
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Maria Vendedora",
"email": "maria@empresa.com",
"phone": "5511988888888",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 1,
"can_view_bucket": true,
"external_id": "",
"external_name": null
},
"collaborators": [],
"created_by": {
"id": "c1r2e3a4t5e6d7b8y9i0d1e2x3e4m5p6",
"name": "Admin Sistema",
"email": "admin@empresa.com",
"phone": "5511977777777",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 0,
"can_view_bucket": true,
"external_id": null,
"external_name": null
},
"company": {
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"name": "Empresa Exemplo",
"language": "pt-BR"
},
"lead_source": {
"id": 542,
"name": "Ação de Rua"
},
"channel": {
"id": 2,
"name": "Showroom"
},
"lost_reasons": {
"name": null
},
"lead_status": {
"id": 1,
"alias": "under_negotiation",
"name": "Em negociação"
},
"funnel_status": {
"status": "In attendance"
},
"done_details": {
"done": false,
"done_details": null,
"done_price": null
},
"archive_details": {
"archived": false,
"archive_notes": null
},
"tags": [],
"log": [
{
"body": "Lead marcado como interagido pelo WhatsApp pelo usuário Admin Sistema",
"created_at": "2026-04-16T11:41:53.608-03:00"
},
{
"body": "Lead criado por Admin Sistema para Maria Vendedora",
"created_at": "2026-04-16T11:40:27.227-03:00"
}
],
"messages": [],
"schedulated_actions": [],
"created_at": "2026-04-16T11:40:26.000-03:00",
"updated_at": "2026-04-16T11:41:52.000-03:00",
"external_created_at": null,
"from_hierarchy_company": "Imobiliária Matriz SP",
"last_activity_date": "2026-04-17T10:00:00.000-03:00",
"read_at": "2026-04-16T11:41:52.000-03:00",
"replied_at": null,
"done_deal_at": null,
"url": "",
"demo_company": false
},
"schedulated_actions": [
{
"id": "a1c2t3i4o5n6i7d8e9x0e1m2p3l4o5f6",
"seller_id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"seller_name": "Maria Vendedora",
"schedulated_action_type_id": 6,
"schedulated_action_type_alias": "first_contact",
"schedulated_action_name": "Primeiro contato",
"schedulated_action_date": "2026-04-16T11:50:26.000-03:00",
"description": null,
"created_at": "2026-04-16T11:40:26.000-03:00",
"status": "Finalizado sem informar"
}
],
"messages": [
{
"id": "m1e2s3s4a5g6e7i8d9e0x1e2m3p4l5o6",
"sender_id": "c1r2e3a4t5e6d7b8y9i0d1e2x3e4m5p6",
"recipient_id": "c1u2s3t4o5m6e7r8i9d0e1x2e3m4p5l6",
"sender_type": "Seller",
"recipient_type": "Customer",
"body": "Bom dia! Como posso ajudar?",
"created_at": "2026-04-16T11:41:52.000-03:00",
"updated_at": "2026-04-16T11:41:52.000-03:00",
"read_at": "2026-04-16T11:41:52.000-03:00"
}
],
"facebook_attributes": {}
}
],
"pagination": {
"current_page": 1,
"per_page": 50,
"total_count": 150,
"total_pages": 3
}
}
Buscar Lead por ID
GET https://api.contact2sale.com/integration/leads/:id
Retorna um lead pelo ID criptografado.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
from_hierarchy_company |
boolean | Não | Se true, inclui no lead o campo from_hierarchy_company com o nome da hierarquia (empresa) que gerou o lead. Retorna null caso a hierarquia que gerou seja a mesma que recebeu o lead, ou caso a empresa não utilize hierarquia. |
Response esperado — 200
{
"data": {
"type": "lead",
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"internal_id": 12345678,
"attributes": {
"description": "Apartamento 3 quartos",
"observation": "17 de Abril, 10:00 de 2026 - Retornar contato",
"is_favorite": false,
"product": {
"id": "p1r2o3d4u5c6t7i8d9e0x1e2m3p4l5o6",
"description": "[101] Apartamento 3 quartos",
"prop_ref": "101",
"price_float": 350000.00,
"price": "350.000,00",
"neighbourhood": "Centro",
"city": "São Paulo",
"real_estate_detail": {
"negotiation_name": "Compra"
},
"model": null,
"brand": null,
"year": null,
"version": null,
"license_plate": null
},
"customer": {
"id": "c1u2s3t4o5m6e7r8i9d0e1x2e3m4p5l6",
"name": "João Silva",
"email": "joao.silva@email.com",
"phone": "5511999999999",
"phone2": null,
"phone_global": "+5511999999999"
},
"seller": {
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Maria Vendedora",
"email": "maria@empresa.com",
"phone": "5511988888888",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 1,
"can_view_bucket": true,
"external_id": "",
"external_name": null
},
"collaborators": [],
"created_by": {
"id": "c1r2e3a4t5e6d7b8y9i0d1e2x3e4m5p6",
"name": "Admin Sistema",
"email": "admin@empresa.com",
"phone": "5511977777777",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 0,
"can_view_bucket": true,
"external_id": null,
"external_name": null
},
"company": {
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"name": "Empresa Exemplo",
"language": "pt-BR"
},
"lead_source": {
"id": 542,
"name": "Ação de Rua"
},
"channel": {
"id": 2,
"name": "Showroom"
},
"lost_reasons": {
"name": null
},
"lead_status": {
"id": 1,
"alias": "under_negotiation",
"name": "Em negociação"
},
"funnel_status": {
"status": "In attendance"
},
"done_details": {
"done": false,
"done_details": null,
"done_price": null
},
"archive_details": {
"archived": false,
"archive_notes": null
},
"tags": [
{
"id": "t1a2g3i4d5e6x7e8m9p0l1o2f3o4r5m6",
"name": "Quente"
}
],
"log": [
{
"body": "Lead marcado como interagido pelo WhatsApp pelo usuário Admin Sistema",
"created_at": "2026-04-16T11:41:53.608-03:00"
},
{
"body": "Atividade criada | Retornar para o cliente | 17 de Abril, 10:00 de 2026 | Agendar visita",
"created_at": "2026-04-16T11:41:10.571-03:00"
},
{
"body": "Lead criado por Admin Sistema para Maria Vendedora",
"created_at": "2026-04-16T11:40:27.227-03:00"
}
],
"messages": [],
"schedulated_actions": [],
"created_at": "2026-04-16T11:40:26.000-03:00",
"updated_at": "2026-04-16T11:41:52.000-03:00",
"external_created_at": null,
"from_hierarchy_company": "Imobiliária Matriz SP",
"last_activity_date": "2026-04-17T10:00:00.000-03:00",
"read_at": "2026-04-16T11:41:52.000-03:00",
"replied_at": null,
"done_deal_at": null,
"url": "",
"demo_company": false
},
"schedulated_actions": [
{
"id": "a1c2t3i4o5n6i7d8e9x0e1m2p3l4o5f6",
"seller_id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"seller_name": "Maria Vendedora",
"schedulated_action_type_id": 6,
"schedulated_action_type_alias": "first_contact",
"schedulated_action_name": "Primeiro contato",
"schedulated_action_date": "2026-04-16T11:50:26.000-03:00",
"description": null,
"created_at": "2026-04-16T11:40:26.000-03:00",
"status": "Finalizado sem informar"
},
{
"id": "a2c3t4i5o6n7i8d9e0x1e2m3p4l5o6f7",
"seller_id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"seller_name": "Maria Vendedora",
"schedulated_action_type_id": 3,
"schedulated_action_type_alias": "feedback_customer",
"schedulated_action_name": "Retornar para o cliente",
"schedulated_action_date": "2026-04-17T10:00:00.000-03:00",
"description": "Agendar visita",
"created_at": "2026-04-16T11:41:10.000-03:00",
"status": "Em aberto"
}
],
"messages": [
{
"id": "m1e2s3s4a5g6e7i8d9e0x1e2m3p4l5o6",
"sender_id": "c1r2e3a4t5e6d7b8y9i0d1e2x3e4m5p6",
"recipient_id": "c1u2s3t4o5m6e7r8i9d0e1x2e3m4p5l6",
"sender_type": "Seller",
"recipient_type": "Customer",
"body": "Bom dia! Como posso ajudar?",
"created_at": "2026-04-16T11:41:52.000-03:00",
"updated_at": "2026-04-16T11:41:52.000-03:00",
"read_at": "2026-04-16T11:41:52.000-03:00"
}
],
"facebook_attributes": {}
}
}
Criar Lead
POST https://api.contact2sale.com/integration/leads
Cria um novo lead. É obrigatório enviar ao menos phone ou email (caso contrário retorna 423).
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Não | Nome do cliente. Default: "Não identificado". |
email |
string | Não | Email do cliente. Utilizado para deduplicação. Remove "." antes do @ automaticamente. |
phone |
string | Não | Telefone principal. Se vazio, usa "customer_number" como fallback. |
phone2 |
string | Não | Telefone secundário (opcional). |
description |
string | Não | Descrição principal do item, exibida no card do lead. Máximo: 250 caracteres. |
prop_ref |
string | Não | Código do imóvel. Obrigatório para empresas do tipo IMOBILIÁRIA. Valores especiais: "Sem código", "Não localizado", "Nenhum", "ignore". |
brand |
string | Não | Marca do veículo. Apenas empresas de CARROS ou MOTOS. |
model |
string | Não | Modelo do veículo. Apenas empresas de CARROS ou MOTOS. |
version |
string | Não | Versão do veículo. Apenas empresas de CARROS ou MOTOS. |
year |
integer | Não | Ano do veículo. Se igual ao ano atual, pode virar "Novo". |
price |
string | Não | Valor do produto/imóvel/veículo. Aceita "R$ 250.000,00", "250000" ou "250000.00". |
color |
string | Não | Cor do veículo. Apenas empresas de CARROS ou MOTOS. |
km |
integer | Não | Quilometragem. Se 0 força vehicle_type = "Novo". Apenas empresas de CARROS ou MOTOS. |
license_plate |
string | Não | Placa do veículo. Removida automaticamente da descrição. Apenas empresas de CARROS ou MOTOS. |
type_negotiation_string |
string | Não | Texto livre da negociação. Faz parser automático de palavras-chave. Evite usar junto com "type_negotiation". |
type_negotiation |
string | Não | Tipo de negociação. Apenas IMOBILIÁRIAS. Exemplos: "Comprar", "Alugar", "Lançamento". |
vehicle_type |
string | Não | Tipo do veículo. Valores comuns: "Novo", "Usado". Apenas empresas de CARROS ou MOTOS. |
city |
string | Não | Cidade do imóvel. Utilizada na distribuição. |
neighbourhood |
string | Não | Bairro do imóvel. Utilizado na distribuição. |
channel_id |
integer | Não | ID do canal. Valores possíveis: [1,2,3,4,5]. Default: 1 (Internet). |
channel_abbrev |
string | Não | Abreviação do canal. Exemplos: "internet", "whatsapp", "telefone", "showroom". |
url |
string | Não | URL do anúncio/origem. Se vazio e existir prop_ref + custom_link, a URL pode ser gerada automaticamente. |
sourcerUrl |
string | Não | Campo legado de URL. Alguns parceiros ainda enviam aqui. |
body |
string | Não | Primeira mensagem do lead. Máximo: 15.000 caracteres. Aceita HTML. |
observation |
string | Não | Observação interna. |
external_id |
string | Não | ID externo do parceiro. Pode ser usado em distribuições específicas. |
custom_created_at |
string | Não | Sobrescreve o created_at do lead. Timezone da empresa é respeitada. Formato ISO 8601. |
pending |
boolean | Não | Define lead como pendente (status = 5). |
closed |
boolean | Não | Define lead como fechado (status = 7). Já marca como lido. |
already_interacted |
boolean | Não | Marca o lead como já interagido/lido. |
skip_on_interaction |
boolean | Não | Impede marcação automática de interação. |
source |
string | Não | Origem do lead. Normalmente lowercase + underscore. Exemplo: "google_ads", "olx". |
real_state_keywords |
string | Não | Keywords para distribuição personalizada. Apenas IMOBILIÁRIAS. |
tags |
array | Não | Lista de tags. Aceita array ou string única. |
tag_name |
string | Não | Tag individual. Faz merge automático com "tags". |
wpp_username |
string | Não | Username/número do WhatsApp. |
bsuid |
string | Não | Business Account UID do WhatsApp. |
Body
{
"data": {
"type": "lead",
"attributes": {
// ============================================================
// IDENTIFICAÇÃO DO CLIENTE (Customer)
// ============================================================
// Nome do cliente.
// Default: "Não identificado"
"name": "Pedro Silva",
// Email do cliente.
// Utilizado para deduplicação.
// Remove "." antes do @ automaticamente.
"email": "pedro@teste.com",
// Telefone principal.
// Se vazio, usa "customer_number" como fallback.
"phone": "+55 11 99999-9999",
// Telefone secundário (opcional).
"phone2": "+55 11 99999-9999",
// ============================================================
// PRODUTO / IMÓVEL / VEÍCULO (Product)
// ============================================================
// Descrição principal do item.
// Exibida no card do lead.
// Máximo: 250 caracteres.
"description": "Apartamento 2 quartos no Botafogo",
// Código do imóvel.
// Obrigatório para empresas do tipo IMOBILIÁRIA.
// Valores especiais:
// "Sem código", "Não localizado", "Nenhum", "ignore"
"prop_ref": "AP12345",
// Marca do veículo.
// Apenas empresas de CARROS ou MOTOS.
"brand": "Volkswagen",
// Modelo do veículo.
// Apenas empresas de CARROS ou MOTOS.
"model": "Polo",
// Versão do veículo.
// Apenas empresas de CARROS ou MOTOS.
"version": "Comfortline 1.6",
// Ano do veículo.
// Se igual ao ano atual, pode virar "Novo".
"year": 2024,
// Valor do produto/imóvel/veículo.
// Aceita:
// "R$ 250.000,00"
// "250000"
// "250000.00"
"price": "R$ 250.000,00",
// Cor do veículo.
// Apenas empresas de CARROS ou MOTOS.
"color": "Prata",
// Quilometragem.
// Se 0 => força vehicle_type = "Novo"
// Apenas empresas de CARROS ou MOTOS.
"km": 35000,
// Placa do veículo.
// Removida automaticamente da descrição.
// Apenas empresas de CARROS ou MOTOS.
"license_plate": "ABC1D23",
// Texto livre da negociação.
// Faz parser automático de palavras-chave.
// Evite usar junto com "type_negotiation".
"type_negotiation_string": "Apartamento para Aluguel por R$ 1.200,00",
// Tipo de negociação.
// Apenas IMOBILIÁRIAS.
// Exemplos:
// "Comprar"
// "Alugar"
// "Lançamento"
"type_negotiation": "Comprar",
// Tipo do veículo.
// Valores comuns:
// "Novo"
// "Usado"
// Apenas empresas de CARROS ou MOTOS.
"vehicle_type": "Usado",
// Cidade do imóvel.
// Utilizada na distribuição.
"city": "Campinas",
// Bairro do imóvel.
// Utilizado na distribuição.
"neighbourhood": "Botafogo",
// ============================================================
// LEAD
// ============================================================
// ID do canal.
// Valores possíveis:
// [1,2,3,4,5]
// Default: 1 (Internet)
"channel_id": 1,
// Abreviação do canal.
// Exemplos:
// "internet"
// "whatsapp"
// "telefone"
// "showroom"
"channel_abbrev": "internet",
// URL do anúncio/origem.
// Se vazio e existir prop_ref + custom_link,
// a URL pode ser gerada automaticamente.
"url": "https://exemplo.com.br/imovel/12345",
// Campo legado de URL.
// Alguns parceiros ainda enviam aqui.
"sourcerUrl": "https://exemplo.com.br/imovel/12345",
// Primeira mensagem do lead.
// Máximo: 15.000 caracteres.
// Aceita HTML.
"body": "Olá, tenho interesse no imóvel.",
// Observação interna.
"observation": "Cliente VIP, retornar com prioridade",
// ID externo do parceiro.
// Pode ser usado em distribuições específicas.
"external_id": "EXT-99887",
// Sobrescreve o created_at do lead.
// Timezone da empresa é respeitada.
"custom_created_at": "2026-05-08T14:30:00",
// ============================================================
// ORIGEM / DISTRIBUIÇÃO
// ============================================================
// Estado do lead.
// true => pendente (distribuível)
// false => já distribuído ou fechado
"pending": true,
// Lead já fechado.
"closed": false,
// Já houve interação com o lead.
"already_interacted": false,
// Pular na distribuição se já interagido.
"skip_on_interaction": false,
// Fonte primária da origem.
// Exemplos:
// "portal_zap"
// "facebook"
// "google_ads"
"source": "portal_zap",
// Palavras-chave para imobiliárias.
// Exemplos:
// "aluguel"
// "venda"
// "lançamento"
"real_state_keywords": ["aluguel", "venda"],
// IDs das tags do lead.
// Exemplo: ["tag-uuid-1", "tag-uuid-2"]
"tags": ["tag-uuid-1"],
// Nome da tag (usado em integrações legadas).
// Exemplo: "imoveis", "premium"
"tag_name": "imoveis",
// ============================================================
// WHATSAPP / EXTRAS
// ============================================================
// Username/número do WhatsApp.
"wpp_username": "5511903873417",
// Business Account UID do WhatsApp.
"bsuid": "1234567890"
}
}
}
Response esperado — 200
{
"success": true,
"lead_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"received_by": {
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Maria Vendedora",
"email": "maria@empresa.com",
"phone": "5511988888888"
},
"company": "Empresa Exemplo",
"info": {
"name": "João Silva",
"email": "joao.silva@email.com",
"phone": "5511999999999",
"channel_id": 1,
"lead_source_id": 1,
"message": "Interesse no imóvel X"
}
}
Atualizar Lead
PUT https://api.contact2sale.com/integration/leads/:id
Atualiza um lead existente. O :id é o ID criptografado do lead. Suporta 3 formatos de body: via data.attributes (legado), reset de created_at, ou atualização completa (cliente + produto + mensagem).
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"lead": {
"channel_id": 1,
"lead_source_id": 2,
"url": "https://...",
"customer": {
"name": "Nome Atualizado",
"email": "novo@email.com",
"phone": "11999999999",
"phone2": "11888888888",
"city": "São Paulo"
},
"product": {
"brand": "Toyota",
"model": "Corolla",
"year": "2024",
"color": "Branco",
"km": "0",
"price": "150000",
"description": "...",
"prop_ref": "REF123"
},
"type_negotiation": 0,
"body": "Mensagem opcional a anexar ao lead"
}
}
Response esperado — 200
{
"success": true,
"lead": {
"customer_id": 12345678,
"product_id": 87654321,
"description": "Apartamento 3 quartos",
"updated_at": "2026-04-16T12:53:09.000-03:00",
"company_id": 2776,
"id": 12345678,
"lead_source_id": 349,
"channel_id": 1,
"seller_id": 11111,
"read_at": null,
"is_favorite": false,
"status": 0,
"created_at": "2026-04-16T12:52:52.000-03:00",
"is_rescued": false,
"activity_date": "2026-04-16T13:02:52.000-03:00",
"replied_at": null,
"num_unread_msg_to_seller": 0,
"messages": [],
"related_leads": [],
"lead_status": {
"id": 0,
"name": "Novo",
"alias": "new",
"color_hex": "#0000FF",
"sort": 0,
"restrict_change": false,
"manual_change": true
},
"seller": {
"id": 11111,
"name": "Maria Vendedora",
"company_id": 2776,
"company_name": "Empresa Exemplo",
"username": "mariavendedora",
"email": "maria@empresa.com"
},
"product": {
"id": 87654321,
"description": "Apartamento 3 quartos",
"prop_ref": "101",
"brand": null,
"model": null,
"version": null,
"year": null,
"price": "350.000,00",
"type_negotiation_string": "Compra"
},
"customer": {
"id": 12345678,
"name": "João Silva",
"email": "joao.silva@email.com",
"phone": "11999999999",
"phone2": null,
"phone_formatted": "(11) 99999-9999",
"whatsapp_number": "5511999999999"
},
"company_name": "Empresa Exemplo",
"source_name": "API / Internet",
"channel_name": "Internet"
}
}
Encaminhar Lead
PATCH https://api.contact2sale.com/integration/leads/:id/forward
Encaminha um lead para outro vendedor.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"seller_from_id": "<encrypted_seller_id>",
"seller_to_id": "<encrypted_seller_id>"
}
Response esperado — 200
{
"success": true,
"lead": {
"seller_id": 22222,
"company_id": 2776,
"id": 12345678,
"lead_source_id": 349,
"channel_id": 1,
"read_at": "2026-04-16T12:53:23.000-03:00",
"is_favorite": false,
"status": 1,
"description": "Apartamento 3 quartos",
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:30.000-03:00",
"activity_date": "2026-04-20T11:00:00.000-03:00",
"replied_at": null,
"num_unread_msg_to_seller": 0
}
}
Listar Tags do Lead
GET https://api.contact2sale.com/integration/leads/:id/tags
Retorna todas as tags de um lead.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Response esperado — 200
{
"success": true,
"tags": [
{
"id": "t1a2g3i4d5e6x7e8m9p0l1o2f3o4r5m6",
"name": "Quente"
},
{
"id": "t2a3g4i5d6e7x8e9m0p1l2o3f4o5r6m7",
"name": "Investidor"
}
]
}
Adicionar Tag ao Lead
POST https://api.contact2sale.com/integration/leads/:id/create_tag
Adiciona uma tag a um lead.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"tag_id": "<encrypted_tag_id>"
}
Response esperado — 200
{
"success": true,
"tags": [
{
"id": 5646064,
"lead_id": 12345678,
"created_at": "2026-04-16T12:53:13.000-03:00",
"updated_at": "2026-04-16T12:53:13.000-03:00",
"tag_id": 48437,
"created_by_seller_id": null
}
]
}
Remover Tag do Lead
POST https://api.contact2sale.com/integration/leads/:id/remove_tag
Remove uma ou mais tags de um lead. Aceita tag_id como string (única) ou array (múltiplas).
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"tag_id": "<encrypted_tag_id>"
}
Response esperado — 200
{
"success": true,
"tags": []
}
Marcar Lead como Lido
POST https://api.contact2sale.com/integration/leads/:id/mark_as_interacted
Marca um lead como lido/interagido.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Response esperado — 200
{
"success": true,
"lead": {
"num_unread_msg_to_seller": 0,
"read_at": "2026-04-16T12:53:23.000-03:00",
"id": 12345678,
"status": 0,
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:23.000-03:00"
}
}
Criar Mensagem no Lead
POST https://api.contact2sale.com/integration/leads/:id/create_message
Cria uma mensagem em um lead.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"body": "Texto da mensagem",
"from": "bot",
"url": "https://...",
"external_id": "msg-ext-123",
"created_at": "2025-01-15T10:00:00Z",
"origin": "whatsapp",
"message_type": "text",
"sender_name": "João",
"parent_message_id": "msg-parent-456",
"tags": [
"<encrypted_tag_id_1>",
"<encrypted_tag_id_2>"
]
}
Response esperado — 201
{
"data": {
"type": "lead",
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"internal_id": 12345678,
"attributes": {
"description": "Apartamento 3 quartos",
"lead_status": {
"id": 0,
"alias": "new",
"name": "Novo"
},
"messages": [],
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:25.000-03:00"
},
"messages": [
{
"id": "m1e2s3s4a5g6e7i8d9e0x1e2m3p4l5o6",
"sender_id": "s1e2n3d4e5r6i7d8e9x0e1m2p3l4o5f6",
"recipient_id": "r1e2c3i4p5i6e7n8t9i0d1e2x3e4m5p6",
"sender_type": "SysUser",
"recipient_type": "Customer",
"body": "Mensagem enviada via API",
"created_at": "2026-04-16T12:53:25.000-03:00",
"updated_at": "2026-04-16T12:53:25.000-03:00",
"read_at": null
}
]
}
}
Criar Atividade no Lead
POST https://api.contact2sale.com/integration/leads/:id/create_activity
Cria uma atividade em um lead.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"date": "2025-01-20T14:00:00Z",
"type": {
"activity": true
},
"body": "Descrição da atividade",
"send_push": true,
"title": "Título da notificação"
}
Response esperado — 201
{
"data": {
"type": "lead",
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"internal_id": 12345678,
"attributes": {
"description": "Apartamento 3 quartos",
"lead_status": {
"id": 1,
"alias": "under_negotiation",
"name": "Em negociação"
},
"log": [
{
"body": "Atividade criada | Retornar para o cliente | 20 de Abril, 14:00 de 2026 | Agendar visita ao imóvel",
"created_at": "2026-04-16T12:53:28.101-03:00"
}
],
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:28.000-03:00",
"last_activity_date": "2026-04-20T14:00:00.000-03:00"
},
"schedulated_actions": [
{
"id": "a1c2t3i4o5n6i7d8e9x0e1m2p3l4o5f6",
"seller_id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"seller_name": "Maria Vendedora",
"schedulated_action_type_id": 3,
"schedulated_action_type_alias": "feedback_customer",
"schedulated_action_name": "Retornar para o cliente",
"schedulated_action_date": "2026-04-20T14:00:00.000-03:00",
"description": "Agendar visita ao imóvel",
"created_at": "2026-04-16T12:53:27.000-03:00",
"status": "Em aberto"
}
]
}
}
Atualizar Status do Lead
POST https://api.contact2sale.com/integration/leads/:id/update_status
Atualiza o status de um lead. Quando status = 3, o lead é marcado como perdido.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"status": 3,
"message": "Cliente não tem interesse",
"lost_reason_ids": [
12
]
}
Response esperado — 201
{
"data": {
"type": "lead",
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"internal_id": 12345678,
"attributes": {
"description": "Apartamento 3 quartos",
"lead_status": {
"id": 3,
"alias": "lost",
"name": "Arquivado"
},
"archive_details": {
"archived": true,
"archive_notes": "Cliente não tem interesse"
},
"lost_reasons": {
"name": "inactive"
},
"log": [
{
"body": "O status foi alterado para Arquivado por Integração. | Detalhes: Cliente não tem interesse",
"created_at": "2026-04-16T12:53:32.000-03:00"
}
],
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:32.000-03:00"
}
}
}
Fechar Negócio do Lead
POST https://api.contact2sale.com/integration/leads/:id/done_deal
Registra o fechamento de negócio de um lead.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do lead |
Body
{
"prop_ref": "PROP-123",
"done_type_negotiation": "sale",
"info": "Detalhes do negócio",
"date": "2025-01-15",
"value": "500000"
}
Response esperado — 200
{
"success": true,
"tags": {
"id": 80123751,
"done_deal_at": null,
"lead_id": 12345678,
"created_at": "2026-04-16T12:52:52.000-03:00",
"updated_at": "2026-04-16T12:53:32.000-03:00",
"done_details": null,
"received_by_seller_id": 11111,
"done_extra_vehicle": null,
"done_extra_immobile": null,
"done_price": null,
"done_type_negotiation": null,
"archieve_details": "Detalhes do arquivamento"
}
}
Usuários
Endpoints para gerenciamento de vendedores.
Listar Vendedores
GET https://api.contact2sale.com/integration/sellers
Lista todos os vendedores da empresa autenticada (incluindo empresas do grupo).
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Response esperado — 200
[
{
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Maria Vendedora",
"email": "maria@empresa.com",
"phone": "5511988888888",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 1,
"can_view_bucket": true,
"external_id": "",
"external_name": "",
"is_master": true
},
{
"id": "s2e3l4l5e6r7i8d9e0x1e2m3p4l5o6f7",
"name": "Carlos Corretor",
"email": "carlos@empresa.com",
"phone": "5511977777777",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 0,
"can_view_bucket": true,
"external_id": null,
"external_name": null,
"is_master": false
},
{
"id": "s3e4l5l6e7r8i9d0e1x2e3m4p5l6o7f8",
"name": "Ana Gestora",
"email": "ana@empresa.com",
"phone": "5511966666666",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 4,
"can_view_bucket": true,
"external_id": "12345",
"external_name": "Nome Externo",
"is_master": false
}
]
Criar Vendedor
POST https://api.contact2sale.com/integration/sellers
Cria um novo vendedor.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"company_id": "<encrypted_company_id>",
"name": "Novo Vendedor",
"username": "novovendedor",
"email": "vendedor@exemplo.com",
"phone1": "11999999999",
"is_recipient": true,
"is_rescue": false,
"is_master": false,
"can_access_users": false,
"show_in_metrics": true,
"external_id": "EXT-001",
"own_captations_aux": [
0,
1
],
"team": [
0,
1,
2
]
}
Response esperado — 201
{
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Novo Vendedor",
"email": "vendedor@empresa.com",
"phone": "5511999999999",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 1,
"can_view_bucket": true,
"external_id": "EXT-001",
"external_name": null,
"is_master": false
}
Atualizar Vendedor
PUT https://api.contact2sale.com/integration/sellers/:id
Atualiza um vendedor existente. O :id é o ID criptografado do vendedor. Aceita os mesmos campos do POST além de recipient_rotation, recipient_distribution, recipient_memory e can_view_bucket.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
string | Sim | ID criptografado do vendedor |
Body
{
"name": "Vendedor Atualizado",
"email": "vendedor.novo@empresa.com",
"is_recipient": true,
"can_view_bucket": true
}
Response esperado — 200
{
"id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"name": "Maria Vendedora Atualizada",
"email": "maria.nova@empresa.com",
"phone": "5511988888888",
"company": "Empresa Exemplo",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"is_recipient": 1,
"can_view_bucket": true,
"external_id": "",
"external_name": "",
"is_master": true
}
Batch Update Timeshift
PUT https://api.contact2sale.com/integration/sellers/batch_update_timeshift
Atualiza em lote a configuração de timeshift de múltiplos vendedores. Os vendedores são processados em ordem reversa e o last_lead_received_at é escalonado em 1 segundo para estabelecer ordem de prioridade.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"seller_ids": [
"<encrypted_id_1>",
"<encrypted_id_2>"
],
"recipient_rotation": "...",
"recipient_distribution": "...",
"recipient_memory": "..."
}
Response esperado — 200
{
"success": true
}
Empresas
Endpoints para listar empresas do grupo (filiais).
Listar Empresas
GET https://api.contact2sale.com/integration/companies
Lista todas as empresas do grupo (filiais) da empresa autenticada.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Response esperado — 200
[
{
"id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"name": "Empresa Exemplo"
},
{
"id": "d6c5b4a3f2e1d0c9b8a7f6e5d4c3b2a1",
"name": "Empresa Exemplo - Filial 2"
},
{
"id": "e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2",
"name": "Empresa Exemplo - Filial 3"
}
]
Tags
Endpoints para gerenciamento de tags.
Listar Tags
GET https://api.contact2sale.com/integration/tags
Lista as tags da empresa autenticada.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name |
string | Não | Filtrar pelo nome exato da tag |
autofill |
boolean | Não | Filtrar pela flag de autofill |
Response esperado — 200
{
"data": [
{
"id": "t1a2g3i4d5e6x7e8m9p0l1o2f3o4r5m6",
"type": "tag",
"attributes": {
"id": "t1a2g3i4d5e6x7e8m9p0l1o2f3o4r5m6",
"name": "Quente",
"enabled": true,
"autofill": false,
"instructions": null
}
},
{
"id": "t2a3g4i5d6e7x8e9m0p1l2o3f4o5r6m7",
"type": "tag",
"attributes": {
"id": "t2a3g4i5d6e7x8e9m0p1l2o3f4o5r6m7",
"name": "Frio",
"enabled": true,
"autofill": false,
"instructions": null
}
},
{
"id": "t3a4g5i6d7e8x9e0m1p2l3o4f5o6r7m8",
"type": "tag",
"attributes": {
"id": "t3a4g5i6d7e8x9e0m1p2l3o4f5o6r7m8",
"name": "Investidor",
"enabled": true,
"autofill": true,
"instructions": "Aplicar quando o cliente demonstrar interesse em investimento"
}
},
{
"id": "t4a5g6i7d8e9x0e1m2p3l4o5f6o7r8m9",
"type": "tag",
"attributes": {
"id": "t4a5g6i7d8e9x0e1m2p3l4o5f6o7r8m9",
"name": "Financiamento",
"enabled": true,
"autofill": false,
"instructions": null
}
}
]
}
Criar Tag
POST https://api.contact2sale.com/integration/tags
Cria uma nova tag. Se uma tag com os mesmos parâmetros já existir, retorna a tag existente com status 201 e uma chave errors.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"tag": {
"name": "Nova Tag",
"autofill": false,
"instructions": "Instruções para IA de autofill"
}
}
Response esperado — 201
{
"tag": {
"id": "t1a2g3i4d5e6x7e8m9p0l1o2f3o4r5m6",
"name": "Nova Tag",
"enabled": true,
"company_id": 2776,
"created_by_seller_id": 12345,
"edited_by_seller_id": null,
"created_at": "2026-04-16T12:00:00.000-03:00",
"updated_at": "2026-04-16T12:00:00.000-03:00",
"autofill": false,
"instructions": null
}
}
Regras de Distribuição
Endpoints para gerenciamento de regras de distribuição (regiões).
Listar Regras de Distribuição
GET https://api.contact2sale.com/integration/distribution_rules
Lista todas as regras de distribuição (regiões) da empresa e suas filiais.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Response esperado — 200
[
{
"cod_1": "ABC123",
"cod_2": "Empreendimento Centro",
"cod_3": "",
"priority": 1,
"type_rule": "distribution",
"seller_id": "s1e2l3l4e5r6i7d8e9x0e1m2p3l4o5f6",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
},
{
"cod_1": "DEF456",
"cod_2": "Empreendimento Sul",
"cod_3": "Compra",
"priority": 1,
"type_rule": "distribution",
"seller_id": "s2e3l4l5e6r7i8d9e0x1e2m3p4l5o6f7",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
},
{
"cod_1": null,
"cod_2": null,
"cod_3": "Compra",
"priority": 1,
"type_rule": "rotation",
"seller_id": "s3e4l5l6e7r8i9d0e1x2e3m4p5l6o7f8",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
},
{
"cod_1": null,
"cod_2": null,
"cod_3": "Aluguel",
"priority": 1,
"type_rule": "rotation",
"seller_id": "s3e4l5l6e7r8i9d0e1x2e3m4p5l6o7f8",
"company_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
}
]
Criar Regra de Distribuição
POST https://api.contact2sale.com/integration/distribution_rules
Cria uma nova regra de distribuição.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"cod_1": "SP",
"cod_2": "São Paulo",
"cod_3": "Centro",
"priority": 1,
"type_rule": "rotation",
"seller_id": "<encrypted_seller_id>",
"company_id": "<encrypted_company_id>"
}
Response esperado — 201
{
"message": "Distribution rule created successfully"
}
Filas de Distribuição
Endpoints para gerenciamento de filas de distribuição.
Listar Filas de Distribuição
GET https://api.contact2sale.com/integration/distribution_queues/list_queues
Lista as filas de distribuição da empresa pai. Retorna headers de paginação: Total-pages, Total-entries, Current-page.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
page |
integer | Não | Número da página |
per_page |
integer | Não | Itens por página |
Response esperado — 200
{
"success": true,
"distribution_queues": [
{
"id": 12345,
"name": "Fila Principal",
"priority": 10,
"status": "enabled",
"queue_type": "custom_queue",
"leads_count": 0,
"redistributable_leads_count": null,
"redistributable": false,
"check_in": false,
"check_in_qr_code": false,
"group_memory_lead": false,
"receptionist_enabled": false,
"today_working_time": {
"begin": "08:00",
"end": "18:00",
"enable": true
},
"sales_stand_form_id": null,
"advanced_queue_edit": false,
"rules": [
{
"field": "type_negotiation",
"operator": "equal",
"value": "Compra"
}
],
"next_seller_index": 1,
"next_seller": {
"id": 67890,
"seller_id": 11111,
"seller_name": "Maria Vendedora",
"company_id": 2776,
"company_name": "Empresa Exemplo",
"priority": 1,
"status": "enabled",
"repeated_on_queue": false,
"count_on_queue": 1,
"first_check_in_at": null,
"last_check_out_at": null,
"checked_in_after_shuffle": false,
"own_hierarchy_name": "Empresa Exemplo",
"closest_parent_hierarchy_name": null,
"level_one_parent_hierarchy_name": null
},
"distribution_sellers_quantity": 3
},
{
"id": 12346,
"name": "Fila Check-in",
"priority": 9,
"status": "enabled",
"queue_type": "custom_queue",
"leads_count": 0,
"redistributable_leads_count": null,
"redistributable": false,
"check_in": true,
"check_in_qr_code": true,
"group_memory_lead": false,
"receptionist_enabled": false,
"today_working_time": {
"begin": "00:00",
"end": "23:59",
"enable": true
},
"sales_stand_form_id": null,
"advanced_queue_edit": false,
"rules": [],
"next_seller_index": 0,
"next_seller": {},
"distribution_sellers_quantity": 0
}
]
}
Listar Vendedores da Fila
GET https://api.contact2sale.com/integration/distribution_queues/:id/sellers
Lista os vendedores de uma fila de distribuição. Inclui headers de paginação.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | Sim | ID da fila de distribuição |
page |
integer | Não | Número da página |
per_page |
integer | Não | Itens por página |
Response esperado — 200
{
"success": true,
"distribution_queue_sellers": [
{
"id": 67890,
"seller_id": 11111,
"seller_name": "Maria Vendedora",
"company_id": 2776,
"company_name": "Empresa Exemplo",
"priority": 1,
"status": "enabled",
"repeated_on_queue": false,
"count_on_queue": 1,
"first_check_in_at": null,
"last_check_out_at": null,
"checked_in_after_shuffle": false,
"own_hierarchy_name": "Empresa Exemplo",
"closest_parent_hierarchy_name": null,
"level_one_parent_hierarchy_name": null
},
{
"id": 67891,
"seller_id": 22222,
"seller_name": "Carlos Corretor",
"company_id": 2776,
"company_name": "Empresa Exemplo",
"priority": 2,
"status": "enabled",
"repeated_on_queue": false,
"count_on_queue": 1,
"first_check_in_at": null,
"last_check_out_at": null,
"checked_in_after_shuffle": false,
"own_hierarchy_name": "Empresa Exemplo",
"closest_parent_hierarchy_name": null,
"level_one_parent_hierarchy_name": null
}
]
}
Atualizar Prioridades dos Vendedores
POST https://api.contact2sale.com/integration/distribution_queues/:id/sellers_priorities
Atualiza as prioridades dos vendedores dentro de uma fila de distribuição.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | Sim | ID da fila de distribuição |
Body
{
"...": "Configuração de prioridades dos vendedores"
}
Response esperado — 200
{
"success": true,
"distribution_queue_sellers": [
{
"id": 67890,
"seller_id": 11111,
"seller_name": "Maria Vendedora",
"priority": 1,
"status": "enabled"
},
{
"id": 67891,
"seller_id": 22222,
"seller_name": "Carlos Corretor",
"priority": 2,
"status": "enabled"
}
]
}
Redistribuir Lead
POST https://api.contact2sale.com/integration/distribution_queues/:id/redistribute_lead
Redistribui um lead pela fila de distribuição.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | Sim | ID da fila de distribuição |
Body
{
"id": "<encrypted_lead_id>"
}
Response esperado — 200
{
"success": true,
"lead_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"new_seller": {
"id": 22222,
"name": "Carlos Corretor",
"company_name": "Empresa Exemplo"
}
}
Definir Próximo Vendedor
POST https://api.contact2sale.com/integration/distribution_queues/:id/next_seller
Define o próximo vendedor na rotação da fila de distribuição. O vendedor deve estar habilitado na fila.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id |
integer | Sim | ID da fila de distribuição |
Body
{
"next_queue_seller_id": 123
}
Response esperado — 200
{
"next_seller": {
"id": 67890,
"distribution_queue_id": 12345,
"seller_id": 11111,
"priority": 1,
"last_lead_received_at": null,
"status": "enabled",
"created_at": "2026-04-15T15:03:40.000-03:00",
"updated_at": "2026-04-15T15:03:40.000-03:00",
"lead_skipped_at": null
}
}
Webhooks
Endpoints para gerenciamento de webhooks, que permitem receber automaticamente as informações dos leads em tempo real através de gatilhos configuráveis.
Com os webhooks, seu sistema será notificado sempre que um lead for criado, atualizado ou encerrado — sem necessidade de consultar a API periodicamente.
Assinar Webhook
POST https://api.contact2sale.com/integration/api/subscribe
Assina eventos de webhook para leads. Ações disponíveis: on_create_lead, on_update_lead, on_close_lead.
Gatilhos disponíveis:
- on_create_lead — Envia as informações do lead no momento em que ele é criado.
- on_update_lead — Envia as informações do lead quando é gerado um log de alteração dentro dele.
- on_close_lead — Envia as informações do lead quando ele é arquivado ou o negócio é fechado com o cliente.
⚠️ Importante: Só é possível cadastrar 1 endpoint por token utilizado. Caso um segundo endpoint seja cadastrado, o primeiro será automaticamente apagado.
É possível utilizar os 3 gatilhos em um mesmo endpoint — basta enviar uma requisição de assinatura para cada ação desejada.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"hook_action": "on_create_lead",
"hook_url": "https://seu-servidor.com/webhook"
}
Response esperado — 200
{
"success": true,
"message": "Subscribed successfully"
}
Cancelar Webhook
POST https://api.contact2sale.com/integration/api/unsubscribe
Cancela a assinatura de eventos de webhook.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer {token} |
Token de autenticação (preferencial) |
Authentication |
{token} |
Header alternativo para o mesmo token |
Content-Type |
application/json |
Body
{
"hook_action": "on_create_lead"
}
Response esperado — 200
{
"success": true,
"message": "Unsubscribed successfully"
}
Stand de Vendas
Endpoints para acesso a dados do módulo de Estande de Vendas. ⚠️ Esses endpoints só funcionam caso a função de Stand de Vendas esteja ativa na sua conta.
Fluxo recomendado:
GET /stands→ descobre os IDs de estandes e formuláriosGET /leads→ lista leads filtrando porcustom_lead_form_id(do passo 1)GET /attendance_summaries→ lista presenças filtrando porsales_stand_id(do passo 1)
⚠️ Todos os IDs retornados pela API são criptografados e devem ser enviados como recebidos nos parâmetros de filtro. Nunca use IDs numéricos diretos.
Listar Estandes
GET https://api.contact2sale.com/integration/integration/sales_stand/stands
Lista os estandes de vendas (filas de distribuição com regra de estande) acessíveis pela hierarquia da empresa autenticada, com o formulário de atendimento associado a cada um.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer <token> |
Token de autenticação gerado no C2S |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
company_ids[] |
array de strings | Não | Filtra por empresas específicas da hierarquia. Se omitido, retorna estandes de toda a hierarquia. |
Response esperado — 200
{
"data": [
{
"id": 123,
"name": "Nome do Estande",
"company_id": "<company_id>",
"company_name": "Nome da Empresa",
"custom_lead_form_id": 456,
"created_at": "2025-01-15T10:00:00.000-03:00",
"updated_at": "2025-01-16T14:30:00.000-03:00"
}
]
}
Listar Leads do Estande
GET https://api.contact2sale.com/integration/integration/sales_stand/leads
Lista os leads capturados em estandes de vendas, com paginação de 50 registros por página.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer <token> |
Token de autenticação gerado no C2S |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
start_date |
string (YYYY-MM-DD) | Não | Início do período. Padrão: 1 mês atrás. |
end_date |
string (YYYY-MM-DD) | Não | Fim do período. Padrão: hoje. |
custom_lead_form_ids[] |
array de strings | Não | Filtra por formulário(s) de estande. Usar os custom_lead_form.id retornados por /stands. |
company_ids[] |
array de strings | Não | Filtra por empresas específicas da hierarquia. |
page |
integer | Não | Página desejada. Padrão: 1. |
Response esperado — 200
{
"data": [
{
"id": "<encrypted_lead_id>",
"customer_name": "Nome do Cliente",
"customer_email": "cliente@exemplo.com",
"customer_phone": "11999999999",
"seller_name": "Nome do Vendedor",
"status": "Em negociação",
"check_in_at": "2025-01-15T10:00:00.000-03:00",
"check_out_at": "2025-01-15T11:00:00.000-03:00",
"created_at": "2025-01-15T10:00:00.000-03:00"
}
],
"pagination": {
"current_page": 1,
"per_page": 50,
"total_count": 1,
"total_pages": 1
}
}
Resumo de Presenças
GET https://api.contact2sale.com/integration/integration/sales_stand/attendance_summaries
Lista o resumo de presenças por diretor/gerente/empresa com paginação de 50 registros por página.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
Bearer <token> |
Token de autenticação gerado no C2S |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
start_date |
string (YYYY-MM-DD) | Sim | Início do período. |
end_date |
string (YYYY-MM-DD) | Sim | Fim do período. |
sales_stand_ids[] |
array de strings | Não | Filtra por estande(s). Usar os id retornados por /stands. |
company_ids[] |
array de strings | Não | Filtra por empresas específicas da hierarquia. |
page |
integer | Não | Página desejada. Padrão: 1. |
Response esperado — 200
{
"data": [
{
"seller_id": "<seller_id>",
"seller_name": "Nome do Vendedor",
"total_attendances": 15,
"total_leads_received": 10,
"check_in_count": 20,
"check_out_count": 20,
"average_attendance_time_minutes": 45
}
]
}
Blocklist
Endpoints para gerenciamento da blocklist de contatos da hierarquia. ⚠️ Esses endpoints só funcionam caso a função de "Hierarquia" esteja ativa na sua conta.
Listar Blocklist
GET https://api.contact2sale.com/integration/integration/hierarchy_blocklists
Lista todas as entradas da blocklist da hierarquia da empresa autenticada, ordenadas pela mais recente.
O escopo é sempre a hierarquia da empresa autenticada (determinado via top_hierarchy_company).
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
<token> |
Token de autenticação gerado no C2S |
Response esperado — 200
{
"blocklists": [
{
"id": 789,
"phone": "5511999999999",
"email": null,
"top_parent_company_id": "<company_id>",
"created_at": "2025-01-15T10:00:00.000-03:00",
"updated_at": "2025-01-15T10:00:00.000-03:00"
},
{
"id": 788,
"phone": null,
"email": "bloqueado@exemplo.com",
"top_parent_company_id": "<company_id>",
"created_at": "2025-01-14T10:00:00.000-03:00",
"updated_at": "2025-01-14T10:00:00.000-03:00"
}
]
}
Adicionar à Blocklist
POST https://api.contact2sale.com/integration/integration/hierarchy_blocklists
Adiciona um telefone e/ou e-mail à blocklist da hierarquia. Ao ser criada, a entrada impede que novos leads com esse contato sejam distribuídos dentro da hierarquia.
Campos do body:
phone(condicional) — Telefone do contato. Será normalizado (formato E.164 com variações).email(condicional) — E-mail do contato. Será normalizado (lowercase + trim).remove_leads(opcional, default: false) — Setrue, dispara worker assíncrono para remover/redistribuir leads existentes que correspondam ao contato bloqueado. Sefalse, apenas registra o audit log.
Pelo menos um dos dois (phone ou email) deve ser enviado.
Verificação de duplicidade: O sistema verifica se já existe uma entrada com o mesmo telefone (considerando variações de formatação) ou e-mail na hierarquia. Se existir, retorna 409 Conflict.
Notas:
- O campo
phonepassa por normalização automática cobrindo variações de DDD/DDI. - Enviar
11999998888ou+5511999998888produz o mesmo resultado de conflito.
Respostas possíveis:
201— Entrada criada com sucesso.409— Já existe um registro com esse telefone/e-mail na hierarquia.422— Falha de validação ou erro inesperado.
Headers
| Key | Value | Descrição |
|---|---|---|
Authorization |
<token> |
Token de autenticação gerado no C2S |
Content-Type |
application/json |
Tipo do conteúdo |
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
phone |
string | Não | Telefone do contato. Pelo menos phone ou email deve ser enviado. |
email |
string | Não | E-mail do contato. Pelo menos phone ou email deve ser enviado. |
remove_leads |
boolean | Não | Se true, remove/redistribui leads existentes com esse contato. Default: false. |
Body
{"hierarchy_blocklist": {"phone": "11999998888", "email": "contato@empresa.com", "remove_leads": true}}
Response esperado — 201
{
"success": true
}