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
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."
  }
}

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.