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
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
›
Autenticação
🔓 Pública
Body — application/json
| Campo | Tipo | Descriçã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
›
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
›
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
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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_balance503
Produto indisponível
code: product_unavailable
POST
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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_balance422
Placa ausente ou inválida
POST
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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
›
Autenticação
🗝️ API Key
Body — application/json
| Campo | Tipo | Descriçã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_balance503
Produto indisponível
code: product_unavailableInfrações
Tabela oficial de infrações de trânsito do CTB com pontuação, valores e medidas administrativas.
GET
›
Autenticação
🗝️ API Key
Query Parameters
| Campo | Tipo | Descriçã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
›
Autenticação
🗝️ API Key
Path Parameters
| Campo | Tipo | Descriçã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