Guia de integração
A API do Datacar devolve dados de veículos — preço e histórico da Tabela FIPE, ficha técnica, consumo, fotos e identificação por chassi e placa — consolidados de fontes abertas, com a proveniência e a confiança de cada campo. É uma API REST com JSON, autenticada por chave, documentada em OpenAPI 3.1.
| URL base (produção) | https://datacar.digitalmart.com.br/api/v1 |
|---|---|
| Formato | JSON UTF-8 · erros em application/problem+json (RFC 9457) |
| Autenticação | Authorization: Bearer dc_live_… |
| Especificação | openapi.json · referência interativa |
Quickstart
Com a sua chave em mãos, consulte um veículo pelo código FIPE e pelo ano modelo (opcionalmente com o combustível da FIPE, como em 2015-3; use 0km para zero quilômetro):
curl https://datacar.digitalmart.com.br/api/v1/vehicles/005340-6/2015-3 \
-H "Authorization: Bearer $DATACAR_API_KEY"const res = await fetch('https://datacar.digitalmart.com.br/api/v1/vehicles/004516-0/2023', {
headers: { Authorization: `Bearer ${process.env.DATACAR_API_KEY}` },
})
if (res.status === 202) {
// Veículo novo: a consulta às fontes continua em segundo plano.
const wait = Number(res.headers.get('retry-after') ?? 2)
console.log(`Tente novamente em ${wait}s`)
} else if (res.ok) {
const { data } = await res.json()
console.log(data.brand, data.model, data.price?.amount, data.engine, data.quality.score)
} else {
const problem = await res.json() // { code, detail, request_id, ... }
throw new Error(`${problem.code}: ${problem.detail}`)
}$ch = curl_init('https://datacar.digitalmart.com.br/api/v1/vehicles/005340-6/2015-3?view=flat');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('DATACAR_API_KEY')],
CURLOPT_TIMEOUT => 10,
]);
$body = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status === 200) {
echo $body['data']['marca'] . ' ' . $body['data']['modelo'] . ' — R$ ' . $body['data']['preco_fipe'];
}Respostas de uma consulta
| Status | Significado | Consome cota? |
|---|---|---|
200 | Veículo encontrado | Sim (1) |
202 | Veículo novo sendo consultado nas fontes; repita após Retry-After | Não |
304 | Nada mudou desde o ETag enviado em If-None-Match | Não |
404 | A FIPE não lista este código/ano (veja os anos em GET /v1/vehicles/{fipe_code}) | Não |
Conceitos
Proveniência e confiança
Adicione include=provenance para receber, por campo, a confiança (0–1), as fontes que concordam e as que divergem. A confiança combina a confiabilidade de cada fonte para aquele campo com o quanto elas concordam entre si — um valor visto em uma única fonte nunca chega a 1. inferred:fipe indica um valor lido da descrição FIPE (por exemplo, “2.0 16V TDI 4x4” → motor 2.0, 16 válvulas, turbo, 4x4); fontes que informam o mesmo campo diretamente sempre têm peso maior.
"provenance": {
"price": { "confidence": 0.99, "sources": ["parallelum", "brasil-api"], "dissent": [] },
"body_type": { "confidence": 0.78, "sources": ["wikidata", "inferred:fipe"], "dissent": [] },
"engine": { "confidence": 0.55, "sources": ["inferred:fipe"], "dissent": [] }
}conflict em quality.warnings.Qualidade
quality.score (0–100) mede a completude da ficha ponderada pela confiança: preço, motor, marca/modelo, câmbio, dimensões, consumo e fotos pesam mais. quality.warnings lista conflitos entre fontes, valores implausíveis (potência incompatível com a cilindrada, por exemplo), saltos de preço fora do normal entre meses e campos essenciais ausentes.
Revisões e a virada mensal da FIPE
Cada veículo tem um meta.revision que incrementa somente quando o conteúdo muda. A FIPE publica uma nova tabela nos primeiros dias úteis de cada mês: o Datacar reprocessa os veículos logo depois, e cada preço novo gera uma revisão, um item no feed de alterações e o webhook vehicle.updated. Reconsultas que não mudam nada não geram nada disso.
Formatos de saída
view=full(padrão): JSON completo em inglês/snake_case.view=flat: projeção plana em português (marca,motor_litros,preco_fipe,sh_ncm…) — veja o dicionário de campos.include=history: inclui o histórico mensal do preço FIPE.fields=id,brand,model,price: retorna só os campos pedidos (menos bytes, mais velocidade).
Próximos passos
- Autenticação, escopos, rate limit e cota
- Integrar um DMS, ERP ou marketplace (placa, chassi, catálogo FIPE, lote, feed incremental, webhooks)
- Dicionário de campos e fontes