Partner API v1.1

Documentação da API de Parceiros.

Integre financiamento de veículos ao seu site ou sistema. OAuth2, webhooks em tempo real e widget embarcado.

OpenAPI Spec
AuthOAuth2 client_credentials
WebhooksHMAC-SHA256
Rate limit120 req/min

Introdução#

A API de Parceiros Alethica permite que concessionárias, plataformas de veículos e sistemas de gestão integrem financiamento veicular diretamente em seus fluxos. Submeta solicitações, acompanhe status em tempo real via webhooks e ofereça uma experiência nativa com o widget embarcado.

01

OAuth2

Client credentials seguro

02

Webhooks

Eventos em tempo real

03

Widget

Iframe pronto para usar

Base URL

url
https://api.alethica.co/api/v1

Escopos disponíveis

EscopoDescrição
applications:writeCriar e submeter solicitações de financiamento
applications:readConsultar status e timeline de solicitações
crm:readLer o funil de negócios (CRM) — dados sensíveis, mascarados
crm:writeGerenciar negócios do CRM (criar/editar/etapa/ganho/perda) — dados sensíveis
crm:tasks:writeGerenciar tarefas/lembretes dos negócios do CRM
crm:financing:startIniciar financiamento a partir de um negócio (escopo isolado, mais privilegiado)
marketplace:listings:readConsultar anúncios de veículos da revenda no marketplace
marketplace:listings:writeCriar, atualizar, publicar e remover anúncios de veículos
signatures:writeCriar solicitações de assinatura digital em PDF
signatures:readConsultar solicitações, evidências e documentos de assinatura
webhooks:manageGerenciar endpoints e entregas de webhooks
usage:readConsultar métricas de uso da API
widget:sessionCriar sessões do widget embarcado

Autenticação#

A API utiliza OAuth2 com o fluxo client_credentials. Você recebe um client_id e client_secret ao registrar-se como parceiro. Use-os para obter um token JWT com validade de 1 hora.

Aplicações#

O recurso de aplicações permite submeter solicitações de financiamento, consultar status e acompanhar a timeline completa de eventos.

CRM (Negócios)#

Acesse o funil de vendas (CRM “Negócios”) da revenda vinculada ao seu parceiro: liste e gerencie negócios, mova etapas, registre ganho/perda, crie tarefas e inicie financiamentos — tudo de forma programática. Cada parceiro opera somente a revenda à qual está vinculado.

Dados de contato (LGPD): os campos estruturados de contato que você envia (e-mail, telefone, documento, empresa, cidade/UF) são persistidos, usados no CRM e retornados ao parceiro vinculado — são seus próprios dados. Apenas o conteúdo livre escrito pela equipe da revenda permanece oculto: as anotações (NOTE) e o motivo da perda. Não há busca por dados pessoais. Os escopos crm:* não são concedidos por padrão — precisam ser habilitados por um administrador; crm:financing:start é isolado e o mais privilegiado (origina um empréstimo).
WhatsApp com vários números: use sempre deal.id como identidade do negócio — o mesmo contato pode ter negociações independentes em linhas físicas diferentes. Leituras de negócio retornam whatsappLine como { connectionId, label, phoneNumber } quando já existe uma mensagem confirmada no WhatsApp; antes disso, o campo é null.
Outros endpoints do CRM: GET /deals/{id}, GET /deals/pipeline-summary, GET /deals/analytics, GET /assignable-members, PATCH /deals/{id}, POST /deals/{id}/activities, POST /deals/from-inquiry/{inquiryId} e as tarefas (POST /deals/{id}/tasks, PATCH /tasks/{id}, DELETE /tasks/{id}, escopo crm:tasks:write). Eventos em tempo real deal.* estão na seção Webhooks. Referência completa no OpenAPI.

Marketplace (Anúncios)#

Sincronize o estoque da revenda com o marketplace da Alethica de forma programática. Cada anúncio é identificado pelo seu próprio identificador (externalListingId) — o PUT é idempotente (cria ou atualiza), e a publicação é um passo explícito (/submit). Todos os anúncios pertencem à revenda vinculada ao parceiro.

Eventos vehicle_listing.approved e vehicle_listing.sold (seção Webhooks) notificam seu sistema quando um anúncio é aprovado para publicação ou marcado como vendido.

Assinaturas#

Crie solicitações de assinatura para PDFs próprios, acompanhe o status dos signatários e consulte evidências de auditoria pela API de parceiros.

Webhooks#

Receba notificações em tempo real quando o status de uma solicitação muda. Registre endpoints, escolha os eventos de interesse e receba payloads assinados via HMAC-SHA256.

Eventos disponíveis

EventoDescrição
loan.approvedEmpréstimo aprovado pela análise de crédito
loan.rejectedEmpréstimo rejeitado pela análise de crédito
loan.fundedEmpréstimo totalmente financiado pelos investidores
loan.offer_acceptedOferta aceita pelo tomador
loan.offer_rejectedOferta rejeitada pelo tomador
loan.completedEmpréstimo quitado integralmente
signature.completedSolicitação de assinatura concluída — PDF selado fica disponível em /document/signed em segundos
signature.declinedSolicitação de assinatura recusada por um signatário
vehicle_listing.approvedAnúncio de veículo aprovado para publicação
vehicle_listing.soldAnúncio de veículo marcado como vendido
deal.createdNovo negócio (CRM) criado — requer o escopo crm:read para assinar
deal.stage_changedNegócio mudou de etapa no funil — requer crm:read
deal.wonNegócio ganho — requer crm:read
deal.lostNegócio perdido — requer crm:read
deal.updatedNegócio atualizado — requer crm:read
deal.deletedNegócio excluído (soft delete) — pare de re-buscar e remova localmente; requer crm:read

Verificação de assinatura (HMAC-SHA256)

Cada entrega inclui headers que permitem verificar a autenticidade. O header X-Alethica-Signature contém o HMAC-SHA256 de timestamp.payload usando seu signingSecret.

HeaderDescrição
X-Alethica-EventTipo do evento (ex: loan.funded)
X-Alethica-Event-IdID único do evento. A entrega é at-least-once: uma retentativa pode chegar duas vezes, então trate o ID como chave de idempotência.
X-Alethica-TimestampTimestamp ISO 8601 da emissão
X-Alethica-SignatureHMAC-SHA256 de timestamp.payload
javascript
import crypto from "crypto";

function verifyWebhookSignature(payload, headers, signingSecret) {
  const timestamp = headers["x-alethica-timestamp"];
  const signature = headers["x-alethica-signature"];

  const expected = crypto
    .createHmac("sha256", signingSecret)
    .update(`${timestamp}.${JSON.stringify(payload)}`)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
Sempre use timingSafeEqual para comparação de assinaturas. Comparações simples com === são vulneráveis a timing attacks.

Widget Embarcado#

O widget permite que seus clientes preencham a solicitação de financiamento diretamente no seu site, sem redirecionamentos. A integração é feita via iframe seguro com um token de sessão temporário.

Fluxo de integração

01

Seu servidor solicita um token de sessão via API (server-to-server)

02

Inclua o script embed.js na página com o token de sessão

03

O widget é renderizado dentro de um iframe seguro no container indicado

04

O cliente preenche e submete — você recebe o resultado via webhook

Embed via script

A forma mais simples de integrar o widget é via nosso script de bootstrap. Ele cria automaticamente o iframe e gerencia a comunicação entre janelas.

html
<!-- Adicione o container onde o widget será renderizado -->
<div id="alethica-widget"></div>

<!-- Inclua o script com os atributos de configuração -->
<script
  src="https://api.alethica.co/api/v1/widget/embed.js"
  data-session-token="SESSION_TOKEN_AQUI"
  data-container-id="alethica-widget"
  data-height="880"
></script>
O campo origin na criação da sessão deve corresponder exatamente ao domínio do site que renderiza o widget. Origens não autorizadas receberão erro ORIGIN_NOT_ALLOWED.

Analytics de Uso#

Monitore o uso da API com métricas detalhadas de requisições, latência e distribuição por status code e endpoint.

Códigos de Erro#

Todos os erros retornam um JSON com o campo error contendo um código de erro padronizado e uma mensagem descritiva.

json
{
  "success": false,
  "error": {
    "code": "TOKEN_EXPIRED",
    "message": "Access token has expired. Please request a new token."
  }
}
CódigoHTTPDescrição
INVALID_CLIENT401Credenciais OAuth inválidas (client_id ou client_secret incorretos)
INVALID_SCOPE400Escopo solicitado não permitido para este client
NO_TOKEN401Token Bearer ausente no header Authorization
TOKEN_EXPIRED401Token JWT expirado — solicite um novo via /oauth/token
INVALID_TOKEN401Token JWT inválido (assinatura ou formato incorreto)
PARTNER_NOT_FOUND404Parceiro associado ao token não encontrado
PARTNER_INACTIVE403Parceiro com status inativo — contate o suporte
PARTNER_NOT_CONFIGURED400Parceiro sem dealer/revenda vinculada configurada
INSUFFICIENT_SCOPE403Token não possui o escopo necessário para a rota
CRM_SCOPE_REQUIRED403Assinar eventos deal.* exige o escopo crm:read
PARTNER_DEALER_MISCONFIGURED409Vínculo do parceiro com a revenda inválido — contate o suporte
DEAL_NOT_FOUND404Negócio (CRM) não encontrado para a revenda vinculada
APPLICATION_NOT_FOUND404Solicitação com o externalApplicationId não encontrada
SIGNATURE_NOT_FOUND404Solicitação de assinatura não encontrada para o parceiro
NO_FILE400Arquivo PDF obrigatório não enviado no formulário
INVALID_FILE_TYPE400Tipo de arquivo inválido (apenas PDF é aceito)
INVALID_SIGNERS400Estrutura de signatários inválida no campo signers
ORIGIN_NOT_ALLOWED403Origem do widget não está na lista de origens permitidas
INVALID_WIDGET_TOKEN401Token de sessão do widget inválido ou expirado

Rate Limiting#

Cada parceiro possui um limite de requisições por minuto configurável. Ao exceder o limite, a API retorna 429 Too Many Requests. Os headers de resposta incluem informações sobre o estado do rate limit.

HeaderDescrição
X-RateLimit-LimitLimite total por minuto
X-RateLimit-RemainingRequisições restantes na janela atual
Retry-AfterSegundos até o reset (somente quando 429)
O limite padrão é 120 requisições/minuto. Se precisar de um limite maior, solicite ao administrador da plataforma no painel de parceiros.
http
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
Retry-After: 45
Content-Type: application/json

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Too many requests. Please retry after 45 seconds."
  }
}

Condições de Integração por API

Informações gerais

Acordo de Tratamento de Dados para Serviços B2B

Informações gerais

Próximo passo

Pronto para integrar?

Entre em contato para receber suas credenciais de parceiro e começar a oferecer financiamento de veículos no seu sistema.