Pular para o conteúdo

Autenticação

A Public API usa API Keys pra autenticação. Não há OAuth, não há tokens temporários — uma chave fixa, permanente até ser revogada.

Formato da chave

Toda chave tem o formato:

crm_live_<43 caracteres base64url>

Exemplo:

crm_live_dG9rZW5fc2VjcmV0X2V4YW1wbGVfZG9fdGV4dG9fY29tcGxldG9z

O prefixo crm_live_ ajuda você (e nós) a identificar visualmente que é uma chave da API Indutiva. Não há ambiente sandbox — todas as keys batem no mesmo CRM de produção. Isso é por design: você usa um tenant de teste real se quiser ambiente isolado.

Como passar a chave

Use o header X-API-Key:

Terminal window
curl https://app.indutivacrm.com.br/api/v1/contacts \
-H "X-API-Key: crm_live_seu_segredo_aqui"

Resposta de erro

Se a chave estiver ausente, inválida, expirada ou revogada:

{
"error": "invalid_api_key",
"message": "API Key não encontrada, revogada ou expirada"
}

Status code: 401 Unauthorized.

Outros erros relacionados:

StatuserrorQuando
401invalid_api_keyChave não existe, foi revogada, ou expirou
403insufficient_scopeChave válida, mas faltam scopes pra esse endpoint
403endpoint_not_exposedEndpoint só é acessível via UI (JWT), não via API Key
429rate_limit_exceededMais chamadas que o limite por minuto

Ver lista completa de erros →

Isolamento por tenant

Cada chave pertence a um tenant específico — todas as chamadas autenticadas com ela só veem dados desse tenant. Não há “API Key global” que enxergue múltiplos tenants.

Segurança

Detalhes técnicos

  • O segredo cru nunca é armazenado — guardamos apenas o hash SHA-256
  • Verificação tem cache de 60s em memória pra evitar hit no DB a cada request
  • lastUsedAt é atualizado de forma throttled (1x por minuto por key) pra não criar contenção no DB
  • Toda chamada é auditada na tabela api_key_audit_logs (best-effort, async)