Receptia para Desenvolvedores

API pública do Receptia (v1)

Integre seu BI, planilha ou sistema externo aos dados de atendimento e vendas da sua organização — e envie leads para dentro do Receptia.

Referência interativa da API →
IntroduçãoAutenticaçãoEscoposEndpointsErrosLimitesWebhook de Leads

Introdução

A API pública do Receptia tem duas frentes:

  • API v1 de leitura — relatórios agregados e leads da sua organização, autenticada por chave. Somente leitura: nenhuma mensagem ou conversa individual é exposta.
  • Webhook de entrada de leads — recebimento de contatos enviados por sistemas externos (formulários, landing pages, outras plataformas) direto para o CRM do Receptia.

URL base da API v1: https://receptia-production.up.railway.app/api/public/v1

A lista completa de endpoints, com parâmetros e schemas de resposta, fica na referência interativa, gerada a partir do próprio código — é sempre a versão no ar.

Autenticação

Cada chave pertence a uma organização e é enviada como Bearer token. Os dados retornados são sempre os da organização dona da chave, independentemente de qualquer parâmetro extra.

curl "https://receptia-production.up.railway.app/api/public/v1/reports/overview?start=2026-05-01&end=2026-06-01" \
  -H "Authorization: Bearer rcpt_live_a1b2c3d4.SEU_SEGREDO"

Como gerar, rotacionar e revogar chaves

No aplicativo, em Configurações → Empresa → API. Apenas usuários com papel owner ou admin têm acesso à seção.

  • A chave em claro é exibida uma única vez, no momento da geração — o Receptia guarda apenas um hash. Se ela for perdida, use Rotacionar para emitir uma nova.
  • Rotacionar cria a chave nova antes de revogar a antiga, para a integração não ficar sem chave válida no intervalo. Atualize o sistema consumidor assim que copiar a nova.
  • Revogar invalida a chave imediatamente: as chamadas seguintes recebem 401.
Header legado. Chaves antigas enviadas em X-Receptia-Key continuam aceitas durante a transição, com headers de depreciação na resposta, e deixam de funcionar em 31/08/2026. Migre para Authorization: Bearer.

Escopos

Cada credencial declara para que tipo de consumidor foi emitida, e o tipo define quais escopos ela pode carregar. Uma Integração de dados (BI, ERP, planilhas) autentica por Authorization: Bearer; uma Gestão com IA (Claude, ChatGPT) autentica pela URL do conector. Um escopo gravado na credencial mas proibido para o tipo dela não vale — a chamada responde 403, assim como uma chamada sem o escopo exigido pelo endpoint.

read:reportsRelatóriosIntegração de dados

Agregados da organização: visão geral, métricas de suporte, SLA, conversões com IA, leads por dia e funil do pipeline.

read:leadsLeadsIntegração de dados

Lista e detalhe de leads, sem telefone e sem e-mail. Projeção enxuta: nenhum campo sensível (CPF, endereço, score) é exposto.

read:leads_contactContato dos leadsIntegração de dadosdados pessoais

Adiciona telefone e e-mail às respostas de leads. Por expor dados pessoais, só é concedido mediante aceite explícito dos termos de responsabilidade no momento da emissão da credencial.

read:flowsFluxos (leitura)Gestão com IA

Lista e leitura dos fluxos de automação da organização.

write:flowsFluxos (criação/edição)Gestão com IA

Criação e edição de fluxos como RASCUNHO. Publicar é sempre ação humana no painel — um fluxo já publicado recebe uma alteração proposta, que não entra em vigor sozinha.

read:catalogCatálogo da contaGestão com IA

Recursos usados na montagem de fluxos: conexões, templates, tags, funis, campos personalizados e equipe. Não inclui dados de leads.

Endpoints

Todos os endpoints da v1 são GET e ficam sob https://receptia-production.up.railway.app/api/public/v1. Parâmetros, filtros, paginação e schemas completos estão na referência interativa.

Relatórios

read:reports
  • GET/reports/overview
  • GET/reports/support-metrics
  • GET/reports/sla
  • GET/reports/ai-conversions
  • GET/reports/leads-per-day
  • GET/reports/pipeline-funnel

Exigem a janela start e end (YYYY-MM-DD), máximo de 92 dias, em UTC.

Leads

read:leads
  • GET/leads
  • GET/leads/{id}

Telefone e e-mail só aparecem quando a chave também tem read:leads_contact.

Erros

401

Não autenticado

Chave ausente, desconhecida ou revogada. Confira o header Authorization: Bearer.

403

Escopo insuficiente

A chave é válida, mas não possui o escopo exigido pelo endpoint. Gere uma chave com o escopo necessário no painel.

422

Parâmetros inválidos

Janela maior que 92 dias, end anterior a start, datas em formato inválido ou parâmetros obrigatórios ausentes.

429

Limite de requisições

Aguarde o tempo indicado no header Retry-After. Tentativas repetidas com chave inválida também bloqueiam o IP temporariamente.

502

Métrica temporariamente indisponível

Falha transitória ao calcular a métrica. Re-tente em alguns instantes.

503

API indisponível

A API v1 (ou um dos seus módulos) está temporariamente desligada. Fale com o suporte.

Corpo de erro padrão:

{ "detail": "Chave de API inválida ou revogada" }

Limites

  • Janela máxima por requisição: 92 dias entre start e end. Para períodos maiores, divida em múltiplas chamadas.
  • Rate limit por chave: as chamadas são limitadas por janela de tempo, com limites próprios para relatórios e para leads. Ao exceder, a API responde 429 com o header Retry-After em segundos.
  • Volume diário de leads: a leitura de leads tem um teto diário de linhas por chave.
  • Proteção anti-abuso por IP: tentativas repetidas com chaves inválidas bloqueiam temporariamente o IP de origem (429).
  • Somente leitura: a API v1 não escreve nada e não expõe mensagens nem conversas.

Webhook de entrada de leads

Para enviar contatos ao Receptia, use o webhook público de leads. A autenticação é feita pela chave secreta embutida na URL — obtenha a URL completa no aplicativo (Configurações → Integrações) ou via GET /api/leads/ingest/config (JWT). A chave pode ser trocada a qualquer momento com POST /api/leads/ingest/regenerate-key.

POST/api/webhooks/leads/{webhook_key}

Aceita três formatos de corpo JSON: um objeto com a lista contacts, um array de contatos direto, ou um único contato. O único campo obrigatório é o telefone (phone; os apelidos telefone, whatsapp e celular também são aceitos).

Exemplo de requisição

curl -X POST "https://receptia-production.up.railway.app/api/webhooks/leads/SUA_WEBHOOK_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {
        "name": "Maria Silva",
        "phone": "5511999990000",
        "email": "maria@exemplo.com.br",
        "source": "landing-page",
        "tags": ["campanha-junho"],
        "custom_data": { "curso_interesse": "RLM" }
      }
    ],
    "duplicate_strategy": "skip",
    "source": "webhook"
  }'

Exemplo de resposta (200)

{
  "total": 1,
  "imported": 1,
  "updated": 0,
  "skipped": 0,
  "errors": 0,
  "error_details": []
}

Campos aceitos por contato: name, phone (obrigatório), email, status, source, contact_type, cpf, cnpj, razao_social, nome_fantasia, cep, logradouro, bairro, cidade, estado, tags (array ou string separada por vírgula) e custom_data. Apelidos em português como nome, origem, empresa e endereco também são reconhecidos.

Campos personalizados: chaves desconhecidas na raiz do contato são tratadas como candidatas a campo personalizado e validadas contra os campos definidos na sua organização (as não definidas são descartadas).

duplicate_strategy: skip (padrão, ignora telefones já cadastrados) ou update (atualiza o cadastro existente).

Erros: 401 para chave inválida; 429 ao exceder o limite de requisições (com Retry-After); 400 para JSON inválido ou nenhum contato com telefone.

Dúvidas ou necessidade de novos endpoints? Fale com o suporte da sua conta Receptia.