ChatMetric – API Externa

API RESTful para integração com sistemas externos. Permite leitura de dados de CRM (leads, negócios, pipeline) e atualização de registros via PUT.

Base URL

https://api.chatmetric.com.br/open

Autenticação

X-API-Key: sk_live_...

Formato

Todas as requisições e respostas usam JSON. Sempre envie Content-Type: application/json em POSTs.

Rate Limit

1.000 requisições por hora por API Key. O limite restante é retornado nos headers de resposta.

Autenticação

Todos os endpoints (exceto os de teste) exigem uma API Key válida enviada no header HTTP.

Exemplo de requisição autenticada
curl https://api.chatmetric.com.br/open/leads \
  -H "X-API-Key: sk_live_SuaChaveAqui"
Rate Limiting

Os headers abaixo são retornados em todas as respostas autenticadas:

HeaderDescrição
X-RateLimit-LimitLimite total de requisições por hora
X-RateLimit-RemainingRequisições restantes na janela atual
X-RateLimit-ResetTimestamp Unix de quando o limite será resetado
Códigos de Erro
CódigoSignificado
401API Key ausente, inválida ou inativa
404Recurso não encontrado ou não pertence à sua conta
422Dados inválidos no body da requisição
429Rate limit excedido
500Erro interno do servidor
Leads
GET /leads Listar leads com filtros e paginação
Requer auth

Retorna todos os leads da conta com suporte a filtros, ordenação e paginação. Inclui dados de WhatsApp vinculado, responsável e produtos associados via negócios.

Query Parameters
ParâmetroTipoObrigatórioDescrição
pageintopcionalNúmero da página (padrão: 1)
per_pageintopcionalRegistros por página, máx 100 (padrão: 20)
origemstringopcionalFiltrar por origem: site, whatsapp, formulario, etc
id_usuario_responsavelintopcionalFiltrar por ID do usuário responsável
cidadestringopcionalFiltrar por cidade
estadostringopcionalFiltrar por estado (UF, ex: SP)
buscastringopcionalBusca em nome, email, telefone ou empresa
order_bystringopcionalCampo para ordenação (padrão: created_at)
order_dirstringopcionalDireção: asc ou desc (padrão: desc)
Resposta 200
{
  "data": [
    {
      "id": 328,
      "id_conta": 13,
      "nome": "João Silva",
      "email": "joao@empresa.com",
      "telefone": "41999999999",
      "empresa": "Empresa XYZ",
      "cargo": "Diretor",
      "origem": "formulario",
      "cidade": "Curitiba",
      "estado": "PR",
      "pais": "Brasil",
      "observacoes": "Lead via formulário",
      "id_usuario_responsavel": null,
      "email_responsavel": "vendedor@empresa.com",
      "nome_responsavel": "Vendedor A",
      "data_primeira_interacao": null,
      "data_ultima_interacao": "2026-03-23T18:58:48",
      "created_at": "2026-02-25T17:18:46",
      "updated_at": "2026-03-23T18:58:48",
      "cpf": null,
      "rg": null,
      "data_nascimento": null,
      "cep": null,
      "logradouro": null,
      "numero": null,
      "complemento": null,
      "bairro": null,
      "whatsapp": {
        "telefone": "5541999999999",
        "nome": "João",
        "nome_salvo": null,
        "ultima_interacao": null,
        "total_mensagens": 0,
        "tem_mensagens_nao_lidas": false
      },
      "produtos": [
        { "id_produto": 1, "nome_produto": "Plano Pro", "codigo_item": "PRO-001" }
      ]
    }
  ],
  "metadata": {
    "total": 150,
    "page": 1,
    "per_page": 20,
    "total_pages": 8
  }
}
POST /leads Criar novo lead
Requer auth

Cria um novo lead na conta. O ID é gerado automaticamente. O id_conta é determinado pela API Key — não precisa ser informado no body.

Body (application/json)
CampoTipoObrigatórioDescrição
nomestringobrigatórioNome do lead
emailstringopcionalEmail do lead
telefonestringopcionalTelefone
empresastringopcionalEmpresa
cargostringopcionalCargo
origemstringopcionalOrigem (site, whatsapp, formulario...)
cidadestringopcionalCidade
estadostringopcionalEstado (UF)
paisstringopcionalPaís (padrão: Brasil)
observacoesstringopcionalObservações
id_usuario_responsavelintopcionalID do responsável
cpfstringopcionalCPF
rgstringopcionalRG
data_nascimentostringopcionalData nascimento (YYYY-MM-DD)
cepstringopcionalCEP
logradourostringopcionalLogradouro
numerostringopcionalNúmero
complementostringopcionalComplemento
bairrostringopcionalBairro
Exemplo de requisição
POST /open/leads
Content-Type: application/json
X-API-Key: sk_live_...

{
  "nome": "Maria Oliveira",
  "email": "maria@empresa.com",
  "telefone": "41988887777",
  "empresa": "Empresa ABC",
  "cargo": "Gerente",
  "origem": "site",
  "cidade": "Curitiba",
  "estado": "PR"
}
Resposta 201 — lead criado
{ "id": 329, "nome": "Maria Oliveira", "email": "maria@empresa.com", ... }
GET /leads/{lead_id} Buscar lead por ID
Requer auth

Retorna todos os dados de um lead específico, incluindo WhatsApp e responsável.

Path Parameters
ParâmetroTipoObrigatórioDescrição
lead_idintobrigatórioID do lead
PUT /leads/{lead_id} Atualizar dados do lead
Requer auth

Atualiza os dados de um lead. Semântica PATCH — apenas os campos enviados no body são atualizados. Campos omitidos não são alterados.

Campos computados como email_responsavel e nome_responsavel são somente leitura. Para alterar o responsável, use id_usuario_responsavel.
Body (application/json) — todos opcionais
CampoTipoDescrição
nomestringNome do lead
emailstringEmail do lead
telefonestringTelefone do lead
empresastringEmpresa
cargostringCargo
origemstringOrigem do lead (site, whatsapp, formulario...)
cidadestringCidade
estadostringEstado (UF, ex: SP)
paisstringPaís
observacoesstringObservações
id_usuario_responsavelintID do usuário responsável
cpfstringCPF
rgstringRG
data_nascimentostringData de nascimento (YYYY-MM-DD)
cepstringCEP
logradourostringLogradouro
numerostringNúmero
complementostringComplemento
bairrostringBairro
whatsapp.telefonestringNúmero WhatsApp com DDI (ex: 5541999999999)
whatsapp.nomestringNome no WhatsApp
whatsapp.nome_salvostringNome salvo na agenda
Exemplo de requisição
PUT /open/leads/328
Content-Type: application/json
X-API-Key: sk_live_...

{
  "empresa": "Nova Empresa Ltda",
  "cargo": "CEO",
  "cidade": "São Paulo",
  "estado": "SP",
  "whatsapp": {
    "nome_salvo": "João - Nova Empresa"
  }
}
Resposta 200 — lead atualizado completo
{ "id": 328, "nome": "João Silva", "empresa": "Nova Empresa Ltda", ... }
GET /leads/{lead_id}/negocios Listar negócios de um lead
Requer auth

Retorna todos os negócios vinculados ao lead, com etapa, responsável, produtos e custom fields.

Query Parameters
ParâmetroTipoPadrãoDescrição
include_custom_fieldsbooltrueIncluir custom fields
include_produtosbooltrueIncluir produtos vinculados
Negócios
POST /negocios Criar novo negócio
Requer auth

Cria um novo negócio na conta. O ID é gerado automaticamente. O id_conta é determinado pela API Key.

Etapa: se não informada, o negócio é criado automaticamente na etapa de menor ordem ativa da conta (normalmente a etapa inicial do funil).
Body (application/json)
CampoTipoObrigatórioDescrição
titulostringobrigatórioTítulo do negócio
responsavelobjectobrigatório{"id": 16} — ID do responsável
etapaobjectopcional{"id": 1} — se omitido, usa etapa de menor ordem
dor_clientestringopcionalDor / problema do cliente
valorstringopcionalValor em decimal (ex: "1500.00"). Padrão: "0.00"
moedastringopcionalCódigo da moeda. Padrão: BRL
statusstringopcionalABERTO | GANHO | PERDIDO | CANCELADO. Padrão: ABERTO
origemstringopcionalOrigem do negócio
observacoesstringopcionalObservações internas
proxima_atividadestringopcionalPróxima atividade
id_personaintopcionalID da persona vinculada
id_leadintopcionalID do lead para vincular como principal
Exemplo de requisição
POST /open/negocios
Content-Type: application/json
X-API-Key: sk_live_...

{
  "titulo": "Proposta Empresa ABC",
  "responsavel": { "id": 16 },
  "valor": "3500.00",
  "origem": "site",
  "observacoes": "Cliente interessado no plano anual",
  "id_lead": 328
}
Resposta 201 — negócio criado
{
  "id": 1242,
  "titulo": "Proposta Empresa ABC",
  "status": "ABERTO",
  "valor": "3500.00",
  "moeda": "BRL",
  "etapa": { "id": 1, "nome": "Novo Lead", "ordem": 1, "probabilidade_fechamento": "10.00" },
  "responsavel": { "id": 16, "nome": "João Verão" },
  "leads": [ { "id_lead": 328, "principal": true } ],
  ...
}
GET /negocios Listar negócios com filtros
Requer auth

Lista todos os negócios da conta com paginação, filtros e dados relacionados (etapa, responsável, leads, produtos, persona).

Query Parameters
ParâmetroTipoObrigatórioDescrição
pageintopcionalPágina (padrão: 1)
per_pageintopcionalRegistros por página, máx 100 (padrão: 20)
statusstringopcionalABERTO | GANHO | PERDIDO | CANCELADO
id_etapaintopcionalID da etapa do pipeline
id_usuario_responsavelintopcionalID do responsável
valor_minimofloatopcionalValor mínimo do negócio
valor_maximofloatopcionalValor máximo do negócio
include_custom_fieldsboolopcionalIncluir custom fields (padrão: true)
include_produtosboolopcionalIncluir produtos (padrão: true)
Resposta 200
{
  "data": [
    {
      "id": 1241,
      "id_conta": 13,
      "titulo": "Proposta Empresa XYZ",
      "dor_cliente": null,
      "valor": "2.00",
      "moeda": "BRL",
      "status": "ABERTO",
      "data_fechamento_real": "2026-04-23T00:00:00",
      "origem": null,
      "observacoes": null,
      "proxima_atividade": null,
      "created_at": "2026-04-23T14:02:05",
      "updated_at": "2026-04-30T21:31:30",
      "persona": null,
      "etapa": { "id": 1, "nome": "Novo Lead", "ordem": 1, "probabilidade_fechamento": "10.00" },
      "responsavel": { "id": 16, "nome": "João Verão" },
      "motivo_perda": null,
      "leads": [ { "id_lead": 328, "principal": true } ],
      "produtos": []
    }
  ],
  "metadata": { "total": 45, "page": 1, "per_page": 20, "total_pages": 3 }
}
GET /negocios/{negocio_id} Buscar negócio por ID
Requer auth

Retorna dados completos de um negócio incluindo produtos com valores unitários, custom fields e leads vinculados.

Query Parameters
ParâmetroTipoPadrãoDescrição
include_custom_fieldsbooltrueIncluir custom fields
include_produtosbooltrueIncluir produtos detalhados
PUT /negocios/{negocio_id} Atualizar dados do negócio
Requer auth

Atualiza os dados de um negócio. Semântica PATCH — apenas os campos enviados são atualizados. Campos de referência (etapa, responsável) são validados contra a conta antes de salvar.

etapa e responsavel não podem ser enviados como null — são campos obrigatórios no banco. Para removê-los, reatribua para outro valor válido.
Body (application/json) — todos opcionais
CampoTipoDescrição
titulostringTítulo do negócio
dor_clientestringDor / problema do cliente
valorstringValor em decimal (ex: "1500.00")
moedastringCódigo da moeda (ex: BRL, USD)
statusstringABERTO | GANHO | PERDIDO | CANCELADO
observacoesstringObservações internas
proxima_atividadestringDescrição da próxima atividade
etapaobject{"id": 2} — ID da etapa do pipeline
responsavelobject{"id": 16} — ID do usuário responsável
motivo_perdaobject|null{"id": 3} ou null para remover
id_personaint|nullID da persona ou null para desvincular
Exemplo de requisição
PUT /open/negocios/1241
Content-Type: application/json
X-API-Key: sk_live_...

{
  "status": "GANHO",
  "valor": "5000.00",
  "observacoes": "Contrato assinado",
  "etapa": { "id": 5 },
  "motivo_perda": null
}
Resposta 200 — negócio atualizado completo
{ "id": 1241, "titulo": "Proposta Empresa XYZ", "status": "GANHO", "valor": "5000.00", ... }
GET /negocios/{negocio_id}/historico Histórico de eventos do negócio
Requer auth

Retorna a trilha de auditoria completa do negócio: criação, mudanças de etapa, valor, responsável, status e notas.

Query Parameters
ParâmetroTipoPadrãoDescrição
pageint1Página
per_pageint50Registros por página (máx 100)
Resposta 200
{
  "data": [
    {
      "id": 88,
      "tipo_evento": "MUDANCA_ETAPA",
      "descricao": "Etapa alterada de 'Novo Lead' para 'Proposta'",
      "created_at": "2026-04-25T10:30:00",
      "usuario": { "id": 16, "nome": "João Verão" }
    }
  ],
  "metadata": { "total": 12, "page": 1, "per_page": 50, "total_pages": 1 }
}
GET /negocios/{negocio_id}/produtos Listar produtos do negócio
Requer auth

Retorna todos os produtos vinculados ao negócio com quantidade, valores e item específico (SKU).

GET /negocios/{negocio_id}/custom-fields Custom fields do negócio
Requer auth

Retorna apenas os custom fields preenchidos do negócio.

Pipeline
GET /pipeline-etapas Listar etapas do pipeline
Requer auth

Retorna todas as etapas ativas do pipeline ordenadas por posição, com probabilidade de fechamento.

Resposta 200
{
  "data": [
    { "id": 1, "nome": "Novo Lead", "ordem": 1, "cor": "#6366f1", "probabilidade_fechamento": "10.00", "ativo": true },
    { "id": 2, "nome": "Qualificado", "ordem": 2, "cor": "#f59e0b", "probabilidade_fechamento": "30.00", "ativo": true }
  ],
  "metadata": { "total": 5 }
}
Cadastros
GET /personas Listar personas da conta
Requer auth

Retorna os perfis-alvo de clientes configurados na conta.

GET /personas/{persona_id} Buscar persona por ID
Requer auth
Resposta 200
{ "id": 3, "nome": "CEO", "caracteristicaprincipal": "Decisor final", "descricao": "..." }
GET /produtos Listar produtos
Requer auth
Query Parameters
ParâmetroTipoPadrãoDescrição
pageint1Página
per_pageint20Registros por página (máx 100)
apenas_ativosboolfalseSe true, retorna apenas produtos ativos. Padrão: false (retorna todos)
GET /produtos/{produto_id} Buscar produto por ID
Requer auth
Resposta 200
{ "id": 1, "nome": "Plano Pro", "descricao": "...", "url": "https://...", "ativo": true }
POST /produtos Criar produto
Requer auth

Cria um novo produto na conta. O produto é criado como ativo por padrão. O id_conta é determinado automaticamente pela API Key.

Body (JSON)
CampoTipoObrigatórioDescrição
nomestringobrigatórioNome do produto (máx 100 caracteres)
urlstringopcionalURL do produto (máx 2000 caracteres)
descricaostringopcionalDescrição do produto
Requisição
POST /open/produtos
Content-Type: application/json

{
  "nome": "Plano Enterprise",
  "url": "https://chatmetric.com.br/enterprise",
  "descricao": "Plano completo com todas as funcionalidades"
}
Resposta 201
{
  "id": 42,
  "nome": "Plano Enterprise",
  "descricao": "Plano completo com todas as funcionalidades",
  "url": "https://chatmetric.com.br/enterprise",
  "ativo": 1
}
PUT /produtos/{produto_id} Atualizar produto
Requer auth

Atualiza os dados de um produto existente. Todos os campos são opcionais — apenas os campos enviados no body serão atualizados (semântica PATCH).

Body (JSON)
CampoTipoObrigatórioDescrição
nomestringopcionalNovo nome do produto
urlstringopcionalNova URL do produto
descricaostringopcionalNova descrição
ativobooleanopcionaltrue para ativar, false para desativar
Requisição
PUT /open/produtos/42
Content-Type: application/json

{
  "nome": "Plano Enterprise Plus",
  "descricao": "Versão expandida com suporte prioritário",
  "ativo": true
}
Resposta 200
{
  "id": 42,
  "nome": "Plano Enterprise Plus",
  "descricao": "Versão expandida com suporte prioritário",
  "url": "https://chatmetric.com.br/enterprise",
  "ativo": 1
}
Itens de Produto
GET /produtos/{produto_id}/itens Listar itens de um produto
Requer auth

Lista todos os itens (SKUs) de um produto. O item padrão aparece primeiro.

Query Parameters
ParâmetroTipoPadrãoDescrição
apenas_ativosboolfalseSe true, retorna apenas itens ativos. Padrão: false (retorna todos)
Resposta 200
{
  "data": [
    {
      "id": 10, "id_produto": 3, "codigo": "PRO-001",
      "nome": "Plano Mensal", "descricao": "...",
      "preco": 199.90, "moeda": "BRL",
      "is_default": true, "ativo": true,
      "data_criacao": "2026-01-10T10:00:00",
      "data_atualizacao": "2026-01-10T10:00:00"
    }
  ],
  "metadata": { "total": 1, "id_produto": 3 }
}
GET /produtos/{produto_id}/itens/{item_id} Buscar item por ID
Requer auth

Retorna os detalhes de um item específico.

POST /produtos/{produto_id}/itens Criar item de produto
Requer auth

Cria um novo item (SKU) para um produto. Se is_default for true, os outros itens são automaticamente desmarcados como padrão.

Body (JSON)
CampoTipoObrigatórioDescrição
nomestringobrigatórioNome do item (máx 255 caracteres)
codigostringopcionalCódigo / SKU do item
descricaostringopcionalDescrição do item
preconumberopcionalPreço (≥ 0)
moedastringopcionalCódigo da moeda (padrão: BRL)
is_defaultbooleanopcionalDefinir como item padrão (padrão: false)
Requisição
POST /open/produtos/3/itens
Content-Type: application/json

{
  "nome": "Plano Mensal",
  "codigo": "PRO-001",
  "preco": 199.90,
  "moeda": "BRL",
  "is_default": true
}
Resposta 201
{
  "id": 10, "id_produto": 3, "codigo": "PRO-001",
  "nome": "Plano Mensal", "descricao": null,
  "preco": 199.90, "moeda": "BRL",
  "is_default": true, "ativo": true,
  "data_criacao": "2026-07-02T10:00:00",
  "data_atualizacao": "2026-07-02T10:00:00"
}
PUT /produtos/{produto_id}/itens/{item_id} Atualizar item de produto
Requer auth

Atualiza os dados de um item existente. Apenas os campos enviados são alterados (semântica PATCH).

Body (JSON)
CampoTipoObrigatórioDescrição
nomestringopcionalNovo nome do item
codigostringopcionalNovo código / SKU
descricaostringopcionalNova descrição
preconumberopcionalNovo preço (≥ 0)
moedastringopcionalNovo código de moeda
ativobooleanopcionaltrue para ativar, false para desativar
Requisição
PUT /open/produtos/3/itens/10
Content-Type: application/json

{ "preco": 249.90, "descricao": "Com 30 dias de trial" }
DEL /produtos/{produto_id}/itens/{item_id} Excluir item (soft delete)
Requer auth

Realiza exclusão lógica do item (ativo = 0). O registro permanece no banco.

O item padrão não pode ser excluído enquanto houver outros itens ativos. Defina outro item como padrão primeiro.

Retorna 204 No Content em caso de sucesso.

GET /vendedores Listar vendedores
Requer auth

Lista todos os vendedores da conta.

GET /vendedores/{vendedor_id} Buscar vendedor por ID
Requer auth
GET /vendedores/{vendedor_id}/skills Skills ativas do vendedor
Requer auth

Retorna as habilidades de vendas ativas do vendedor (máx 3 simultaneamente).

Resposta 200
{
  "data": [
    { "id": 2, "nome": "Escuta Ativa", "descricao": "...", "vinculado_em": "2026-01-10T09:00:00" }
  ],
  "metadata": { "total": 1 }
}
Configuração
GET /custom-fields/definition Estrutura dos custom fields
Requer auth

Retorna a definição completa dos custom fields configurados para a conta. Útil para geração de formulários dinâmicos e validação no client.

Query Parameters
ParâmetroTipoPadrãoDescrição
apenas_ativosbooltrueRetornar apenas campos ativos
ChatMetric API Externa v1.0 — Dúvidas? Contate o time de integrações.