Sobre esta API
Lista os anos-modelo de um modelo na tabela FIPE, cada um com o combustível (2022 Gasolina). O zero km vem marcado com zero_km: true.
Envie vehicle_type, brand_id e o model_id vindo da listagem de modelos. O code de cada ano (2022-1) é o year_code do preço.
Marca ou modelo que não existe volta 404 e não é cobrado.
Tabela FIPE — preço médio de veículos · Atualização: mensal
Requisição
GET /api/v1/vehicle/fipe/yearsAutenticação HTTP Basic: public_key:secret_key em Base64. Guarde a chave secreta no servidor.
| Cabeçalho | Descrição |
|---|---|
AuthorizationObrigatório | Chave de API em Basic: public_key:secret_key em Base64. |
X-Project-IdOpcional | Projeto que recebe a chamada. Sem ele, vale o projeto padrão da conta. |
Idempotency-KeyOpcional | Repetir a mesma chave em até 24 horas devolve a resposta anterior, sem executar nem cobrar de novo. |
Parâmetros
| Campo | Tipo e local | Descrição |
|---|---|---|
vehicle_typeObrigatório | stringquery | cars, motorcycles ou trucks.Exemplo: |
brand_idObrigatório | integerquery | Código da marca, da listagem de marcas. Exemplo: |
model_idObrigatório | integerquery | Código do modelo, da listagem de modelos. Exemplo: |
curl --request GET 'https://api.apifordevs.com/api/v1/vehicle/fipe/years?vehicle_type=cars&brand_id=21&model_id=11401' \
--user "afd_live_pk_...:$AFD_SECRET_KEY" \
--header "X-Project-Id: $AFD_PROJECT_ID"
import os
import requests
response = requests.request(
"GET",
"https://api.apifordevs.com/api/v1/vehicle/fipe/years?vehicle_type=cars&brand_id=21&model_id=11401",
auth=("afd_live_pk_...", os.environ["AFD_SECRET_KEY"]),
headers={"X-Project-Id": os.environ["AFD_PROJECT_ID"]},
timeout=30,
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apifordevs.com/api/v1/vehicle/fipe/years?vehicle_type=cars&brand_id=21&model_id=11401", {
method: "GET",
headers: {
Authorization: "Basic " + Buffer.from(
"afd_live_pk_...:" + process.env.AFD_SECRET_KEY
).toString("base64"),
"X-Project-Id": process.env.AFD_PROJECT_ID,
},
signal: AbortSignal.timeout(30000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());
Campos de resposta
Campos e tipos publicados no catálogo desta API.
- Código do ano
codestring - Ano-modelo e combustível (
2022-1): é oyear_codedo preço. - Ano e combustível
namestring - Ano-modelo
model_yearinteger - Zero km
zero_kmboolean
Exemplo de resposta
{
"success": true,
"code": 200,
"code_message": "A requisição foi processada com sucesso.",
"errors": [],
"header": null,
"data_count": 1,
"data": [
{
"code": "2026-5",
"name": "2026 Flex",
"model_year": 2026,
"zero_km": false
}
]
}
Respostas e cobrança
| HTTP | Descrição | Cobrança |
|---|---|---|
200 | Sucesso. | Sujeita à cobrança |
400
| Arquivo ou parâmetro que a rota não consegue processar, projeto inválido, ou dev_mode=true com chave de produção. | Sem cobrança |
401
| Credencial ausente, inválida ou revogada. | Sem cobrança |
402
| Saldo insuficiente ou limite de gasto diário atingido. | Sem cobrança |
403
| E-mail da conta não verificado, chave sem escopo para o serviço, IP fora da allowlist do projeto ou chave de teste sem dev_mode=true. | Sem cobrança |
404
| Marca, modelo ou ano que a tabela FIPE não tem para o tipo informado. Não é cobrada. | Sem cobrança |
409
| Requisição com a mesma Idempotency-Key ainda em andamento. | Sem cobrança |
422
| Parâmetro obrigatório ausente ou fora do formato, ou Idempotency-Key repetida com outro conteúdo. | Sem cobrança |
429
| Limite de requisições por minuto da chave atingido. | Sem cobrança |
500
| Falha interna. | Sem cobrança |
503
| Serviço desativado (service_unavailable), ou a tabela FIPE não respondeu a tempo (upstream_error). Não é cobrada; com upstream_error, pode ser repetida. | Sem cobrança |
Casos de uso
Formulário de marca, modelo e ano
Os três seletores em cascata do formulário de cotação ou de anúncio, com os nomes exatos da tabela FIPE.