Certu

API e MCP da Certu

A API da Certu deixa um programa ou um agente de IA operar uma conta da Certu: a IA que atende o WhatsApp do negócio, as conversas, o Cérebro, o CRM, a agenda, o controle do negócio, os anúncios e o perfil do Google. As mesmas ferramentas respondem pelo REST e pelo MCP.

Base do REST
https://certu.com.br/api/v1
MCP
POST https://certu.com.br/api/v1/mcp
OpenAPI 3.1
https://certu.com.br/openapi.json
Autenticação
Authorization: Bearer certu_sk_...
Teste (sandbox)
Chave de teste (certu_sk_test_...) lê os dados reais e simula toda escrita
Limites
60/min por chave · 5 chaves ativas · 2.000 chamadas/dia por conta
Começar
7 dias grátis, sem cartão. Criar conta · Planos

Quando usar a API da Certu

Use quando uma pessoa ou um agente precisa tocar uma pequena ou média empresa que atende clientes pelo WhatsApp:

Quando não usar

Começar em três passos

  1. Crie a conta. Começa com 7 dias grátis, sem cartão: https://certu.com.br/criar-meu-agente.
  2. Crie a chave no app, em Ajustes, na seção Conectar ao Claude. Ela começa com certu_sk_ e aparece uma vez só. Passo a passo: https://certu.com.br/claude.
  3. Chame a API com Authorization: Bearer <chave>. Comece por GET /conta, que diz o que o plano inclui.

Autenticação

Todo pedido leva a chave no cabeçalho Authorization: Bearer. Chave na URL é recusada (chave_na_url).

A chave opera a conta de quem a criou. É autoatendimento: o dono cria e revoga a chave no app, sem pedir aprovação a ninguém.

O conector do claude.ai entra com login OAuth em vez de chave. Descoberta: /.well-known/oauth-protected-resource.

Chave de teste (sandbox) e escopos

A chave de teste (certu_sk_test_...) lê a conta de verdade e simula toda escrita: os parâmetros são validados igual à produção e a resposta é {"sandbox": true, "simulado": true, ...}, sem gravar, sem gastar crédito e sem mandar nada. As respostas levam o cabeçalho Certu-Modo: teste.

Chave de teste e chave com escopo são criadas no POST /api/v1/keys, autenticado pelo login do app (não por outra chave). Escopos: area:ler (leitura) ou area:escrever (escrita, que inclui leitura), além de area:*, *:ler e *. Áreas: conta, conversas, cerebro, agente, anuncios, site, agenda, erp, ligacoes, crm, google, parceiro, webhooks, cobrancas, pets, imoveis, fiscal, clinica.

POST https://certu.com.br/api/v1/keys
{"nome": "Integração de teste", "teste": true, "escopos": ["crm:ler", "agenda:escrever"]}

Limites e erros

StatuserrorO que é
400parametros_invalidos, json_invalidoParâmetro ou corpo inválido. detalhes lista cada problema.
401chave_invalida, chave_na_urlChave ausente, inválida, vencida ou revogada, ou mandada na URL.
402planoA conta não pode usar a API.
403escopo_insuficiente, sandbox, conta_sem_acessoFalta escopo, escrita que a chave de teste não roda, ou sem acesso àquela conta.
404rota_inexistenteEndereço ou registro inexistente.
413corpo_grandeCorpo acima de 1 MB.
429limite, limite_diarioLimite por minuto da chave ou cota diária da conta.
500falha_internaFalha do nosso lado. Tente de novo.

Versionamento e descontinuação

Servidor MCP

Endereço: POST https://certu.com.br/api/v1/mcp. Streamable HTTP, sem estado, só respostas JSON (sem SSE); GET responde 405. Versões do protocolo: 2025-11-25, 2025-06-18, 2025-03-26.

Métodos: initialize, ping, tools/list, tools/call. As 65 ferramentas são as mesmas operações do REST.

No claude.ai ou no app do Claude, adicione um conector personalizado com o endereço https://certu.com.br/api/v1/mcp e entre na conta; não precisa de chave. Guia completo: https://certu.com.br/claude.

Descoberta sem chave: manifesto em https://certu.com.br/.well-known/mcp.json e cartão do servidor em https://certu.com.br/.well-known/mcp/server-card.json.

Claude Code

claude mcp add --transport http certu https://certu.com.br/api/v1/mcp --header "Authorization: Bearer SUA_CHAVE"

Cursor e outros clientes MCP

{
  "mcpServers": {
    "certu": {
      "url": "https://certu.com.br/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer SUA_CHAVE"
      }
    }
  }
}

Exemplos

Resumo da conta: plano, créditos e o que o plano inclui

curl https://certu.com.br/api/v1/conta \
  -H "Authorization: Bearer $CERTU_KEY"

Agendamentos confirmados de uma semana

curl "https://certu.com.br/api/v1/agenda?de=2026-10-12&ate=2026-10-18&status=confirmado" \
  -H "Authorization: Bearer $CERTU_KEY"

Ensinar um fato à IA (com chave de teste, é simulado e nada é gravado)

curl -X POST https://certu.com.br/api/v1/cerebro \
  -H "Authorization: Bearer $CERTU_KEY" \
  -H "Content-Type: application/json" \
  -d '{"titulo": "Horário de atendimento", "conteudo": "Segunda a sexta, das 9h às 18h."}'

Listar as ferramentas do MCP

curl -X POST https://certu.com.br/api/v1/mcp \
  -H "Authorization: Bearer $CERTU_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'

Agir em outra conta

Parceiro, dono de mais de um negócio ou admin de outra conta passa conta (na query, ou no corpo de um POST) pra agir naquela conta. GET /parceiro/clientes lista as contas que a chave alcança. Sem conta, a chamada age na conta de quem criou a chave.

Webhooks

Os webhooks de saída ficam em /api/v1/webhooks (escopo webhooks:ler / webhooks:escrever) e fazem parte da API empresarial, ligada por conta. Eventos: mensagem.recebida, conversa.transferida_humano, contato.criado, negocio.criado, ligacao.concluida.

Endereços do REST

Todo caminho é relativo a https://certu.com.br/api/v1. Parâmetros, corpos e esquemas estão na especificação OpenAPI.

MétodoCaminhoO que fazFerramenta
conta
GET/contaResumo da conta (lê)conta_resumo
conversas
GET/conversasListar conversas (lê)conversas_listar
GET/conversas/{contato}Ler uma conversa (lê)conversa_ler
cerebro
GET/cerebroListar fichas do Cérebro (lê)cerebro_listar
POST/cerebroSalvar ficha no Cérebro (grava)cerebro_salvar
POST/cerebro/apagarApagar fichas do Cérebro (grava)cerebro_apagar
GET/produtosListar produtos e serviços (lê)produtos_listar
POST/produtosSalvar produto ou serviço (grava)produto_salvar
agente
GET/agenteVer a configuração da IA (lê)agente_ler
PATCH/agenteAjustar a IA (grava)agente_ajustar
POST/agente/criarMontar o atendente de WhatsApp (grava)agente_criar
POST/agente/testarTestar o atendente (grava)agente_testar
anuncios
GET/anunciosListar kits de campanha (lê)anuncios_listar
GET/anuncios/opcoesOpções de anúncio (lê)anuncio_opcoes
POST/anuncios/gerarGerar kit de campanha (grava)anuncio_gerar
GET/anuncios/campanhasResultado das campanhas (lê)anuncios_campanhas
GET/anuncios/campanhas/{campanha_id}Relatório de uma campanha (lê)anuncio_relatorio
GET/anuncios/{kit_id}Listar kits de campanha (um kit pelo id) (lê)anuncios_listar
POST/anuncios/{campanha_id}/pausarPausar campanha (grava)anuncio_pausar
POST/anuncios/{campanha_id}/orcamentoMudar o orçamento de uma campanha (grava)anuncio_orcamento
POST/anuncios/{kit_id}/publicarPublicar campanha pausada (grava)anuncio_publicar_pausado
site
GET/siteVer o site (lê)site_ler
POST/site/criarMontar o site com IA (grava)site_criar
POST/site/publicarPublicar o site (grava)site_publicar
GET/site/artigosArtigos do blog do site (lê)site_artigos
GET/site/artigos/{slug}Artigos do blog do site (um artigo pelo slug) (lê)site_artigos
google
GET/googlePerfil do Google (lê)google_perfil
GET/google/avaliacoesAvaliações do Google (lê)google_avaliacoes
POST/google/rascunhoRascunho para o Google (grava)google_rascunho
POST/google/publicarPublicar no Google (grava)google_publicar
GET/google/concorrentesConcorrentes no Google Maps (lê)google_concorrentes
parceiro
GET/parceiro/clientesClientes do parceiro (lê)parceiro_clientes
crm
POST/crmMudar o CRM (grava)crm_alterar
GET/crm/funilVer o funil de vendas (lê)crm_funil
GET/crm/contatosProcurar contatos (lê)crm_contatos
GET/crm/tarefasVer tarefas (lê)crm_tarefas
GET/retornosListar retornos (lê)retornos_listar
GET/retornos/roteirosRoteiros de retorno (lê)retorno_roteiros
GET/retornos/roteiros/{roteiro_id}Roteiros de retorno (um roteiro pelo id) (lê)retorno_roteiros
ligacoes
GET/ligacoesListar ligações (lê)ligacoes_listar
GET/ligacoes/{id}Ler uma ligação (lê)ligacao_ler
erp
GET/estoqueVer o estoque (lê)erp_estoque
POST/estoque/movimentosLançar entrada ou saída de estoque (grava)erp_estoque_movimentar
GET/caixaVer o caixa do mês (lê)erp_caixa
POST/caixaLançar no caixa (grava)erp_caixa_lancar
GET/caixa/resultadoResultado do negócio (DRE) (lê)erp_resultado
GET/pedidosListar pedidos e OS (lê)pedidos_listar
POST/pedidosCriar pedido ou OS (grava)pedido_criar
GET/pedidos/{id}Ler um pedido ou OS (lê)pedido_ler
POST/pedidos/{id}/etapaMudar a etapa de um pedido (grava)pedido_mudar_etapa
GET/comissoesComissões do mês (lê)comissoes_resumo
agenda
GET/agendaVer a agenda (lê)agenda_listar
POST/agendaMarcar um horário (grava)agenda_marcar
POST/agenda/bloqueiosBloquear ou liberar horário (grava)agenda_bloquear
DELETE/agenda/bloqueios/{bloqueio_id}Bloquear ou liberar horário (remove um bloqueio) (grava)agenda_bloquear
POST/agenda/{id}/remarcarRemarcar um horário (grava)agenda_remarcar
POST/agenda/{id}/confirmarConfirmar um horário pendente (grava)agenda_confirmar
POST/agenda/{id}/cancelarCancelar um horário (grava)agenda_cancelar
cobrancas
GET/cobrancasListar cobranças (lê)cobrancas_listar
POST/cobrancasCriar cobrança (grava)cobranca_criar
pets
GET/petsListar pets (lê)pets_listar
GET/pets/vacinasPróximas vacinas dos pets (lê)pet_vacinas_proximas
GET/pets/{contato_id}/{pet}Ler o prontuário do pet (lê)pet_prontuario_ler
imoveis
GET/imoveisListar imóveis (lê)imoveis_listar
GET/imoveis/{id}Ler um imóvel (lê)imovel_ler
GET/imobiliaria/leadsLeads e roleta de corretores (lê)imob_leads_roleta
fiscal
GET/notasListar notas fiscais (lê)notas_listar
GET/notas/{id}Situação de uma nota fiscal (lê)nota_status
clinica
GET/clinica/npsPesquisa depois da consulta (lê)clinica_nps_resumo