Documentação

Torquefy Dados

Acesse dados veiculares em tempo real — consultas de placa, CNH, débitos, FIPE, leilão, RENAINF e RENAJUD — com uma API REST moderna e segura.

REST API JSON Bearer Token + API Key v1.0.0
BASE URL https://dados.torquefy.pro/api/v1
Visão Geral
🔐
Seguro por Design
Autenticação via Bearer Token para gestão e API Key para consultas.
💳
Pré-pago Transparente
Carteira pré-paga com extrato detalhado de cada consulta realizada.
🚗
Dados Veiculares
7 endpoints especializados cobrindo CNH, débitos, leilão, RENAINF, RENAJUD e FIPE.
Autenticação

A API utiliza dois esquemas de autenticação dependendo do tipo de operação:

Bearer Token
Usado para operações de gestão: login, carteira, extrato. Obtido via POST /auth/login.
Authorization: Bearer {token}
API Key
Usado para consultas veiculares. Gerada no portal de gestão da conta.
X-Api-Key: {sua-api-key}
ℹ️
Gere suas API Keys no portal ou via POST /identity/api-keys. Cada key pode ter escopos e permissões específicas definidas no momento da criação.
Códigos de Erro

Todos os erros seguem o formato padrão {"message": "...", "code": "..."}.

HTTP Código Descrição
401 invalid_credentials E-mail ou senha inválidos
402 insufficient_balance Saldo insuficiente na carteira para a consulta
403 tenant_pending_verification Conta aguardando verificação de e-mail
422 validation_error Campos inválidos ou ausentes no corpo da requisição
503 product_unavailable Produto temporariamente indisponível

Auth
POST
/auth/login
Autenticar e obter Bearer Token
Autenticação
🔓 Pública
Body — application/json
CampoTipoDescrição
emailobrigatório string (email) E-mail da conta
passwordobrigatório string Senha da conta
Exemplo de Requisição
cURL
JavaScript
Python
Shell
curl -X POST https://dados.torquefy.pro/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "contato@empresa.com.br",
    "password": "SuaSenha123"
  }'
JavaScript
const response = await fetch('https://dados.torquefy.pro/api/v1/auth/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    email: 'contato@empresa.com.br',
    password: 'SuaSenha123'
  })
});

const { data } = await response.json();
const token = data.access_token; // guarde este token
Python
import requests

response = requests.post(
    'https://dados.torquefy.pro/api/v1/auth/login',
    json={
        'email': 'contato@empresa.com.br',
        'password': 'SuaSenha123'
    }
)

data = response.json()['data']
token = data['access_token']  # guarde este token
Respostas
200
Autenticado com sucesso. Retorna access_token para usar como Bearer.
// HTTP 200
{
  "data": {
    "access_token": "1|xxxxxxxxxxxxxxxxxxx",
    "token_type": "Bearer",
    "user": {
      "id": 1,
      "name": "João Silva",
      "email": "contato@empresa.com.br"
    }
  }
}
401
Credenciais inválidas
code: invalid_credentials
403
Conta pendente de verificação de e-mail
code: tenant_pending_verification

Billing
GET
/billing/wallet
Consultar saldo da carteira pré-paga
Autenticação
🔑 Bearer Token
ℹ️
Este endpoint reconcilia automaticamente pagamentos Pix pendentes com o gateway antes de retornar o saldo.
Exemplo de Requisição
Shell
curl -X GET https://dados.torquefy.pro/api/v1/billing/wallet \
  -H "Authorization: Bearer {seu-token}"
Respostas
200
Saldo atualizado da carteira.
// HTTP 200
{
  "data": {
    "balance": "150.00",
    "currency": "BRL",
    "updated_at": "2026-06-12T10:00:00Z"
  }
}
401
Token inválido ou expirado
GET
/billing/ledger
Extrato detalhado de movimentações da carteira
Autenticação
🔑 Bearer Token
Exemplo de Requisição
Shell
curl -X GET https://dados.torquefy.pro/api/v1/billing/ledger \
  -H "Authorization: Bearer {seu-token}"
Respostas
200
Lista paginada de movimentações.
// HTTP 200
{
  "data": [
    {
      "id": "uuid-...",
      "type": "debit",
      "amount": "-2.50",
      "description": "Consulta vehicle_v3",
      "created_at": "2026-06-12T09:30:00Z"
    }
  ],
  "meta": { "current_page": 1, "total": 48 }
}
401
Token inválido ou expirado

Veículos
⚠️
Todos os endpoints de consulta veicular exigem X-Api-Key no cabeçalho e saldo suficiente na carteira. Em caso de saldo insuficiente, a API retorna 402 insufficient_balance.
POST
/consultation/vehicle/details
Dados completos do veículo (placa)
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo (formato Mercosul ou antigo)
purposeobrigatório string (min 3) Finalidade da consulta (ex: "verificação de compra")
renavamopcional string RENAVAM para validação cruzada
idempotency_keyopcional string (max 64) Chave de idempotência para evitar consultas duplicadas
Exemplo de Requisição
cURL
JavaScript
Python
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/details \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "purpose": "verificação de compra"
  }'
JavaScript
const response = await fetch(
  'https://dados.torquefy.pro/api/v1/consultation/vehicle/details',
  {
    method: 'POST',
    headers: {
      'X-Api-Key': '{sua-api-key}',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      plate: 'ABC1D23',
      purpose: 'verificação de compra'
    })
  }
);
Python
response = requests.post(
    'https://dados.torquefy.pro/api/v1/consultation/vehicle/details',
    headers={'X-Api-Key': '{sua-api-key}'},
    json={
        'plate': 'ABC1D23',
        'purpose': 'verificação de compra'
    }
)
Respostas
200
Dados completos do veículo retornados com sucesso
// HTTP 200
{
  "data": {
    "axle": 2,
    "fuel": "ALCOOL/GASOLINA",
    "kind": "PASSAGEIRO",
    "color": "CINZA",
    "client": {
      "name": "**********",
      "size": null,
      "opening": null,
      "addresses": [],
      "birthDate": "**********",
      "legalName": "**********",
      "situation": null,
      "fatherName": "**********",
      "motherName": "**********",
      "documentNumber": "**********",
      "legalNatureCode": null,
      "legalNatureDescription": null
    },
    "origin": "NACIONAL",
    "status": "EM CIRCULAÇÃO",
    "chassis": "**********",
    "potency": 128,
    "renavam": "**********",
    "capacity": 5,
    "category": "PARTICULAR",
    "cylinders": 999,
    "modelYear": 2023,
    "brandModel": "VW/NIVUS HL TSI",
    "vehicleType": "AUTOMÓVEL",
    "engineNumber": "**********",
    "invoiceState": null,
    "licensePlate": "**********",
    "restrictions": {
      "recall": false,
      "hasGravame": null,
      "occurrence": null,
      "insuranceClaim": null,
      "robberyOrTheft": false,
      "hasSellIntention": null,
      "hasAdministrative": null,
      "hasSalesAnnouncement": null,
      "rfbRestrictionIndicator": false,
      "renainfRestrictionIndicator": false,
      "renajudRestrictionIndicator": false
    },
    "chassisRemark": false,
    "loadCapacityKg": 451,
    "manufactureYear": 2023,
    "proprietaryName": "**********",
    "licensePlateCity": "CANOAS",
    "totalGrossWeight": null,
    "licensePlateState": "RS",
    "maxTractionCapacity": null,
    "fuelTankCapacityLiters": 52,
    "preMercosurLicensePlate": null,
    "proprietaryDocumentType": "CPF",
    "alienationInstitutionName": null,
    "proprietaryDocumentNumber": "**********",
    "alienationInstitutionDocument": null
  }
}
402
Saldo insuficiente
code: insufficient_balance
422
Placa ausente ou inválida
503
Produto temporariamente indisponível
code: product_unavailable
POST
/consultation/vehicle/cnh
Situação e dados da CNH
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
documentobrigatório string CPF do condutor (somente números)
cnh_numberopcional string Número do registro da CNH para validação
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/cnh \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "document": "12345678900",
    "purpose": "verificação de motorista"
  }'
Respostas
200
Dados da CNH retornados com sucesso
// HTTP 200
{
  "data": {
    "cnh": {
      "email": "**********",
      "exams": [
        {
          "uf": "****",
          "date": "2015-03-02T03:00:00.000Z",
          "name": "AVALIAÇÃO PSICOLÓGICA",
          "place": null,
          "result": "APTO",
          "cityHeld": "CANOAS",
          "validity": "2035-03-10T03:00:00.000Z",
          "allowedCategory": "B",
          "desiredCategory": "B"
        }
      ],
      "phone": null,
      "number": "**********",
      "renach": "**********",
      "address": null,
      "courses": [
        {
          "uf": "****",
          "name": "AULAS TEÓRICAS - LEGISLAÇÃO",
          "dueDate": null,
          "endDate": "2015-03-19T03:00:00.000Z",
          "category": "B",
          "cityHeld": "CANOAS",
          "modality": "0 NAO TABELADO",
          "workload": "045",
          "startDate": "2015-03-05T03:00:00.000Z"
        }
      ],
      "blockeds": [],
      "category": "AB",
      "firstCnh": "2015-04-22T03:00:00.000Z",
      "birthDate": "**********",
      "issueDate": "2025-04-09T03:00:00.000Z",
      "observation": "99",
      "toxicological": null,
      "expirationDate": "2035-03-10T03:00:00.000Z",
      "registryNumber": "**********"
    },
    "client": {
      "name": "**********",
      "rgState": "RS",
      "rgIssuer": "SSP",
      "rgNumber": "**********",
      "birthDate": "**********",
      "legalName": "**********",
      "fatherName": "**********",
      "motherName": "**********",
      "documentNumber": "**********"
    }
  }
}
402
Saldo insuficiente
code: insufficient_balance
503
Produto indisponível
code: product_unavailable
POST
/consultation/vehicle/debits
Débitos, multas e restrições do veículo
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo
renavamopcional string RENAVAM para validação cruzada
ufopcional string (2 chars) UF de emplacamento
debitosopcional string (JSON) JSON string com filtro de tipos de débito para liquidação
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/debits \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "uf": "SP",
    "purpose": "análise de débitos"
  }'
Respostas
200
Lista de débitos e multas do veículo
// HTTP 200
{
  "data": [
    {
      "fees": 0,
      "fine": 0,
      "type": 1,
      "quota": 0,
      "total": 11409,
      "barcode": "85630000001140900742...",
      "dueDate": "2026-07-31T03:00:00.000Z",
      "subtotal": 11409,
      "extraData": null,
      "identifier": null,
      "description": "Licenciamento 2026",
      "digitableLine": "856300000010140900...",
      "paymentStatus": "opened",
      "referenceDate": "2026",
      "originalDueDate": "2026-07-31T03:00:00.000Z",
      "unavailableReason": null
    },
    {
      "fees": 0,
      "fine": 0,
      "type": 2,
      "quota": 0,
      "total": 52520,
      "barcode": "85850000005252000952...",
      "dueDate": "2026-06-02T03:00:00.000Z",
      "subtotal": 52520,
      "extraData": null,
      "identifier": null,
      "description": "IPVA 2026 - EXER:ORIG+MLT+JRS",
      "digitableLine": "858500000053252000...",
      "paymentStatus": "opened",
      "referenceDate": "2026",
      "originalDueDate": "2026-06-02T03:00:00.000Z",
      "unavailableReason": null
    },
    {
      "fees": 0,
      "fine": 0,
      "type": 3,
      "quota": 0,
      "total": 13016,
      "barcode": null,
      "dueDate": null,
      "subtotal": 13016,
      "extraData": [
        {
          "key": "Pontuação",
          "group": "Detalhamento Multa",
          "value1": "4",
          "value2": null,
          "value3": null
        },
        {
          "key": "Local",
          "group": "Detalhamento Multa",
          "value1": "ROD. RSC453 km 26 SENTIDO ...",
          "value2": null,
          "value3": null
        },
        {
          "key": "Data e Hora",
          "group": "Detalhamento Multa",
          "value1": "27/03/2020 16:16",
          "value2": null,
          "value3": null
        },
        {
          "key": "Cód. da Infração",
          "group": "Detalhamento Multa",
          "value1": "74550",
          "value2": null,
          "value3": null
        },
        {
          "key": "Órgão Autuador",
          "group": "Detalhamento Multa",
          "value1": "DAER - RS",
          "value2": null,
          "value3": null
        }
      ],
      "identifier": "E019583877",
      "description": "Multa - E019583877 - TRANSITAR EM VELOCIDADE SUPERIOR...",
      "digitableLine": null,
      "paymentStatus": "paid",
      "referenceDate": null,
      "originalDueDate": null,
      "trafficViolation": {
        "code": 74550,
        "value": 13016,
        "points": 4,
        "article": "ART 218 , I",
        "severity": "MÉDIA",
        "description": "TRANSITAR EM VELOCIDADE SUPERIOR À MÁXIMA PERMITIDA EM ATÉ 20%",
        "responsible": "CONDUTOR"
      },
      "unavailableReason": null
    }
  ]
}
402
Saldo insuficiente
code: insufficient_balance
422
Placa ausente ou inválida
POST
/consultation/vehicle/preco
Preço de mercado — Tabela FIPE
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/preco \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "purpose": "avaliação de venda"
  }'
Respostas
200
Cotação FIPE atual do veículo com marca, modelo e ano
// HTTP 200
{
  "data": {
    "fipe": [
      {
        "code": "024194-6",
        "brand": "Peugeot",
        "model": "208 Active/Active Pack 1.5 Flex 8V 5p",
        "price": 37136
      }
    ],
    "fuel": "ALCOOL/GASOLINA",
    "molicar": [
      {
        "code": "03804915-6",
        "brand": "PEUGEOT",
        "doors": 4,
        "model": "208 ACTIVE PACK 1.6 16V AT FLEXSTART",
        "price": 390,
        "optional": "Basico"
      },
      {
        "code": "03804946-6",
        "brand": "PEUGEOT",
        "doors": 4,
        "model": "208 ACTIVE PACK 1.6 16V AT FLEXSTART",
        "price": 39780,
        "optional": "Completo"
      }
    ],
    "cylinders": 1449,
    "modelYear": 2014,
    "brandModel": "PEUGEOT 208 ACTIVE FLEX 1.4"
  }
}
402
Saldo insuficiente
code: insufficient_balance
POST
/consultation/vehicle/leilao
Histórico de leilões do veículo
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo
chassiopcional string Número do chassi para validação cruzada
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/leilao \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "purpose": "verificação de sinistro"
  }'
Respostas
200
Histórico de leilões, datas e leiloeiros
402
Saldo insuficiente
code: insufficient_balance
POST
/consultation/vehicle/renainf
Infrações nacionais — RENAINF
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo
renavamopcional string RENAVAM para validação cruzada
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/renainf \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "purpose": "consulta de infrações"
  }'
Respostas
200
Infrações nacionais registradas no RENAINF
402
Saldo insuficiente
code: insufficient_balance
POST
/consultation/vehicle/renajud
Restrições judiciais — RENAJUD
Autenticação
🗝️ API Key
Body — application/json
CampoTipoDescrição
plateobrigatório string (max 10) Placa do veículo
renavamopcional string RENAVAM para validação cruzada
purposeobrigatório string (min 3) Finalidade da consulta
Exemplo de Requisição
Shell
curl -X POST https://dados.torquefy.pro/api/v1/consultation/vehicle/renajud \
  -H "X-Api-Key: {sua-api-key}" \
  -H "Content-Type: application/json" \
  -d '{
    "plate": "ABC1D23",
    "purpose": "verificação judicial"
  }'
Respostas
200
Restrições judiciais ativas no RENAJUD
402
Saldo insuficiente
code: insufficient_balance
503
Produto indisponível
code: product_unavailable

Infrações

Tabela oficial de infrações de trânsito do CTB com pontuação, valores e medidas administrativas.

GET
/infraction
Listar infrações de trânsito (paginado)
Autenticação
🗝️ API Key
Query Parameters
CampoTipoDescrição
codeopcional string Busca parcial no código CTB (case-insensitive)
pointsopcional number Correspondência exata nos pontos na carteira
articleopcional string Busca parcial no número do artigo CTB
pageopcional number Número da página (padrão 1, mínimo 1)
limitopcional number Itens por página (padrão 20, máximo 100)
Exemplo de Requisição
cURL
JavaScript
Python
Shell
curl -X GET "https://dados.torquefy.pro/api/v1/infraction?page=1&limit=20" \
  -H "X-Api-Key: {sua-api-key}"
JavaScript
const response = await fetch(
  'https://dados.torquefy.pro/api/v1/infraction?page=1&limit=20',
  { headers: { 'X-Api-Key': '{sua-api-key}' } }
);
const data = await response.json();
Python
response = requests.get(
    'https://dados.torquefy.pro/api/v1/infraction',
    headers={'X-Api-Key': '{sua-api-key}'},
    params={'page': 1, 'limit': 20}
)
Respostas
200
Lista paginada de infrações do CTB
// HTTP 200
{
  "total": 439,
  "page": 1,
  "limit": 20,
  "totalPages": 22,
  "items": [
    {
      "code": "5169-1",
      "article": "165",
      "description": "Dirigir sob a influência de álcool",
      "severity": "Gravíssima",
      "points": 7,
      "amount": 2934.7,
      "legalBasis": "Artigo 165 do CTB.",
      "responsible": "Condutor",
      "enforcingAgency": "Estadual/Rodov",
      "penalty": "Multa e suspensão do direito de dirigir.",
      "administrativeMeasure": "-",
      "notes": "Suspensão de 12 meses. Multa correspondente a 10 vezes o valor original."
    },
    {
      "code": "5185-1",
      "article": "167",
      "description": "Deixar o condutor de usar o cinto segurança",
      "severity": "Grave",
      "points": 5,
      "amount": 195.23,
      "legalBasis": "Artigo 167 do CTB.",
      "responsible": "Condutor",
      "enforcingAgency": "Est/Munic/Rodov",
      "penalty": "Multa.",
      "administrativeMeasure": "Retenção do veículo até colocação do cinto.",
      "notes": null
    },
    {
      "code": "7498-0",
      "article": "94",
      "description": "Não sinalizar obstáculo à circulação/segurança",
      "severity": null,
      "points": 0,
      "amount": 0,
      "legalBasis": "Artigo 94 do CTB.",
      "responsible": "Serv. público",
      "enforcingAgency": "Municipal/Rodov",
      "penalty": null,
      "administrativeMeasure": "-",
      "notes": null
    }
    // ... mais itens
  ]
}
401
API Key inválida ou ausente
GET
/infraction/{code}
Buscar infração pelo código CTB
Autenticação
🗝️ API Key
Path Parameters
CampoTipoDescrição
codeobrigatório string Código da infração (ex: 5169-1, 5185-2)
Exemplo de Requisição
cURL
JavaScript
Python
Shell
curl -X GET https://dados.torquefy.pro/api/v1/infraction/5169-1 \
  -H "X-Api-Key: {sua-api-key}"
JavaScript
const code = '5169-1';
const response = await fetch(
  `https://dados.torquefy.pro/api/v1/infraction/${code}`,
  { headers: { 'X-Api-Key': '{sua-api-key}' } }
);
const infraction = await response.json();
Python
code = '5169-1'
response = requests.get(
    f'https://dados.torquefy.pro/api/v1/infraction/{code}',
    headers={'X-Api-Key': '{sua-api-key}'}
)
Respostas
200
Dados completos da infração
// HTTP 200
{
  "code": "5169-1",
  "article": "165",
  "description": "Dirigir sob a influência de álcool",
  "severity": "Gravíssima",
  "points": 7,
  "amount": 2934.7,
  "legalBasis": "Artigo 165 do CTB.",
  "responsible": "Condutor",
  "enforcingAgency": "Estadual/Rodov",
  "penalty": "Multa e suspensão do direito de dirigir.",
  "administrativeMeasure": "-",
  "notes": "Suspensão de 12 meses. Multa correspondente a 10 vezes o valor original (R$ 293,47 X 10 = R$ 2.934,70). Aplica-se em dobro a multa em caso de reincidência no período de até 12 meses."
}
404
Código de infração não encontrado
401
API Key inválida ou ausente