# Simular empréstimo

POST /credit-offers/{credit_offer_id}/simulationsSimula condições de empréstimo para uma oferta de crédito

Endpoint: POST /credit-offers/{credit_offer_id}/simulations
Version: 2026-03-01
Security: bearerAuth

## Security:

  - `bearerAuth` (unknown)
    http bearer JWT

## Path parameters:

  - `credit_offer_id` (string, required)
    ID da oferta de crédito

## Header parameters:

  - `X-Idempotency-Key` (string)
    String única para requisições POST idempotentes. Cache de 24 horas

## Request fields (application/json):

  - `requested_amount` (number, required)
    Valor de saque desejado
    Example: 25000

  - `installment_count` (integer, required)
    Número de parcelas desejado
    Example: 12

## Response 201:

  - `201` (unknown)
    Simulação criada

## Response 201 fields (application/json):

  - `id` (string, required)
    Identificador único da simulação
    Example: sim_550e8400e29b41d4a716446655440000

  - `credit_offer_id` (string, required)
    Identificador único da oferta de crédito
    Example: co_550e8400e29b41d4a716446655440000

  - `requested_amount` (number, required)
    Valor que o cliente recebe
    Example: 25000

  - `principal_amount` (number, required)
    Valor financiado (solicitado + taxas financiadas)
    Example: 29375

  - `interest_amount` (number, required)
    Total de juros cobrados
    Example: 2614.36

  - `iof_amount` (number, required)
    Valor do IOF
    Example: 1875

  - `fee_amount` (number, required)
    Valor da taxa de serviço
    Example: 2500

  - `total_amount` (number, required)
    Soma de todos os pagamentos de parcelas
    Example: 31989.36

  - `monthly_interest_rate` (number, required)
    Taxa de juros mensal (%)
    Example: 3.5

  - `annual_interest_rate` (number, required)
    Taxa de juros anual (%, composta a partir da mensal)
    Example: 51.11

  - `monthly_cet_rate` (number, required)
    Custo efetivo total mensal (%)
    Example: 2

  - `annual_cet_rate` (number, required)
    Custo efetivo total anual (%)
    Example: 233.18

  - `installment_count` (integer, required)
    Número de parcelas
    Example: 4

  - `installment_amount` (number, required)
    Valor de cada parcela
    Example: 7997.34

  - `first_due_date` (string, required)
    ISO 8601 · date
Data de vencimento da primeira parcela
    Example: 2026-04-03

  - `created_at` (integer, required)
    Epoch Unix em segundos

## Response 400:

  - `400` (unknown)
    Requisição inválida

## Response 400 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/invalid-request"

  - `title` (string, required)
    Enum: "Invalid Request"

  - `status` (integer, required)
    Enum: "400"

  - `detail` (string, required)

  - `code` (string, required)
    Enum: "invalid_content_type", "malformed_body"

## Response 401:

  - `401` (unknown)
    Falha na autenticação

## Response 401 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/authentication-failed"

  - `title` (string, required)
    Enum: "Authentication Failed"

  - `status` (integer, required)
    Enum: "401"

  - `detail` (string, required)

  - `code` (string, required)
    Enum: "missing_token", "invalid_token", "token_expired"

## Response 404:

  - `404` (unknown)
    Recurso não encontrado

## Response 404 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/not-found"

  - `title` (string, required)
    Enum: "Not Found"

  - `status` (integer, required)
    Enum: "404"

  - `detail` (string, required)

  - `code` (string, required)
    Enum: "credit_offer_not_found"

## Response 422:

  - `422` (unknown)
    Falha na validação

## Response 422 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/validation-failed"

  - `title` (string, required)
    Enum: "Validation Failed"

  - `status` (integer, required)
    Enum: "422"

  - `detail` (string, required)

  - `code` (string, required)
    Enum: "offer_expired", "offer_already_accepted", "invalid_amount", "invalid_installments"

## Response 429:

  - `429` (unknown)
    Limite de requisições excedido

## Response 429 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/rate-limit-exceeded"

  - `title` (string, required)
    Enum: "Rate Limit Exceeded"

  - `status` (integer, required)
    Enum: "429"

  - `detail` (string, required)

## Response 429 headers (application/problem+json):

  - `Retry-After` (integer)
    Segundos até o limite de requisições ser reiniciado

## Response 500:

  - `500` (unknown)
    Erro interno do servidor

## Response 500 fields (application/problem+json):

  - `type` (string, required)
    Enum: "https://docs.dinie.com/errors/internal"

  - `title` (string, required)
    Enum: "Internal Error"

  - `status` (integer, required)
    Enum: "500"

  - `detail` (string, required)

## Response 400 examples:

  - ``Content-Type` is not `application/json`` (unknown)

  - `Request body is not valid JSON` (unknown)

## Response 401 examples:

  - `Authorization header is missing` (unknown)

  - `Bearer token is invalid or malformed` (unknown)

  - `Bearer token has expired` (unknown)

## Response 404 examples:

  - `Credit offer ID does not exist or does not belong to this partner` (unknown)

## Response 422 examples:

  - `Credit offer status is `expired`` (unknown)

  - `Credit offer status is `accepted`` (unknown)

  - ``requested_amount` exceeds `approved_amount`, is below `min_amount`, or is not a valid monetary value` (unknown)

  - ``installment_count` is outside the allowed range` (unknown)

