Primeiros passos
Ambientes, autenticação, headers obrigatórios, convenções e visão geral do fluxo de integração da API de Rentals. Contratos, erros e webhooks estão nas páginas ligadas abaixo.
Contrato v1application/vnd.creditas.v1+json
Onde está cada coisaEsta página cobre ambientes, autenticação, headers, convenções e o fluxo geral. O detalhe de cada rota está em outras páginas:
- Request e response de cada rota: Endpoints
- Assinatura do contrato: Assinatura do contrato
- Eventos e callbacks: Webhooks
- Credenciais e geração do token: Autenticação e Ambientes
- Todos os códigos de erro: Catálogo de códigos de erro
- Retry, idempotência e suporte: Boas práticas e suporte
1. Visão geral do fluxo
sequenceDiagram
participant P as Parceiro
participant C as API Creditas
P->>C: POST /pre-profile-analysis
C-->>P: 200 preProfileAnalysisId
alt webhook
C-->>P: evento profile_analysis.finished
else consulta
loop até receber 200
P->>C: GET /pre-profile-analysis?cpf= ou ?creId=
C-->>P: 202 (processando) ou 200 (resultado)
end
end
P->>C: POST /leads (profileAnalysisId)
C-->>P: idApplication + decision
P->>C: GET /leads/{idApplication}/plans
P->>C: POST .../plans/{planId}/selection
P->>C: POST .../anti-fraud
C-->>P: 202 (assíncrono)
alt webhook
C-->>P: eventos biometry.finished e court_check.finished
else consulta
loop até concluir
P->>C: GET .../anti-fraud/biometry e .../anti-fraud/court
end
end
P->>C: POST /contract-responsible (uma vez por CNPJ)
P->>C: POST /leads/{idApplication}/contract
P->>C: POST .../signature-form
C-->>P: webhook contract.signature.finished
opt status por signatário
P->>C: GET .../signature-form
end
| Passo | Método e rota | O que faz | Pré-requisito | Página |
|---|---|---|---|---|
| 1 | POST /pre-profile-analysis | Inicia a pré-análise de perfil e devolve preProfileAnalysisId | Nenhum | Iniciar pré-análise de perfil |
| 1 | GET /pre-profile-analysis?cpf= ou ?creId= | Consulta o resultado: 200 (pronto) ou 202 (processando) | Passo 1 | Consultar resultado da pré-análise |
| 2 | POST /leads | Cria o lead e devolve idApplication e decision | Pré-análise concluída | Criar lead com decisão imediata |
| 3 | GET /leads/{idApplication}/plans | Lista os planos disponíveis | Passo 2 | Listar planos disponíveis |
| 3 | POST /leads/{idApplication}/plans/{planId}/selection | Seleciona o plano | Passo 2 | Selecionar plano |
| 4 | POST /leads/{idApplication}/anti-fraud | Inicia a análise antifraude (202, assíncrono) | Plano selecionado (passo 3) | Iniciar análise antifraude |
| 4 | GET /leads/{idApplication}/anti-fraud/biometry | Status da biometria | Passo 4 iniciado | Status da biometria |
| 4 | GET /leads/{idApplication}/anti-fraud/court | Status da análise de compliance | Passo 4 iniciado | Status da análise de compliance |
| 5a | POST /contract-responsible | Cadastra ou reaproveita o responsável por CNPJ e devolve o id | Nenhum (independe de lead) | Cadastrar ou reaproveitar responsável |
| 5a | GET /contract-responsible?cnpj={cnpj} | Lista os responsáveis já cadastrados para o CNPJ | Nenhum | Listar responsáveis cadastrados |
| 5a | DELETE /contract-responsible/{id} | Inativa o responsável (opcional, fora da originação) | Responsável cadastrado | Inativar responsável |
| 5b | POST /leads/{idApplication}/contract | Vincula o responsável (id do 5a) e grava os termos. Não dispara a assinatura | Lead criado e responsável cadastrado | Vincular responsável e fechar o contrato |
| 6 | POST /leads/{idApplication}/signature-form | Dispara a assinatura | Contrato fechado (5b) | Assinatura do contrato |
| 6 | GET /leads/{idApplication}/signature-form | Status por signatário | Passo 6 disparado | Assinatura do contrato |
| 7 | Evento contract.signature.finished | Notifica o fim da assinatura por webhook | Credencial e webhook registrados | Catálogo de eventos |
Acompanhamento: webhook ou consulta
| Etapa | Evento (webhook) | Consulta |
|---|---|---|
| Pré-análise | profile_analysis.finished | GET /pre-profile-analysis |
| Biometria | biometry.finished | GET /leads/{idApplication}/anti-fraud/biometry |
| Compliance | court_check.finished | GET /leads/{idApplication}/anti-fraud/court |
| Assinatura | contract.signature.finished | GET /leads/{idApplication}/signature-form (status por signatário) |
Para receber eventos, registre uma credencial e um webhook. Os eventos disponíveis estão no Catálogo de eventos.
Regras de ordem
idApplication (passo 2)
- Pré-requisito: lead criado.
- Efeito: identifica o lead e é usado em todos os endpoints seguintes.
- Erro comum: guardar só o
preProfileAnalysisIde perder oidApplication. Persista os dois.
Antifraude (passo 4)
- Pré-requisito: plano já selecionado no passo 3.
- Efeito:
202e processamento assíncrono. Acompanhe porbiometryecourt. - Erro comum: iniciar sem plano selecionado. Retorna
422 PLAN_NOT_SELECTED.
Responsável (passo 5a)
- Pré-requisito: nenhum lead precisa existir. O cadastro é por CNPJ da imobiliária e pode ser feito antes, durante ou depois de qualquer lead.
- Efeito: faça uma vez por responsável e reuse o
idem todos os leads dessa imobiliária. - A inativação (
DELETE, Inativar responsável) é opcional e fora do fluxo de originação. Serve para tirar da lista um responsável que não deve mais assinar contratos daquela imobiliária.
Fechamento do contrato (passo 5b)
- Pré-requisito: lead criado e
iddo responsável obtido no 5a. - Efeito: grava responsável e termos. Não dispara a assinatura.
- Fechar o contrato (5b) e enviar para assinatura (6) são duas chamadas distintas, de propósito. Detalhes em Assinatura do contrato.
2. Ambientes
| Ambiente | Base URL |
|---|---|
| Staging | https://stg-api.creditas.io/rentals-partner-api |
| Produção | https://api.creditas.io/rentals-partner-api |
3. Autenticação
Todas as rotas de negócio exigem um parceiro autenticado. A API é stateless: não há sessão, não há cookie, e o token deve ser enviado em toda requisição.
Authorization: Bearer <access_token>
As credenciais (usuário/senha de serviço) são emitidas pela Creditas para cada parceiro no onboarding. O token tem validade curta: faça cache e renove antes do vencimento, sem solicitar um token novo por requisição.
Como solicitar credenciais, em quais URLs gerar o access_token e o formato da requisição e da resposta estão em Autenticação e Ambientes.
Rotas públicas (não exigem token): /health, /metrics.
401 e token expirado
Authorizationausente, malformado ou token expirado retorna401com corpo vazio. Gere um novo token (veja Autenticação e Ambientes) e repita a requisição. Veja os demais erros de protocolo no Catálogo de códigos de erro.
Escopo por parceiroO parceiro é identificado a partir do próprio token. Nenhum endpoint recebe
partnerIdno path, query ou body: os recursos retornados ou afetados são sempre restritos ao parceiro autenticado. Acessar um recurso de outro parceiro retorna404 Not Found, não403.Recebi 404, mas o recurso existe. O motivo mais provável é usar as credenciais de outro parceiro. Confira o usuário de serviço usado para gerar o token antes de abrir chamado.
4. Headers obrigatórios
| Header | Obrigatório | Valor | Observação |
|---|---|---|---|
Authorization | Sim | Bearer <access_token> | Todas as rotas de negócio |
Accept | Sim | application/vnd.creditas.v1+json | Define a versão da API |
Content-Type | Sim (POST/PATCH) | application/json | Apenas em requisições com body |
Atenção ao AcceptO versionamento é feito exclusivamente pelo header
Accept.Acceptausente,*/*ouapplication/jsoné rejeitado com406 Not Acceptableantes de chegar ao endpoint. Não existe versionamento por path (/v1/...). Se sua primeira chamada falhar com 406, comece por aqui.
O Accept usa um media type próprio (vnd.creditas.v1+json) porque ele carrega a versão do contrato. O Content-Type descreve só o formato do body que você envia, por isso é application/json.
Sua primeira chamada
Antes de chamar, gere o access_token conforme Autenticação e Ambientes e exporte em TOKEN. O body abaixo é o do endpoint Iniciar pré-análise de perfil. Os valores são de exemplo. persons é a lista de pretendentes (não pode ser vazia), isLead: true marca o pretendente principal e realEstate identifica a imobiliária por nome e CNPJ. As regras de cada campo estão na página do endpoint.
curl -X POST "https://stg-api.creditas.io/rentals-partner-api/pre-profile-analysis" \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/vnd.creditas.v1+json" \
-H "Content-Type: application/json" \
-d '{
"persons": [
{
"cpf": "52998224725",
"fullName": "John Doe",
"phone": "11999999999",
"email": "[email protected]",
"monthlyIncome": 5000.0,
"isLead": true
}
],
"realEstate": {
"name": "Real Estate Ltda.",
"cnpj": "11444777000161"
}
}'const res = await fetch(
"https://stg-api.creditas.io/rentals-partner-api/pre-profile-analysis",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TOKEN}`,
Accept: "application/vnd.creditas.v1+json",
"Content-Type": "application/json",
},
body: JSON.stringify({
persons: [
{
cpf: "52998224725",
fullName: "John Doe",
phone: "11999999999",
email: "[email protected]",
monthlyIncome: 5000.0,
isLead: true,
},
],
realEstate: { name: "Real Estate Ltda.", cnpj: "11444777000161" },
}),
}
);
console.log(res.status, await res.json());import os
import requests
res = requests.post(
"https://stg-api.creditas.io/rentals-partner-api/pre-profile-analysis",
headers={
"Authorization": f"Bearer {os.environ['TOKEN']}",
"Accept": "application/vnd.creditas.v1+json",
"Content-Type": "application/json",
},
json={
"persons": [
{
"cpf": "52998224725",
"fullName": "John Doe",
"phone": "11999999999",
"email": "[email protected]",
"monthlyIncome": 5000.0,
"isLead": True,
}
],
"realEstate": {"name": "Real Estate Ltda.", "cnpj": "11444777000161"},
},
)
print(res.status_code, res.json())Resposta de sucesso (200 OK):
{ "preProfileAnalysisId": "rentals_pa_abc123xyz" }O resultado da pré-análise não é síncrono. Consulte-o em GET /pre-profile-analysis por cpf ou creId (Consultar resultado da pré-análise): 200 traz o resultado e 202 indica que ainda está processando. Se enviar os dois parâmetros, creId tem precedência. Para evitar polling, assine o evento profile_analysis.finished (Webhooks). O preProfileAnalysisId da resposta acima é o profileAnalysisId enviado depois em POST /leads.
5. Convenções gerais
- JSON em
camelCaseem requests e responses. - Datas em ISO 8601:
YYYY-MM-DDpara datas,YYYY-MM-DDTHH:mm:ssZ(UTC) para timestamps. - Documentos (CPF/CNPJ) e telefones sempre somente dígitos, sem pontuação ou máscara.
- Campos aditivos: novos campos podem ser adicionados às responses sem mudança de versão. O cliente não deve falhar ao receber um campo desconhecido.
- Enums: valores são um conjunto fechado e documentado. Um valor não reconhecido deve ser tratado defensivamente (log + fallback), nunca causar exceção fatal no parceiro.
Formato padrão de erro
Toda resposta de erro de negócio mapeada segue a mesma estrutura:
{
"code": "PLAN_NOT_AVAILABLE",
"message": "Plan 3f6a1e2b-1234-4d56-8abc-9876543210ff is not available for this lead",
"details": []
}| Campo | Tipo | Descrição |
|---|---|---|
code | string | Código mnemônico estável. Use este campo para lógica condicional, nunca o message. |
message | string | Texto legível para log e suporte, sujeito a mudança sem aviso. Não é localizado: o exemplo acima está em inglês, ao contrário do restante desta documentação. |
details | array | Lista de detalhes por campo, quando aplicável (erros de validação). Pode vir vazia. |
Nem todo erro segue esse formato. Os erros de protocolo 401 (corpo vazio), 406 e 415 são devolvidos antes de chegar ao endpoint e não trazem code de negócio. A lista está no Catálogo de códigos de erro.
Glossário
| Termo | Significado |
|---|---|
creId | Protocolo (CRE-ID) da pré-análise. Aceito como parâmetro em GET /pre-profile-analysis, onde tem precedência sobre cpf. |
decision | Resultado de POST /leads: APPROVED (segue para seleção de plano), REJECTED (fluxo encerrado) ou GREYZONE (ainda não disponível). |
idApplication | Identificador do lead, retornado em POST /leads e usado nos endpoints seguintes. |
| Imobiliária | A empresa, identificada por CNPJ, em nome da qual o parceiro opera. |
| Lead | Registro criado em POST /leads a partir de uma pré-análise concluída. É identificado por idApplication. |
planId | Identificador de um plano listado em GET /leads/{idApplication}/plans, usado na seleção do plano. |
| Pré-análise | Análise de perfil dos pretendentes à locação para uma imobiliária, iniciada em POST /pre-profile-analysis. |
preProfileAnalysisId | Identificador da pré-análise, retornado em POST /pre-profile-analysis e enviado como profileAnalysisId em POST /leads. |
| Responsável | Pessoa cadastrada por CNPJ via /contract-responsible que assina os contratos da imobiliária. Esta documentação usa "responsável" em todo lugar. |
Suporte
Dúvidas, erros inesperados e como abrir chamado: Boas práticas e suporte.
Updated 9 days ago
