Desenvolvedores

API, webhooks e MCP. Conecte o CRM da MIP ao seu checkout, ao seu sistema e às IAs que você usa.

Receba no CRM os eventos do checkout (Pix expirado, carrinho abandonado, compra aprovada), leia e crie contatos, negócios e tarefas pela API, seja avisado quando algo acontece no CRM e converse com ele pelo Claude ou pelo ChatGPT.

Começar

  1. No CRM, abra Empresa > Integrações (dono ou gestor) e crie uma chave de API. Ela aparece uma vez só: guarde num lugar seguro.
  2. Mande a chave em todo pedido, no cabeçalho Authorization: Bearer mip_... (ou X-API-Key).
  3. A chave é da empresa: tudo o que a API lê e grava é da empresa dela. Revogue na mesma tela quando não usar mais.

Endereço base: https://api.usemip.com.br/v1. Corpo e resposta em JSON.

Rotas

GET/contatosLista os contatos mais recentes. Filtros: busca (nome, e-mail ou telefone), limite (até 200), antes (data ISO, pra paginar).
GET/contatos/{id}Um contato com os negócios e as tarefas abertas.
POST/contatosCria um contato: nome (obrigatório), telefone, email, organizacao, origem, tags, observacoes. Mesmo telefone ou e-mail devolve o que já existe, com existente: true.
PATCH/contatos/{id}Muda os mesmos campos.
GET/funisOs funis e as etapas de cada um (tipo: aberta, ganho ou perdido).
GET/negociosNegócios recentes. Filtros: funil_id, etapa_id, contato_id, limite.
POST/negociosCria um negócio: contato_id (ou contato com os campos pra criar), titulo, valor, funil_id, etapa_id ou etapa pelo nome. Sem etapa, entra na primeira aberta do primeiro funil.
PATCH/negocios/{id}Muda a etapa (etapa_id ou etapa pelo nome), o valor, o titulo ou o motivo_perda.
GET/tarefasTarefas abertas. todas=true inclui as feitas; contato_id filtra.
POST/tarefasCria uma tarefa: titulo (obrigatório), vence_em (ISO com fuso), descricao, prioridade (alta, media, baixa), contato_id, negocio_id, responsavel_id.
POST/tarefas/{id}/concluirMarca a tarefa como feita.
GET/reunioesReuniões entre de e ate (ISO; padrão: de agora a 14 dias).
GET/resumoContatos novos, negócios e valor por etapa e as próximas reuniões. dias de 1 a 90.

Exemplo

Criar um contato e abrir um negócio pra ele:

curl -X POST https://api.usemip.com.br/v1/negocios \
  -H "Authorization: Bearer $MIP_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"contato": {"nome": "Ana Ribeiro", "telefone": "54999990000", "origem": "site"},
       "titulo": "Clareamento", "valor": 890}'
{
  "negocio": {
    "id": "8a1f...", "numero": 42, "titulo": "Clareamento", "valor": 890,
    "contato_id": "c3d9...", "funil_id": "f12b...", "etapa_id": "e7a0...",
    "criado_em": "2026-10-18T14:02:11Z"
  }
}

Receber eventos

Pra cada compra, Pix gerado ou expirado e carrinho abandonado virar contato no CRM, com etiqueta, negócio na etapa que você escolher e tarefa pra recuperar a venda.

  1. No CRM, abra Empresa > Integrações > Receber eventos do checkout e escolha a plataforma: Hotmart, Kiwify, Eduzz, Ticto, Braip, Yampi, Cartpanda, AbacatePay ou outro sistema.
  2. Copie o endereço, no formato https://api.usemip.com.br/receber/rcb_..., e cole no webhook da plataforma, marcando todos os eventos. A MIP reconhece o formato de cada uma.
  3. Escolha o que fazer com cada evento: pra qual etapa vai o negócio e quando criar tarefa. Quando a compra é aprovada, as etiquetas e tarefas de recuperar saem sozinhas.
compra aprovadapix ou boleto geradopix ou boleto expiradocarrinho abandonadocompra recusadareembolso ou chargebackassinatura cancelada

Sistema próprio

Mande um POST em JSON (ou formulário) pro endereço a cada evento. Precisa de e-mail ou telefone de quem comprou:

curl -X POST https://api.usemip.com.br/receber/rcb_... \
  -H "Content-Type: application/json" \
  -d '{"evento": "pix_expirado", "nome": "Ana Ribeiro", "email": "ana@exemplo.com",
       "telefone": "54999990000", "produto": "Clareamento", "valor": 890, "forma": "pix"}'

O evento é lido pelo sentido: compra_aprovada (ou pago), pix_gerado (ou aguardando), pix_expirado (ou vencido), carrinho_abandonado, compra_recusada, reembolso e assinatura_cancelada. O mesmo corpo mandado duas vezes entra uma vez só, e "teste": true só registra, sem criar nada. A resposta é 200 com {"ok": true}.

O endereço é a senha da conexão: quem tem ele consegue mandar eventos pro seu CRM. Se vazar, apague a conexão e crie outra.

Avisos pro seu sistema (webhooks)

O caminho contrário: a MIP avisa o seu sistema quando algo acontece no CRM. Cadastre o endereço (https) em Empresa > Integrações > Avisar outro sistema e escolha os eventos. Cada aviso é um POST JSON:

contato.criadonegocio.criadonegocio.etapa_mudoureuniao.marcadateste
POST /seu-endereco
X-MIP-Evento: negocio.etapa_mudou
X-MIP-Entrega: 5b0e...   (o mesmo em cada tentativa: use pra não processar duas vezes)
X-MIP-Assinatura: t=1760796131,v1=9f2c...

{
  "id": "5b0e...", "evento": "negocio.etapa_mudou", "criado_em": "2026-10-18T14:05:00Z",
  "dados": { "id": "8a1f...", "titulo": "Clareamento", "valor": 890, "contato_id": "c3d9...",
             "etapa_id": "e9c2...", "etapa": "Reunião marcada", "etapa_tipo": "aberta",
             "etapa_anterior_id": "e7a0..." }
}

Conferir a assinatura

Calcule o HMAC SHA-256 de <t>.<corpo cru> com o segredo do webhook (aparece uma vez, ao criar) e compare com v1. Recuse avisos com t de mais de 5 minutos.

import crypto from 'node:crypto'

function avisoDaMip(corpoCru, cabecalho, segredo) {
  const { t, v1 } = Object.fromEntries(cabecalho.split(',').map(p => p.split('=')))
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false
  const esperado = crypto.createHmac('sha256', segredo).update(`${t}.${corpoCru}`).digest('hex')
  return crypto.timingSafeEqual(Buffer.from(esperado), Buffer.from(v1))
}

Entrega e novas tentativas

Responda 2xx em até 10 segundos. Se não, a MIP tenta de novo depois de 1 minuto, 5 minutos, 30 minutos, 2 horas e 6 horas, e desiste na sexta tentativa. Vinte falhas seguidas desligam o webhook, que volta a ligar na mesma tela.

Claude e ChatGPT (MCP)

O conector MCP deixa você perguntar e mandar no CRM conversando: "como está o funil esta semana?", "cria uma tarefa pra ligar pra Ana amanhã às 10h", "move o negócio do Paulo pra proposta".

1. Gere o endereço

No CRM, abra Empresa > Integrações > Claude e ChatGPT e clique em Gerar endereço. Ele vem no formato https://api.usemip.com.br/mcp/mip_..., com a sua chave no fim, e aparece uma vez só. Quem tem o endereço acessa o CRM: não compartilhe.

2. Cole no app que você usa

  • Claude (site ou app): Configurações, Conectores, Adicionar conector personalizado. Nome MIP, cole o endereço e salve.
  • ChatGPT: Configurações, Aplicativos e conectores, Avançado, e ligue o modo desenvolvedor. Depois crie um conector com o nome MIP, cole o endereço e escolha Sem autenticação.
  • Claude Code: rode no terminal claude mcp add --transport http mip https://api.usemip.com.br/mcp/mip_...
  • Cursor e outros: adicione um servidor MCP do tipo HTTP com o endereço. Se o app aceitar cabeçalho, também dá pra usar https://api.usemip.com.br/mcp com Authorization: Bearer mip_....

O Claude e o ChatGPT podem pedir plano pago pra conector personalizado.

3. Pergunte

Numa conversa nova, ligue o conector MIP e pergunte: "como está o meu funil?". Pra cortar o acesso, revogue a chave "Claude e ChatGPT" em Chaves de API.

Ferramentas:

resumobuscar_contatosver_contatocriar_contatoatualizar_contatolistar_funislistar_negocioscriar_negociomover_negociolistar_tarefascriar_tarefaconcluir_tarefaagenda

Erros e limites

Erro vem com status HTTP e {"erro": "...", "codigo": "..."}: chave (401, chave ausente ou revogada), pedido (400), nada (404), limite (429), erro (500).

Até 120 pedidos por minuto por chave, 200 itens por lista, 10 chaves ativas, 10 avisos e 20 conexões de recebimento por empresa. Os eventos recebidos ficam 30 dias.

Veja funcionando no seu caso. A demonstração é por vídeo e sem custo.

A gente mostra o agente de IA e o CRM num caso parecido com o seu e olha onde o seu WhatsApp perde venda hoje.

Agendar demonstração