API pública do X32 CRM
Integre seu site, loja virtual, ERP ou ferramentas como n8n e Make ao seu CRM.
Começando
A API está disponível nos planos Padrão e Completo. Cada empresa tem seu próprio endereço:
https://SUA-EMPRESA.crm.x32.com.br/api/x32
Gere o token em Configurações → API pública dentro do CRM (até 3 tokens por empresa). Envie em todas as chamadas um destes cabeçalhos:
token: SEU_TOKEN
Authorization: Bearer SEU_TOKEN
O token pode ser leitura e escrita ou só leitura (apenas GET). Use o token só no servidor, nunca em JavaScript de página.
Limite: 60 chamadas por minuto por token. Acima disso, a resposta é 429 com o cabeçalho Retry-After (segundos para tentar de novo).
Envie e receba JSON (Content-Type: application/json). Datas no formato ISO 8601 (2026-11-01T10:00:00-03:00) ou 2026-11-01 10:00.
Exemplo
curl -X POST https://SUA-EMPRESA.crm.x32.com.br/api/x32/leads \
-H "token: SEU_TOKEN" -H "Content-Type: application/json" \
-d '{"nome":"Maria Silva","email":"maria@exemplo.com","celular":"62999990000","mensagem":"Quero uma proposta"}'
Respostas e erros
Toda resposta tem status (true ou false). Erros trazem mensagem; erros de validação trazem também errors por campo.
| Código | Quando |
|---|---|
200 / 201 | Sucesso / registro criado. |
401 | Token inválido ou não informado. |
403 | Token só de leitura, plano sem API ou conta em teste grátis. |
404 | Registro não encontrado. |
409 | Já existe (e-mail, CNPJ ou nome). A resposta traz o id do registro existente. |
422 | Dados inválidos. |
429 | Limite de chamadas por minuto atingido. |
503 | Consulta temporariamente indisponível. |
Listas
As listas são paginadas: ?pagina=1&por_pagina=50 (máximo 100). A resposta traz dados, pagina, por_pagina, total e paginas. Para sincronizar, use o filtro atualizado_desde.
Leads
| GET | /leads | Lista. Filtros: funil_id, etapa_id, origem_id, responsavel_id, pessoa_id, situacao (aberto, ganho, perdido), busca (título), criado_desde, criado_ate, atualizado_desde. |
| POST | /leads | Cria o lead, e o contato e a organização se ainda não existirem (procura pelo e-mail, telefone e CNPJ). O responsável é escolhido em rodízio entre os usuários ativos. |
| GET | /leads/{id} | Lead com contato e dados de rastreamento (UTM, gclid, fbclid). |
| PUT | /leads/{id} | Altera só os campos enviados: titulo, descricao, valor, responsavel_id, origem_id, tipo_id, pessoa_id, previsao_fechamento. |
| PUT | /leads/{id}/etapa | Muda a etapa: etapa_id ou etapa (código: won = ganho, lost = perdido). Perdido aceita motivo_perda. |
| POST | /leads/{id}/notas | Inclui uma nota no histórico: texto. |
Campos do POST /leads
Obrigatório: nome ou razao. Opcionais: email, telefone, celular, cargo, cpf, nascimento, sexo, razao, fantasia, cnpj, cnae, fundacao, endereco, bairro, cidade, uf, cep, titulo, mensagem, valor, origem (nome da origem), utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid, landing_page, referrer.
{"status": true, "lead_id": 120, "pessoa_id": 88, "organizacao_id": 31}
Contatos
| GET | /contatos | Lista. Filtros: busca (nome), email, telefone, organizacao_id, atualizado_desde. |
| POST | /contatos | Cria. nome e pelo menos email ou telefone. E-mail já cadastrado: 409 com contato_id. |
| GET | /contatos/{id} | Um contato. |
| PUT | /contatos/{id} | Altera só os campos enviados. |
Campos: nome, email ou emails (lista), telefone, celular ou telefones (lista), cargo, cpf, nascimento (AAAA-MM-DD), sexo (Masculino, Feminino, Outro, Prefere não informar; aceita também M/F), organizacao_id, responsavel_id.
Organizações
| GET | /organizacoes | Lista. Filtros: busca (nome), cnpj, atualizado_desde. |
| POST | /organizacoes | Cria. nome obrigatório. CNPJ ou nome já cadastrado: 409 com organizacao_id. |
| GET | /organizacoes/{id} | Uma organização. |
| PUT | /organizacoes/{id} | Altera só os campos enviados. |
Campos: nome, cnpj, fantasia, cnae, site, fundacao (AAAA-MM-DD), endereco, bairro, cidade, uf, cep, responsavel_id.
Atividades
| GET | /atividades | Lista. Filtros: lead_id, pessoa_id, tipo, responsavel_id, pendentes=1, de, ate, atualizado_desde. |
| POST | /atividades | Cria, ligada a lead_id e/ou pessoa_id. |
| GET | /atividades/{id} | Uma atividade. |
| PUT | /atividades/{id} | Altera titulo, descricao, local, inicio, fim, concluida, responsavel_id. |
tipo: call (ligação), meeting (reunião), lunch (almoço) ou note (nota). Ligação, reunião e almoço precisam de titulo e inicio; nota precisa de descricao.
Produtos
| GET | /produtos | Lista. Filtros: busca, sku, ean, origem, externo_id, atualizado_desde. |
| POST | /produtos | Cria, ou atualiza se já existir o mesmo origem + externo_id (ou o mesmo sku). A resposta diz se foi atualizado. |
| GET | /produtos/{id} | Um produto. |
| PUT | /produtos/{id} | Altera só os campos enviados. |
Campos: nome, sku, ean, descricao, preco, quantidade, origem (ex.: woocommerce) e externo_id (código do produto no seu sistema).
Pedidos
| GET | /pedidos | Lista. Filtros: status, pessoa_id, lead_id, origem, externo_id, numero, de, ate, atualizado_desde. |
| POST | /pedidos | Cria, ou atualiza se já existir o mesmo origem + externo_id. |
| GET | /pedidos/{id} | Pedido com itens. |
| PUT | /pedidos/{id} | Altera só os campos enviados (ex.: status). Se enviar itens, a lista é trocada. |
O cliente vai em pessoa_id ou no objeto cliente (nome, email, telefone, celular, razao, cnpj, endereco, cidade, uf, cep), que é procurado ou criado como contato. Pedido novo e mudança de status ficam registrados no histórico do contato.
status: pendente, aguardando_pagamento, pago, processando, enviado, concluido, cancelado, reembolsado, falhou. Sem total, o CRM calcula: soma dos itens − desconto + frete.
{
"origem": "woocommerce", "externo_id": "1532", "numero": "1532", "status": "pago",
"data_pedido": "2026-11-01T10:00:00-03:00", "forma_pagamento": "Pix", "frete": 15.90,
"cliente": {"nome": "Maria Silva", "email": "maria@exemplo.com", "celular": "62999990000"},
"itens": [{"externo_id": "88", "sku": "CAM-P", "nome": "Camiseta P", "quantidade": 2, "preco": 49.90}]
}
Vendas (ERP)
Para integrar o ERP: cada venda vai num só envio, com o cliente, os itens e os produtos. O CRM procura ou cadastra o cliente e os produtos, grava a venda em Pedidos e, quando ela está paga ou concluída, cria um lead ganho com os produtos (entra no dashboard, em "produtos mais vendidos", e nos relatórios).
| POST | /vendas | Registra a venda. Reenviar a mesma venda (mesmo erp + venda.id) atualiza status, valores e itens. Para consultar depois, use GET /pedidos?origem=SEU_ERP&externo_id=CODIGO. |
Corpo
| Campo | Descrição |
|---|---|
erp | Nome do sistema de origem (ex.: meu-erp). Padrão: erp. Fica como origem do pedido e dos produtos. |
gerar_lead | Padrão true. Com false, grava só o pedido (sem lead ganho). |
| venda (objeto) | |
id * | Código da venda no ERP (até 100 caracteres). |
numero | Número exibido (pedido, NF...). |
data | Data e hora da venda. Padrão: agora. |
status | concluido (padrão), pago, processando, enviado = lead ganho. pendente, aguardando_pagamento = só o pedido. cancelado, reembolsado, falhou = lead perdido (se já existir). |
total, desconto, frete | Valores. Sem total, o CRM calcula: soma dos itens − desconto + frete. |
forma_pagamento, observacao | Texto livre. |
vendedor_email | E-mail do usuário do CRM que fez a venda (fica como responsável do lead). |
lead_id | Lead do CRM que originou a venda: ele é marcado como ganho, em vez de criar um lead novo. |
endereco_entrega | Objeto livre. Sem ele, usa o endereço do cliente. |
| cliente (objeto) | |
tipo * | fisica ou juridica. |
nome | Nome da pessoa (física) ou do cliente (jurídica, se não houver razao_social). |
email, telefone, celular | Contato. |
cpf, nascimento, sexo | Pessoa física. O cliente é procurado pelo CPF, depois pelo e-mail e telefone. |
razao_social, nome_fantasia, cnpj, fundacao | Pessoa jurídica: vira organização (procurada pelo CNPJ e pelo nome). |
endereco | Objeto: logradouro, numero, complemento, bairro, cidade, uf, cep. |
contato | Pessoa jurídica: quem compra pela empresa (nome, email, telefone, celular, cargo, cpf). |
| itens (lista, ao menos 1) | |
quantidade * | Quantidade vendida. |
preco_unitario, desconto, total | Sem total: quantidade × preço − desconto. |
produto * | Objeto: id (código no ERP), sku, ean, nome *, descricao, preco. Procurado pelo código do ERP, SKU ou EAN; se não existir, é cadastrado. |
* obrigatório.
Exemplo: pessoa jurídica
{
"erp": "meu-erp",
"venda": {
"id": "V-10293", "numero": "10293", "data": "2026-11-01T10:00:00-03:00", "status": "concluido",
"forma_pagamento": "Boleto 30 dias", "desconto": 10.00, "frete": 25.00,
"vendedor_email": "vendedor@suaempresa.com.br"
},
"cliente": {
"tipo": "juridica", "razao_social": "Mercado Bom Preço Ltda", "nome_fantasia": "Bom Preço",
"cnpj": "12.345.678/0001-90", "fundacao": "2015-03-10", "email": "compras@bompreco.com.br",
"endereco": {"logradouro": "Rua Duque de Caxias", "numero": "317", "bairro": "Jardim Salvador",
"cidade": "Trindade", "uf": "GO", "cep": "75380-000"},
"contato": {"nome": "João Souza", "celular": "62999990000", "cargo": "Comprador"}
},
"itens": [
{"quantidade": 10, "preco_unitario": 12.50,
"produto": {"id": "P-88", "sku": "ARZ-5KG", "ean": "7891234567890", "nome": "Arroz 5 kg"}},
{"quantidade": 4, "preco_unitario": 39.90,
"produto": {"id": "P-91", "nome": "Óleo de soja cx 12"}}
]
}
Exemplo: pessoa física
{
"erp": "meu-erp",
"venda": {"id": "V-10294", "status": "pago", "total": 89.90},
"cliente": {"tipo": "fisica", "nome": "Maria Silva", "cpf": "123.456.789-09", "nascimento": "1990-05-10",
"sexo": "F", "email": "maria@exemplo.com", "celular": "62988887777"},
"itens": [{"quantidade": 1, "preco_unitario": 89.90, "produto": {"id": "P-12", "nome": "Cafeteira"}}]
}
Resposta
{"status": true, "atualizado": false, "pedido_id": 57, "lead_id": 310, "pessoa_id": 88, "organizacao_id": 31,
"produtos": [{"externo_id": "P-88", "produto_id": 14}, {"externo_id": "P-91", "produto_id": 15}],
"pedido": { ... }}
Código 201 na primeira vez e 200 quando atualiza. A venda também dispara os webhooks pedido.criado / pedido.atualizado e fica registrada como nota no histórico do cliente.
Funis, origens e usuários
Para saber os ids usados nos filtros e nas alterações:
| GET | /funis | Funis com as etapas (id, nome, código, probabilidade). |
| GET | /origens | Origens dos leads. |
| GET | /tipos | Tipos de lead. |
| GET | /usuarios | Usuários (id, nome, e-mail, ativo). |
Consultas
Consultas só de leitura, com o mesmo token e limite. A resposta traz os dados em dados.
| GET | /consultas/cnpj/{cnpj} | Empresa pelo CNPJ (só números): razão social, fantasia, situação, abertura, CNAE, porte, MEI, capital, endereço, telefones, e-mail e sócios. |
| GET | /consultas/cep/{cep} | Endereço do CEP, com latitude e longitude quando houver. |
| GET | /consultas/ncm/{ncm} | Descrição do NCM. |
| GET | /consultas/produto/{ean} | Produto pelo código de barras (EAN): descrição, embalagem, imagem, NCM, CEST, últimos preços e médias de custo e preço. |
Webhooks
Cadastre em Configurações → API pública → Webhooks um endereço https:// do seu sistema. O CRM envia um POST em JSON a cada evento escolhido:
lead.criado | Lead criado |
lead.atualizado | Lead alterado |
lead.etapa_alterada | Lead mudou de etapa (inclui ganho e perdido) |
contato.criado | Contato criado |
pedido.criado | Pedido recebido |
pedido.atualizado | Pedido alterado |
{
"evento": "lead.etapa_alterada",
"empresa": "sua-empresa",
"ocorrido_em": "2026-11-01T10:00:00-03:00",
"dados": { "id": 120, "titulo": "...", "situacao": "ganho", "etapa_anterior_id": 3, ... }
}
Confira a origem pelo cabeçalho X-X32-Assinatura: sha256= + HMAC-SHA256 do corpo recebido, com o segredo do webhook. Em PHP:
$corpo = file_get_contents('php://input');
$ok = hash_equals('sha256=' . hash_hmac('sha256', $corpo, $segredo), $_SERVER['HTTP_X_X32_ASSINATURA'] ?? '');
Responda com um código 2xx em até 10 segundos. Se falhar, o CRM tenta de novo em 1, 5, 30, 120 e 720 minutos. O cabeçalho X-X32-Envio identifica o envio, para você ignorar repetições.
MCP (assistentes de IA)
No plano Completo, o CRM também é um servidor MCP: conecte o Claude, o ChatGPT, o n8n ou outro assistente que aceite MCP e peça em português, por exemplo "quais leads entraram esta semana?" ou "agende uma ligação amanhã às 10h com a Maria".
https://SUA-EMPRESA.crm.x32.com.br/api/x32/mcp
Transporte HTTP (Streamable HTTP, JSON-RPC 2.0), com o mesmo token, a mesma permissão e o mesmo limite de 60 chamadas por minuto da API. Com token só leitura, o assistente só vê as ferramentas de consulta.
Claude.ai e ChatGPT
Adicione um conector personalizado com o endereço acima (no Claude: Configurações → Conectores → Adicionar conector personalizado; no ChatGPT: Configurações → Conectores, no modo desenvolvedor). O assistente abre a tela de login do seu CRM: entre com seu usuário e clique em Autorizar. O que ele gravar fica no seu nome, e a conexão pode ser revogada em Configurações → API pública. O login segue o OAuth 2.1 com PKCE e cadastro automático do assistente, como pede a especificação do MCP.
Claude Code
claude mcp add --transport http x32crm https://SUA-EMPRESA.crm.x32.com.br/api/x32/mcp --header "token: SEU_TOKEN"
Claude Desktop
No arquivo claude_desktop_config.json (precisa do Node.js instalado):
{
"mcpServers": {
"x32crm": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://SUA-EMPRESA.crm.x32.com.br/api/x32/mcp", "--header", "token:SEU_TOKEN"]
}
}
}
Ferramentas
listar_funis | Lista os funis de vendas com as etapas (id, nome, código, probabilidade). Use antes de mudar etapa ou filtrar leads por funil/etapa. |
listar_origens | Lista as origens de lead (site, WhatsApp, Google Ads...). |
listar_tipos | Lista os tipos de lead. |
listar_usuarios | Lista os usuários do CRM (vendedores), com id, nome, e-mail e se está ativo. |
resumo_funil | Quantidade de leads e soma dos valores em cada etapa de cada funil. Bom para visão geral das vendas. |
listar_leads | Lista leads, do mais novo para o mais antigo, com filtros. |
ver_lead | Mostra um lead com o contato e os dados de rastreamento (UTM, gclid, fbclid). |
criar_lead | Cria um lead e também o contato e a organização, se ainda não existirem (procura por e-mail, telefone e CNPJ). O responsável é escolhido em rodízio. (leitura e escrita) |
atualizar_lead | Altera só os campos enviados de um lead. (leitura e escrita) |
mudar_etapa_lead | Move o lead para outra etapa do funil dele. Use etapa_id ou o código da etapa (won = ganho, lost = perdido). (leitura e escrita) |
adicionar_nota_lead | Inclui uma nota no histórico do lead. (leitura e escrita) |
listar_contatos | Lista contatos (pessoas), com filtros. |
ver_contato | Mostra um contato. |
criar_contato | Cria um contato. Precisa de e-mail ou telefone; e-mail já cadastrado devolve o id existente. (leitura e escrita) |
atualizar_contato | Altera só os campos enviados de um contato. (leitura e escrita) |
listar_organizacoes | Lista organizações (empresas dos contatos). |
ver_organizacao | Mostra uma organização. |
criar_organizacao | Cria uma organização. CNPJ ou nome já cadastrado devolve o id existente. (leitura e escrita) |
atualizar_organizacao | Altera só os campos enviados de uma organização. (leitura e escrita) |
listar_atividades | Lista atividades (ligações, reuniões, almoços e notas) da agenda. |
ver_atividade | Mostra uma atividade. |
criar_atividade | Cria uma atividade ligada a um lead e/ou contato. Ligação, reunião e almoço precisam de titulo e inicio; nota precisa de descricao. (leitura e escrita) |
atualizar_atividade | Altera só os campos enviados (ex.: concluida = true para marcar como feita). (leitura e escrita) |
listar_produtos | Lista produtos do cadastro. |
ver_produto | Mostra um produto. |
criar_produto | Cria um produto (ou atualiza, se já existir o mesmo SKU ou origem + externo_id). (leitura e escrita) |
atualizar_produto | Altera só os campos enviados de um produto. (leitura e escrita) |
listar_pedidos | Lista pedidos (loja virtual, ERP). |
ver_pedido | Mostra um pedido com os itens. |
consultar_cnpj | Dados da empresa pelo CNPJ na base da Receita: razão social, fantasia, situação, abertura, CNAE, porte, endereço, telefones, e-mail e sócios. |
consultar_cep | Endereço do CEP. |
consultar_ncm | Descrição do NCM. |
consultar_produto_ean | Produto pelo código de barras (EAN): descrição, NCM, CEST e médias de custo e preço. |
www.x32.com.br