Documentação da API
DSV Digi — integração de simulação e digitação de propostas
Autenticação
Todas as requisições exigem o envio do header abaixo:
Authorization: Bearer TOKEN_DA_API
TOKEN_DA_API pelo token de autorização fornecido pela DSV Digi. Ele libera o acesso à API e é o mesmo para toda a integração — vale para todos os endpoints desta documentação, FGTS e CLT.api_token. São dois tokens diferentes e ambos são necessários:•
Authorization: Bearer TOKEN_DA_API (header) — autoriza o acesso à API.•
api_token: "TOKEN_DO_USUARIO" (corpo da requisição) — identifica qual usuário está operando e define as permissões dele.GET Método: Simulação FGTS
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
{
"cpf": "00000000000", // obrigatório
"bank": "bmp", // obrigatório
"desired_value": "",
"api_token": "TOKEN_DO_USUARIO" // obrigatório
}
desired_value, a simulação será realizada com todo o valor disponível para o cliente.Retorno de Sucesso
{
"cpf": "12345678910",
"message": "Saldo consultado com sucesso!",
"returned_an_error": false,
"available_balance": "141.51",
"status_code": "200",
"simulation_id": "a81ec9bc-fcec-4b7b-92db-025e851f6b7e",
"net_value": "87.73",
"gross_value": "153.66",
"monthly_cet": "4.55367",
"annual_cet": "70.6362",
"monthly_fee": "1.79",
"annual_interest": "23.72611",
"tc_value": "53.78",
"iof_value": "4.76",
"interest_value": "105.36",
"blocked_balance": "259.02",
"table_id": "9baa1f9f-08ff-4578-a96d-e6457bc2ca76",
"table_name": " OF THE KING THE POWER THE BEST 50,00 a 250,00",
"tc_percentage": "tc_percentage = 35",
"allow_simulate_by_installments": "false",
"min_installment_amount": "1",
"max_installment_amount": "12",
"installments": [
{
"date": "2026-04-01",
"available_value": 78.06,
"released_value": 64.11703
}
// ...
]
}
POST Método: Cadastrar Proposta FGTS
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
Nome, CPF, Data de nascimento, Celular/Whatsapp e dados bancários. Enviar dados reais do cliente. O campo simulation.id deve ser o mesmo retornado no Método: Simulação.
{
"api_token": "TOKEN_DO_USUARIO", // obrigatório
"customer": {
"pf": {
"name": "João Paulo", // obrigatório
"cpf": "12345678910", // obrigatório
"birth_date": "1992-04-27", // obrigatório
"gender": "M", // obrigatório
"civil_status_id": "2", // obrigatório
"scholarity_id": "8", // obrigatório
"rg_number": "123456",
"rg_organ": "SSP",
"rg_uf": "SP"
},
"contacts": {
"email": "emaildocliente@email.com", // obrigatório
"celphone": "11999999999" // obrigatório
},
"address": {
"zipcode": "04107030", // obrigatório
"street": "Rua Guimarães Passos", // obrigatório
"district": "Vila Mariana", // obrigatório
"uf": "SP", // obrigatório
"number": "323", // obrigatório
"complement": "Casa", // obrigatório
"city": "São Paulo" // obrigatório
},
"account": {
"bank_id": "341", // obrigatório
"type": "CCT", // obrigatório
"agency": "0001", // obrigatório
"agency_digit": "0", // obrigatório
"account_number": "0045958", // obrigatório
"account_digit": "0" // obrigatório
}
},
"simulation": {
"id": "a81ec9bc-fcec-4b7b-92db-025e851f6b7e" // obrigatório
}
}
Retorno de Sucesso
[
{
"data": {
"proposal_code": "366dc20e-af9f-4ff3-a953-8939cabea3cf"
},
"message": "Proposta cadastrada com sucesso!"
}
]
POST Método: Cadastrar Proposta (PIX) FGTS
Idêntico ao Método: Cadastrar Proposta, exceto pelo objeto account, que agora recebe uma chave PIX em vez dos dados bancários (banco, agência e conta).
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
Nome, CPF, Data de nascimento, Celular/Whatsapp e chave PIX. Enviar dados reais do cliente. O campo simulation.id deve ser o mesmo retornado no Método: Simulação.
{
"api_token": "TOKEN_DO_USUARIO", // obrigatório
"customer": {
"pf": {
"name": "João Paulo", // obrigatório
"cpf": "12345678910", // obrigatório
"birth_date": "1992-04-27", // obrigatório
"gender": "M", // obrigatório
"civil_status_id": "2", // obrigatório
"scholarity_id": "8", // obrigatório
"rg_number": "123456",
"rg_organ": "SSP",
"rg_uf": "SP"
},
"contacts": {
"email": "emaildocliente@email.com", // obrigatório
"celphone": "11999999999" // obrigatório
},
"address": {
"zipcode": "04107030", // obrigatório
"street": "Rua Guimarães Passos", // obrigatório
"district": "Vila Mariana", // obrigatório
"uf": "SP", // obrigatório
"number": "323", // obrigatório
"complement": "Casa", // obrigatório
"city": "São Paulo" // obrigatório
},
"account": {
"pix_key": "11999999999", // obrigatório
"pix_key_type": "phone" // obrigatório
}
},
"simulation": {
"id": "a81ec9bc-fcec-4b7b-92db-025e851f6b7e" // obrigatório
}
}
Retorno de Sucesso
[
{
"data": {
"proposal_code": "366dc20e-af9f-4ff3-a953-8939cabea3cf"
},
"message": "Proposta cadastrada com sucesso!"
}
]
Tipos de Chave PIX pix_key_type
| Tipo | Valor | Formato esperado em pix_key |
|---|---|---|
email | emaildocliente@email.com | |
phone | Telefone | Apenas números, com DDD — 11999999999 |
random | Chave aleatória | UUID — 123e4567-e12b-12d1-a456-426655440000 |
cpf | CPF | Apenas números — 12345678910 |
cnpj | CNPJ | Apenas números — 12345678000199 |
POST Método: Buscar Dados da Proposta FGTS CLT
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição
{
"cpf_proposta": "00000000000",
"api_token": "TOKEN_DO_USUARIO"
}
Retorno de Sucesso
{
"success": true,
"returned_an_error": false,
"status_code": 200,
"message": "Proposta encontrada",
"ccb": "00012345",
"status": "Cancelada",
"cpf_proposta": "123.456.789-00",
"nome": "João Paulo da Silva",
"email": "",
"celular": "11999999999",
"valor_proposta": "400",
"link_assinatura": "https://assinar.io/123456"
}
GET Método: Consultar CCB / Pegar link FGTS CLT
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição
{
"api_token": "TOKEN_DO_USUARIO",
"ccb": "00000000"
}
Retorno de Sucesso
{
"ccb": "A0001234",
"status": "Cancelada",
"link_assinatura": "https://assinar.io/123456",
"mensagem_pendencia": "teste"
}
Fluxo CLT CLT
Como funciona o fluxo de simulação CLT
A simulação CLT segue uma sequência de chamadas encadeadas. Dois identificadores request_uuid circulam pelo fluxo — acompanhe as etiquetas A e B abaixo para saber qual usar em cada passo.
GET /solicitar-termouuid e journeyUrl. O cliente assina o termo de autorização pela journeyUrl.POST /solicitar-vinculoPOST /dados-simulacaoregistration e employer_document, mas a margem ainda vem null ("tente novamente em instantes").POST /solicitar-detalhamentoregistration + employer_document. A resposta devolve um novo request_uuid B.POST /dados-simulacaoavailableMarginValue, baseMarginValue) junto dos dados do trabalhador.POST /simularcpf, o B, o installment_value (normalmente o availableMarginValue) e o bank — bmp ou uy3.POST /cadastro-propostasimulation_id da tabela/prazo escolhida no passo 6 (obrigatório) e os dados do cliente, cadastra a proposta. Retorna o proposal_code./solicitar-vinculo) é usado nas duas chamadas de /dados-simulacao e no /solicitar-detalhamento. O B (de /solicitar-detalhamento) é usado só no /simular.bank. Os mesmos A e B servem para simular tanto na bmp quanto na uy3, então dá pra chamar o /simular duas vezes — uma para cada banco — e comparar as ofertas antes de cadastrar a proposta.GET Passo 1 · Gerar Termo de Autorização CLT
Gera o termo de autorização. O cliente assina pela journeyUrl retornada. Só após a assinatura siga para o passo 2.
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
{
"cpf": "12345678900", // obrigatório
"name": "João Paulo da Silva", // obrigatório
"email": "emaildocliente@email.com", // obrigatório
"celphone": "11999999999", // obrigatório
"organ_name": "econsignado", // obrigatório
"api_token": "TOKEN_DO_USUARIO" // obrigatório
}
Retorno de Sucesso
{
"status": "success",
"returned_an_error": false,
"statusCode": 201,
"message": "Solicitação de autorização realizada com sucesso!",
"body": {
"data": {
"uuid": "3f9a2b7c-1d4e-4a8f-9c2b-7e5d6a1b8c3d",
"journeyUrl": "https://assinar.io/123456"
},
"message": "Solicitação de autorização realizada com sucesso!"
}
}
POST Passo 2 · Solicitar Vínculo Empregatício CLT
Executado depois que o cliente assina o termo. Retorna o request_uuid A, reutilizado nos passos 3, 4 e 5.
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
{
"cpf": "12345678900", // obrigatório
"api_token": "TOKEN_DO_USUARIO" // obrigatório
}
Retorno de Sucesso
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Vinculos empregatícios solicitados com sucesso!",
"body": {
"data": {
"request_uuid": "8c2b7e5d-6a1b-4c3d-9f9a-2b7c1d4e4a8f" // este é o request_uuid A
}
}
}
POST Passos 3 e 5 · Dados da Simulação CLT
Este endpoint é chamado duas vezes com o mesmo request_uuid A: a 1ª (passo 3) traz os dados do vínculo para o detalhamento; a 2ª (passo 5, após o detalhamento) traz a margem.
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição
request_uuid é o A, retornado em /solicitar-vinculo (passo 2).{
"request_uuid": "8c2b7e5d-6a1b-4c3d-9f9a-2b7c1d4e4a8f", // request_uuid A (de /solicitar-vinculo)
"api_token": "TOKEN_DO_USUARIO"
}
Retorno · 1ª chamada (passo 3 — ainda sem margem)
A margem vem null. Guarde o registration e o employer_document para o passo 4.
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Dados retornados com sucesso! Para obter a margem tente novamente em instantes.",
"data": {
"availableMarginValue": null,
"baseMarginValue": null,
"eligible": "sim",
"employer_document": "12345678", // use no passo 4
"employer_type_txt": "CNPJ",
"registration": "MATRIZ0000000000A", // use no passo 4
"totalEarnings": null,
"worker_name": null,
"worker_motherName": null,
"worker_birthDate": null
}
}
Retorno · 2ª chamada (passo 5 — com margem)
Após o detalhamento, repita a chamada. Agora a margem e os dados do trabalhador vêm preenchidos.
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Dados retornados com sucesso!",
"data": {
"availableMarginValue": 769.93, // margem — vira o installment_value no passo 6
"baseMarginValue": 2678.38,
"eligible": "sim",
"employer_document": "12345678",
"employer_type_txt": "CNPJ",
"registration": "MATRIZ0000000000A",
"totalEarnings": 3897.32,
"worker_name": "João Paulo da Silva",
"worker_motherName": "Maria da Silva",
"worker_birthDate": "1990-01-15"
}
}
POST Passo 4 · Solicitar Detalhamento CLT
Dispara o detalhamento do vínculo. A resposta devolve um novo request_uuid B, que será usado no /simular. Depois deste passo, repita o /dados-simulacao (passo 5) para obter a margem.
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição
registration e o employer_document retornados no /dados-simulacao (passo 3).{
"request_uuid": "8c2b7e5d-6a1b-4c3d-9f9a-2b7c1d4e4a8f", // request_uuid A (passo 2)
"registration": "MATRIZ0000000000A", // do passo 3
"employer_document": "12345678", // do passo 3
"api_token": "TOKEN_DO_USUARIO"
}
Retorno de Sucesso
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Detalhes do vínculo empregatício solicitado com sucesso!",
"body": {
"data": {
"request_uuid": "d5e6f7a8-9b0c-4d1e-8f2a-3b4c5d6e7f80" // este é o request_uuid B — use no passo 6
}
}
}
POST Passo 6 · Simular CLT
Passo final da simulação. Com a margem obtida (passo 5), o request_uuid B (passo 4) e o banco escolhido em bank, realiza a simulação.
Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição — // obrigatório indica campo obrigatório
request_uuid é o B (de /solicitar-detalhamento) e o installment_value costuma ser o availableMarginValue retornado no /dados-simulacao.{
"cpf": "12345678900", // obrigatório
"request_uuid": "d5e6f7a8-9b0c-4d1e-8f2a-3b4c5d6e7f80", // request_uuid B (do passo 4)
"installment_value": 769.93, // = availableMarginValue (passo 5)
"bank": "bmp", // obrigatório — "bmp" ou "uy3"
"api_token": "TOKEN_DO_USUARIO" // obrigatório
}
bank — define em qual banco a simulação será feita. Aceita apenas bmp ou uy3. As tabelas e taxas retornadas correspondem ao banco informado. Como os passos 1 a 5 são comuns aos dois, você pode chamar este endpoint duas vezes com os mesmos identificadores — trocando só o bank — para comparar as ofertas.Retorno de Erro · bank ausente ou inválido
Se o bank não for enviado, vier vazio ou trouxer um valor diferente de bmp / uy3, a requisição é recusada antes de chegar ao banco:
{
"message": "bank é obrigatório e deve ser bmp ou uy3",
"returned_an_error": true
}
Retorno de Sucesso
O retorno traz em body.data.data um array com uma opção de simulação por tabela/prazo. Cada item tem os dados da table (id, nome, prazo) e o simulation.payload com o cronograma de installments, os valores (net_value, gross_value, installment_value), CET, IOF, seguro e o simulation_id — que identifica aquela simulação para seguir com a proposta. Abaixo, uma tabela de exemplo do banco bmp (o array se repete para os demais prazos):
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Simulação realizada com sucesso!",
"body": {
"data": {
"data": [
{
"error": false,
"table": {
"id": "9559d2fb-f2aa-4b04-894b-a2d85012ab7f",
"name": "BMP 12x H", // a tabela corresponde ao bank informado
"monthly_fee": 4.52,
"term": 12,
"fund_id": 43
},
"simulation": {
"payload": {
"installments": [
{
"deadline": 73,
"value": 596.95,
"interest_value": 578.17,
"amortization_value": 18.78,
"due_date": "2026-09-23T00:00:00"
},
{
"deadline": 30,
"value": 596.95,
"interest_value": 229.25,
"amortization_value": 367.7,
"due_date": "2026-10-23T00:00:00"
}
// ... demais parcelas do prazo
],
"net_value": 4217.67,
"gross_value": 5090.73,
"installment_value": 596.95,
"monthly_cet": 4.95002,
"annual_cet": 78.5626,
"monthly_fee": 4.52,
"annual_interest": 69.98,
"iof_value": 128.76,
"first_due_date": "2026-09-23T00:00:00",
"simulation_id": "94b16220-f372-4552-9d4a-a14e807e08aa", // identifica esta simulação
"insurance_percentage": 15,
"insurance_value": 744.3,
"use_desired_value": false,
"dataprev_discount_start_period": null
},
"error_description": []
},
"fund_rules_not_followed": []
}
// ... demais tabelas do banco informado
]
}
}
}
POST Passo 7 · Cadastrar Proposta CLT
Passo final do CLT. Com o simulation_id da tabela/prazo escolhida no /simular, cadastra a proposta com os dados do cliente. Envie dados reais do cliente.
cadastro-proposta (diferente do FGTS, que é cadastrar-proposta).bank aqui. O simulation.id já carrega o banco escolhido no passo 6 — se você simulou nos dois, basta enviar o simulation_id da oferta que o cliente aceitou.Endpoint
Header
Authorization: Bearer TOKEN_DA_API
Corpo da Requisição
simulation.id é obrigatório e corresponde ao simulation_id da tabela/prazo escolhida no /simular (passo 6). Os campos civil_status_id, scholarity_id e account.type seguem as Tabelas de Referência; datas no formato AAAA-MM-DD.{
"api_token": "TOKEN_DO_USUARIO",
"customer": {
"pf": {
"civil_status_id": 1,
"scholarity_id": 1,
"rg_number": "12724375",
"rg_organ": "ssp",
"rg_uf": "sp",
"rg_issue_date": "2016-01-25",
"mother_name": "Maria da Silva"
},
"contacts": {
"email": "emaildocliente@email.com",
"celphone": "11999999999",
"secondary_celphone": "11999999999"
},
"address": {
"zipcode": "11080670",
"street": "Rua Um",
"district": "Morro Santa Maria",
"uf": "SP",
"number": "4",
"complement": "Casa",
"city": "Santos"
},
"account": {
"bank_id": 36,
"type": "CCT",
"agency": "0045",
"agency_digit": "0",
"account_number": "0046439",
"account_digit": "2"
},
"employer": {
"email": "emailempregador@email.com",
"phone": "11977777777"
}
},
"simulation": {
"id": "94b16220-f372-4552-9d4a-a14e807e08aa" // obrigatório — simulation_id da tabela escolhida no /simular
}
}
Retorno de Sucesso
{
"status": "success",
"returned_an_error": false,
"statusCode": 200,
"message": "Proposta cadastrada com sucesso!",
"body": {
"data": {
"data": {
"proposal_code": "3c23e081-6ccf-4d03-b6da-eb8ce0601d1f"
}
}
}
}
Padrões de Campos
| Campo | Formato | Exemplo |
|---|---|---|
| Data de Nascimento | AAAA-MM-DD | 1992-04-27 |
| Celular | Apenas números, com DDD | 11999999999 |
Bancos Disponíveis bank
Valores aceitos no campo bank, sempre em minúsculas.
| Valor | Banco | Onde é usado |
|---|---|---|
bmp | BMP | FGTS · /consulta-saldoCLT · /simular |
uy3 | UY3 | CLT · /simular |
/simular (passo 6). Os passos anteriores — termo, vínculo, dados da simulação e detalhamento — são únicos e valem para os dois bancos.Tabelas de Referência
Gênero
| Código | Valor |
|---|---|
M | Masculino |
F | Feminino |
Estado Civil
| Id | Valor |
|---|---|
1 | Solteiro(a) |
2 | Casado(a) |
3 | Divorciado(a) |
4 | Separado(a) |
5 | Viúvo(a) |
6 | Outros |
Escolaridade
| Id | Valor |
|---|---|
1 | Maternal incompleto |
2 | Maternal completo |
3 | Ensino fundamental incompleto |
4 | Ensino fundamental completo |
5 | Ensino médio incompleto |
6 | Ensino médio completo |
7 | Ensino superior incompleto |
8 | Ensino superior completo |
Tipos de Conta Bancária
| Id | Valor |
|---|---|
CPP | Conta Poupança |
CCT | Conta Corrente |
CPG | Conta Pagamento |