---
title: "Search by rim modifications"
method: GET
path: "/v2/by_rim/search/modifications/"
tags: ["Search By Rim"]
---

# Search by rim modifications

`GET /v2/by_rim/search/modifications/`

## Request

- Base URL: `https://api.wheel-size.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.wheel-size.com/v2/by_rim/search/modifications/`
- Auth: API key in query parameter `user_key`
- TypeScript: <https://skmtc.dev/wheel-size/apis/wheel-fitment-api/docs/v2/by_rim/search/modifications/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns detailed information about vehicle modifications with specified rim parameters.

## Query parameters

- `make` string, required
- `model` string, required
- `bolt_pattern` string, required
- `rim_diameter` number, double
- `rim_diameter_min` number, double
- `rim_diameter_max` number, double
- `rim_width` number, double
- `rim_width_min` number, double
- `rim_width_max` number, double
- `rim_offset` number, double
- `rim_offset_min` number, double
- `rim_offset_max` number, double
- `cb` number, double
- `cb_min` number, double
- `cb_max` number, double
- `region` string[]
- `mode` 'both' | 'front_only' | 'rear_only'
- `configurator` boolean
- `ordering` string
- `limit` integer
- `offset` integer

## Response `200`

- SearchByRimModificationReportOutput
  - `data` SearchParamsModificationsData[], required
    - `slug` string, required
    - `name` string, required: Trim name. It may be empty for models made for the Japanese region. (e.g. `2.4i`, can be __*`null`*__)
    - `body` string, required: Body name. It is widespread in the Japanese region. (e.g. `DBA-GF8W`, can be __*`null`*__)
    - `trim` string, required: Trim name. It may be empty for models made for the Japanese region. (e.g. `2.4i`, can be __*`null`*__)
    - `trim_attributes` string, required: Trim attributes (e.g. `AWD`, can be __*`empty array`*__)
    - `trim_body_types` string, required: Trim body types (e.g. `Convertible`, can be __*`empty array`*__)
    - `trim_levels` string, required: Trim Levels (e.g. `EX-L, Touring, Executive`, can be __*`empty array`*__)
    - `model` TireCar, required
      - `make` TireMake, required
        - `slug` string, required
        - `name` string, required
        - `name_en` string, required: Original english name. Use it along with _**`lang`**_ query parameter
      - `slug` string, required
      - `name` string, required
      - `name_en` string, required: Original english name. Use it along with _**`lang`**_ query parameter
    - `generation` Generation, required
      - `slug` string, required
      - `name` string, required
      - `platform` string, required
      - `start` integer, required
      - `end` integer, required
      - `bodies` Body[], required
        - `slug` string, required
        - `name` string, required
        - `image` string, required: Body image (can be __*`null`*__)
    - `start_year` integer, required
    - `end_year` integer, required
    - `engine` Engine, required: The combustion engine, and only the combustion engine. WHEEL-7496 deliberately did NOT extend this object. Everything about electrification, axle motors and combined system output lives in `PowertrainSerializer` below, because none of it is an engine property — AutoCare's VCdb draws the same line, and for the same reason: a Sonata Hybrid and a Sonata SE share one EngineBase (identical 2.4L block), so "hybrid-ness" cannot live in the engine structure at all. `power` stays here, and stays the system total, because it is legacy public surface that integrated clients depend on (WHEEL-7403 documented it rather than moving it).
      - `fuel` string: Fuel — the legacy composite value, unchanged since before the powertrain block existed. `Flex-Fuel`, `Petrol-LPG` and `Hybrid` are composites: they answer two questions at once. `powertrain.primary_fuel` and `powertrain.secondary_fuel` decompose them, and carry the `code` the `fuel` filter accepts. (e.g. `Petrol`, can be __*`null`*__)
      - `capacity` string, required: Engine capacity (e.g. `3.5`, can be __*`null`*__)
      - `type` string, required: Engine type (e.g. `V8`, can be __*`null`*__)
      - `power` Power, required
        - `kW` number, double: kW - Kilowatts (e.g. `882.6`)
        - `PS` integer: PS - Metric horsepower (e.g. `1200`)
        - `hp` integer: hp - Mechanical horsepower (e.g. `1184`)
      - `code` string, required: Engine code (e.g. `D5244T`, can be __*`null`*__)
    - `powertrain` Powertrain, required: Everything about how the vehicle is propelled that is NOT the engine. Sibling to `engine`, not nested in it. See development/docs/vcdb-absence-vocabulary.md for the N/A / N/R / U/K codes.
      - `combustion_engine` 'present' | 'not_applicable' | 'unknown', required: * `present` - Has an internal-combustion engine * `not_applicable` - Not applicable — engine-less (BEV/FCEV) * `unknown` - Unknown — neither electrification level nor fuel is recorded
      - `electrification_level` 'mild_hybrid' | 'full_hybrid' | 'phev' | 'erev' | 'bev' | 'fcev' | 'not_applicable' | 'not_reported' | 'unknown', required: * `mild_hybrid` - MHEV (Mild hybrid — 48V/12V ISG, ICE-driven) * `full_hybrid` - HEV (Full hybrid — self-charging, non-plug-in) * `phev` - PHEV (Plug-in hybrid) * `erev` - EREV (Range-extender — series hybrid, e-POWER) * `bev` - BEV (Battery electric) * `fcev` - FCEV (Fuel cell electric) * `not_applicable` - Not applicable — combustion only * `not_reported` - Not reported — electrified, tier not recorded * `unknown` - Unknown — neither tier nor fuel recorded
      - `primary_fuel` FuelRef, required: A fuel, or a reason there isn't one — always {code, title}. `code` is `Fuel.code`, the same vocabulary `?fuel=` accepts, so a value read here can be pasted straight back into a query. For an absence it carries the block's absence enum (`not_applicable` / `not_reported` / `unknown`) instead, which keeps the shape uniform: a client switches on `.code` once rather than testing whether the field is an object or a null. ⚠ `engine.fuel` deliberately does NOT use this shape. It is frozen legacy surface and stays the plain string it has always been (`"Natural gas"`), while this reports the same fuel as `cng`. The two spellings coexist on purpose — see development/docs/vcdb-absence-vocabulary.md.
        - `code` string, required: Machine key. Accepted by the `fuel` filter, so this round-trips: `?fuel=cng`. For an absence, one of `not_applicable`, `not_reported`, `unknown`. (e.g. `cng`, can be __*`null`*__)
        - `title` string, required: Human-readable label, translated with the `lang` parameter. (e.g. `Compressed Natural Gas (CNG)`, can be __*`null`*__)
      - `secondary_fuel` FuelRef, required: A fuel, or a reason there isn't one — always {code, title}. `code` is `Fuel.code`, the same vocabulary `?fuel=` accepts, so a value read here can be pasted straight back into a query. For an absence it carries the block's absence enum (`not_applicable` / `not_reported` / `unknown`) instead, which keeps the shape uniform: a client switches on `.code` once rather than testing whether the field is an object or a null. ⚠ `engine.fuel` deliberately does NOT use this shape. It is frozen legacy surface and stays the plain string it has always been (`"Natural gas"`), while this reports the same fuel as `cng`. The two spellings coexist on purpose — see development/docs/vcdb-absence-vocabulary.md.
        - `code` string, required: Machine key. Accepted by the `fuel` filter, so this round-trips: `?fuel=cng`. For an absence, one of `not_applicable`, `not_reported`, `unknown`. (e.g. `cng`, can be __*`null`*__)
        - `title` string, required: Human-readable label, translated with the `lang` parameter. (e.g. `Compressed Natural Gas (CNG)`, can be __*`null`*__)
      - `engine_power` EnginePower, required
        - `kW` number, double: kW - Kilowatts (e.g. `882.6`)
        - `PS` integer: PS - Metric horsepower (e.g. `1200`)
        - `hp` integer: hp - Mechanical horsepower (e.g. `1184`)
      - `system_power` SystemPower, required
        - `kW` number, double: kW - Kilowatts (e.g. `882.6`)
        - `PS` integer: PS - Metric horsepower (e.g. `1200`)
        - `hp` integer: hp - Mechanical horsepower (e.g. `1184`)
      - `engine_power_secondary` EngineSecondaryPower, required
        - `kW` number, double: kW - Kilowatts (e.g. `882.6`)
        - `PS` integer: PS - Metric horsepower (e.g. `1200`)
        - `hp` integer: hp - Mechanical horsepower (e.g. `1184`)
      - `motors` Motor[], required: Electric motors, one entry per driven axle. Empty for a vehicle with no electric drive. ⚠ An empty array means **no motors recorded**, which for a combustion-only vehicle (`electrification_level: "not_applicable"`) is correct and final, but for an electrified one means the motor data has not been entered yet — read `electrification_level` to tell the two apart.
        - `axle` string, required: Which axle this entry describes. ⚠ Not always a literal axle. Upstream, `front` is also where an **aggregated figure with no front/rear split** is recorded, and where a mild hybrid's belt starter-generator (ISG) goes — an ISG sits on the engine, not on an axle. Read `front` as "this motor, or these motors, or the combined motor figure" rather than as a wheel position. (e.g. `front`, can be __*`null`*__)
        - `power` MotorPower, required
          - `kW` number, double: kW - Kilowatts (e.g. `882.6`)
          - `PS` integer: PS - Metric horsepower (e.g. `1200`)
          - `hp` integer: hp - Mechanical horsepower (e.g. `1184`)
        - `code` string, nullable: The manufacturer's model code for this axle's motor(s), comma-separated when the axle carries two. Mild-hybrid starter-generator codes belong here. (e.g. `TZ220XYL`, can be __*`null`*__)
    - `regions` string, required
  - `meta` SearchParamsModificationsMeta, required
    - `count` integer, required: number of make model year modifications

## Changes

- **2026-09-15** `238cef5cac43`: 1 info
  - added the required property `data/items/powertrain` to the response with the `200` status

[Operation history](https://skmtc.dev/wheel-size/apis/wheel-fitment-api/changes/v2/by_rim/search/modifications/get.md)

---

[API](https://skmtc.dev/wheel-size/apis/wheel-fitment-api.md) - [All operations](https://skmtc.dev/wheel-size/apis/wheel-fitment-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wheel-size/apis/wheel-fitment-api/revisions/0283a9f8acf0?raw)
