---
title: "Relatório mensal da Tabela FIPE"
method: GET
path: "/v1/reports/monthly"
tags: ["Rankings"]
---

# Relatório mensal da Tabela FIPE

`GET /v1/reports/monthly`

## Request

- Base URL: `https://api.fipex.com.br`
- URL: `https://api.fipex.com.br/v1/reports/monthly`
- Auth: none declared

Como a Tabela FIPE se moveu em um mês de referência, comparado ao mês
civil anterior, por tipo de veículo (carro, moto, caminhão):

- **Resumo**: páginas de veículo precificadas no mês
  (`priced_count`); das que também tinham preço no mês anterior
  (`compared_count`), quantas subiram, caíram ou ficaram iguais, e a
  variação mediana. Página de veículo = versão não mesclada ×
  combustível da versão × ano-modelo (0 km incluso), a mesma unidade
  das URLs `/preco/...`. Preço zero (a FIPE publicou R$ 0 em
  2012-09 para a ADLY ATV 100) conta como sem preço nos dois meses,
  em todo o relatório: um 0 km que passa a R$ 0 entra em
  `zero_km_removed`.
- **Maiores altas e quedas**: variação = (preço do mês − preço do mês
  anterior) ÷ preço do mês anterior, só para páginas precificadas nos
  dois meses. Cada versão aparece no máximo uma vez por lista, no
  ano-modelo que mais variou; empate → ano mais novo. Não há filtro de
  "anomalia": de 2022 a 2026 nenhuma variação de 15% ou mais se
  desfez no mês seguinte — saltos grandes são reprecificações da FIPE
  que persistem, e a lista os mostra como a FIPE os publicou.
- **Novas versões** (`new_versions`): versões publicadas pela FIPE
  pela primeira vez no mês, com os anos em que aparecem (quase sempre
  0 km + ano-modelo corrente).
- **Saíram do 0 km** (`zero_km_removed`): versões que tinham preço 0 km
  no mês anterior e não têm mais — a FIPE deixou de cotá-las como
  novas (em ~2% dos casos o preço 0 km volta depois). A FIPE quase
  nunca remove uma versão inteira (46 vezes em toda a série, nenhuma
  desde 2024-10): os anos-modelo seguem precificados.

Sem `year`/`month`, usa o mês mais recente. Há relatório para todo
mês de 2010-04 em diante cujo mês civil anterior está na base; fora
disso, `404`. A FIPE publicou as tabelas de 2001 a 2005 depois da de
2010-03, com números de referência (`fipe_id`) maiores; até 2010-03,
"primeira aparição" (menor `fipe_id`) deixa de significar primeira no
tempo. Lacunas na numeração da FIPE (2017-03 é 207, 2017-04 é 211)
não importam: o mês comparado é sempre o mês civil anterior. A API
guarda em memória os preços dos últimos meses lidos (até 2 minutos):
~20-35 ms por resposta, ~120-180 ms quando precisa lê-los do banco.

## Query parameters

- `year` integer
- `month` integer
- `vehicle_type` 'carro' | 'moto' | 'caminhao'
- `limit` integer

## Response `200`

Relatório do mês.

- GetMonthlyReportResponse
  - `data` MonthlyReport, required
    - `ref_year` integer, required
    - `ref_month` integer, required
    - `previous_ref_year` integer, required: Mês comparado (sempre o mês civil anterior).
    - `previous_ref_month` integer, required
    - `sections` MonthlyReportSection[], required: Uma por tipo de veículo, na ordem carro, moto, caminhão.
      - `vehicle_type` 'carro' | 'moto' | 'caminhão', required
      - `summary` MonthlyMarketSummary, required
        - `priced_count` integer, required: Páginas de veículo precificadas no mês.
        - `compared_count` integer, required: Das quais também precificadas no mês anterior (= up + down + unchanged).
        - `up_count` integer, required
        - `down_count` integer, required
        - `unchanged_count` integer, required
        - `median_change_pct` number, float, nullable: Variação mediana das páginas comparadas (fração), sem ponderação. Nula quando nenhuma compara.
      - `risers` PriceMover[], required: Maiores altas, decrescente.
        - `version` RankedVersion, required: Uma versão FIPE nas listas de ranking. Com o ano, forma a URL da página de veículo `/preco/<make_slug>/<model_slug>/<ano>/<fuel_acronym>`; `brand_*`/`family_*` apontam para os hubs (mesma derivação de `/v1/brands`).
          - `model_name` string, required
          - `make_slug` string, required
          - `model_slug` string, required
          - `fuel_acronym` string, required
          - `fuel_name` string, required
          - `fipe_code` string, required
          - `vehicle_type` string, required
          - `brand_slug` string, required
          - `brand_name` string, required
          - `family_slug` string, required
          - `family_name` string, required
        - `year` YearOption, required: Representa um ano disponível para um modelo. Cada opção é auto-descritiva: `value` é o seletor canônico que pode ser enviado diretamente em `/v1/prices?year=<value>`.
          - `value` string, required: Seletor canônico do ano. `"2020"` para um ano-modelo, `"zero"` para um veículo 0km/novo. Use este valor em `year=` nos endpoints de preço.
          - `is_zero_km` boolean, required: `true` quando a opção é o veículo 0km/novo (`value == "zero"`); `false` para um ano-modelo concreto. Discriminador para ordenar e rotular sem precisar interpretar `value`.
        - `previous_price_cents` integer, required
        - `previous_formatted_price` string, required
        - `price_cents` integer, required
        - `formatted_price` string, required
        - `change_pct` number, float, required: (preço − anterior) ÷ anterior, em fração (`0.182` = +18,2%).
      - `fallers` PriceMover[], required: Maiores quedas, da mais forte.
        - `version` RankedVersion, required: Uma versão FIPE nas listas de ranking. Com o ano, forma a URL da página de veículo `/preco/<make_slug>/<model_slug>/<ano>/<fuel_acronym>`; `brand_*`/`family_*` apontam para os hubs (mesma derivação de `/v1/brands`).
          - `model_name` string, required
          - `make_slug` string, required
          - `model_slug` string, required
          - `fuel_acronym` string, required
          - `fuel_name` string, required
          - `fipe_code` string, required
          - `vehicle_type` string, required
          - `brand_slug` string, required
          - `brand_name` string, required
          - `family_slug` string, required
          - `family_name` string, required
        - `year` YearOption, required: Representa um ano disponível para um modelo. Cada opção é auto-descritiva: `value` é o seletor canônico que pode ser enviado diretamente em `/v1/prices?year=<value>`.
          - `value` string, required: Seletor canônico do ano. `"2020"` para um ano-modelo, `"zero"` para um veículo 0km/novo. Use este valor em `year=` nos endpoints de preço.
          - `is_zero_km` boolean, required: `true` quando a opção é o veículo 0km/novo (`value == "zero"`); `false` para um ano-modelo concreto. Discriminador para ordenar e rotular sem precisar interpretar `value`.
        - `previous_price_cents` integer, required
        - `previous_formatted_price` string, required
        - `price_cents` integer, required
        - `formatted_price` string, required
        - `change_pct` number, float, required: (preço − anterior) ÷ anterior, em fração (`0.182` = +18,2%).
      - `new_versions` VersionLifecycle[], required: Versões publicadas pela primeira vez no mês, por marca e nome.
        - `version` RankedVersion, required: Uma versão FIPE nas listas de ranking. Com o ano, forma a URL da página de veículo `/preco/<make_slug>/<model_slug>/<ano>/<fuel_acronym>`; `brand_*`/`family_*` apontam para os hubs (mesma derivação de `/v1/brands`).
          - `model_name` string, required
          - `make_slug` string, required
          - `model_slug` string, required
          - `fuel_acronym` string, required
          - `fuel_name` string, required
          - `fipe_code` string, required
          - `vehicle_type` string, required
          - `brand_slug` string, required
          - `brand_name` string, required
          - `family_slug` string, required
          - `family_name` string, required
        - `years` YearOption[], required: `new_versions`: anos em que a versão tem preço no mês (0 km primeiro). `zero_km_removed`: anos-modelo ainda precificados no mês (suas páginas de veículo); vazio se só existia o 0 km.
          - `value` string, required: Seletor canônico do ano. `"2020"` para um ano-modelo, `"zero"` para um veículo 0km/novo. Use este valor em `year=` nos endpoints de preço.
          - `is_zero_km` boolean, required: `true` quando a opção é o veículo 0km/novo (`value == "zero"`); `false` para um ano-modelo concreto. Discriminador para ordenar e rotular sem precisar interpretar `value`.
        - `price_cents` integer, required: `new_versions`: preço do ano mais novo (0 km quando houver). `zero_km_removed`: último preço 0 km (mês anterior).
        - `formatted_price` string, required
      - `zero_km_removed` VersionLifecycle[], required: Versões que perderam o preço 0 km no mês, por marca e nome.
        - `version` RankedVersion, required: Uma versão FIPE nas listas de ranking. Com o ano, forma a URL da página de veículo `/preco/<make_slug>/<model_slug>/<ano>/<fuel_acronym>`; `brand_*`/`family_*` apontam para os hubs (mesma derivação de `/v1/brands`).
          - `model_name` string, required
          - `make_slug` string, required
          - `model_slug` string, required
          - `fuel_acronym` string, required
          - `fuel_name` string, required
          - `fipe_code` string, required
          - `vehicle_type` string, required
          - `brand_slug` string, required
          - `brand_name` string, required
          - `family_slug` string, required
          - `family_name` string, required
        - `years` YearOption[], required: `new_versions`: anos em que a versão tem preço no mês (0 km primeiro). `zero_km_removed`: anos-modelo ainda precificados no mês (suas páginas de veículo); vazio se só existia o 0 km.
          - `value` string, required: Seletor canônico do ano. `"2020"` para um ano-modelo, `"zero"` para um veículo 0km/novo. Use este valor em `year=` nos endpoints de preço.
          - `is_zero_km` boolean, required: `true` quando a opção é o veículo 0km/novo (`value == "zero"`); `false` para um ano-modelo concreto. Discriminador para ordenar e rotular sem precisar interpretar `value`.
        - `price_cents` integer, required: `new_versions`: preço do ano mais novo (0 km quando houver). `zero_km_removed`: último preço 0 km (mês anterior).
        - `formatted_price` string, required

## Other responses

- `400`: Erro de validação (400). Usado para TODOS os erros de validação — não há 422.
- `404`: Recurso não encontrado (404).
- `500`: Erro interno do servidor (500).

---

[API](https://skmtc.dev/fipex/apis/api-fipex.md) · [All operations](https://skmtc.dev/fipex/apis/api-fipex/llms.txt) · [OpenAPI document](https://skmtc.dev/fipex/apis/api-fipex/revisions/800eab7da73d?raw)
