OEM-grade vehicle data · by VIN, year/make/model, or config_key

Real car data,
as an API.

OEM fluid capacities, exact-fit part numbers with live prices, service intervals, and labor measured from real jobs — the numbers you need to quote and fix a car, ready to use. Not another VIN decoder.

GET/v1/fluids?vin=2HKRW2H85KH…
{ engine_oil: "0W-20", capacity_qt: 4.4, drain_torque: "29 lb-ft", oil_filter: "15400-PLM-A02" }
VIN · YMMTthree ways to identify a vehicle.
9 groupsfluids, parts, labor, tires, intervals…
exact-fitOEM part numbers, not universal guesses.
free samplestry every endpoint — no signup, no card.

// WHAT YOU CAN PULL

Everything a shop needs
to quote a job.

Identify a vehicle once, then pull any group on its own or all at once — clean JSON, ready to drop into a quote, a work order, or your app.

  ┌─────┐
  │ OIL │
  └──┬──┘
     o
      
   ── ──

Fluids & capacities

Engine oil viscosity + capacity, coolant, transmission, brake, power-steering and diff/transfer-case fluids — real OEM figures, not 'takes about 5 quarts'.

 ·+·  ·+·
 +(|)++(|)+
 ·+·  ·+·
 $ 48.20 ▲

Parts & live prices

Exact-fit OEM part numbers grouped per service — role, position, quantity, and the current price for each.

┌─┬─┬─┬─┬─┐
│0│0│7│4│5│
└─┴─┴─┴─┴─┘
 miles·x1k

OEM service intervals

The full factory maintenance schedule — every service by miles and months, ready to put on a timeline.

         ↺
  ╟▓╢━━━╢⬡

  1.2 hrs

Empirical labor

Labor hours measured from completed jobs — sample size and p25–p75 spread — with a tier-model estimate filling the rest.

  ╭─────╮
  │  │  │
  │ │◎│ │
  ╰─────╯
  225/65R17

Tires & wheels

Full OEM fitment: front/rear sizes, recommended pressures, load index, speed rating, run-flat and staggered flags, plus battery CCA.

 █║▌│║▌║│█▌║│█
 ▲
 VIN ▸ config

VIN & config decode

Resolve a VIN, year/make/model, or config_key to its canonical identity and exact engine — the lightest lookup in the API.

// WHAT YOU GET BACK

Not a VIN blob.
A quote, ready to use.

One call returns clean, grouped, consistent JSON — the same shape every time. Here's a real response, annotated. Run it yourself on free sample data, no key.

response.json
GET /v1/vehicle?vin=2HKRW2H85KH612345&include=fluids,parts,tires

{
  "object": "vehicle",
  "config": {
    "config_key": "2019_honda_cr_v_ex_l15be",
    "year": 2019, "make": "Honda", "model": "CR-V", "trim": "EX",
    "engine": { "code": "L15BE", "displacement_l": 1.5, "cylinders": 4 },
    "drivetrain": "4WD", "transmission": "CVT"
  },
  "specs": [
    { "field": "oil_viscosity",     "value": "0W-20" },
    { "field": "oil_capacity_qts",  "value": "3.7" },
    { "field": "coolant_type",      "value": "Honda Type 2" },
    { "field": "lug_nut_torque_ft_lbs", "value": "80" }
  ],
  "tires": {
    "front_size": "235/60R18", "pressure_front_psi": 33,
    "load_index": 103, "speed_rating": "H", "battery_cca": 400
  },
  "services": [
    {
      "service": "front-brake-pads",
      "parts": [
        { "oem_part_number": "45022-TLA-A01",
          "price": { "amount": 62.40, "msrp": 84.13 } }
      ],
      "labor": { "hours": 1.1 }
    }
  ],
  "meta": { "generated_at": 1787174247134 }
}
config

The exact vehicle — not a guess

Resolved to a config_key with the real engine, drivetrain and transmission. A VIN or year/make/model maps to one precise configuration.

specs

OEM fluids & service points

Real viscosity, capacities, coolant type, lug-nut torque — the numbers a tech needs, not “takes about 5 quarts.”

tires

Full OEM tire & wheel package

Sizes, pressures, load index, speed rating, run-flat/staggered flags, and battery CCA — the whole fitment.

services[].parts[].price

Exact-fit parts with live prices

The OEM part number that actually fits, each with a current scraped price and MSRP — priced, ready to quote.

services[].labor

Real-world labor hours

Labor measured from completed jobs (with sample size and p25–p75 spread on /v0/labor) — not just a book rate.

Run this response live

// WHY WE'RE DIFFERENT

What others don't give you.

To quote and fix a car you'd normally stitch a VIN decoder to a parts catalog and still be missing fluids and labor. OtoIndex is the whole picture, in one API.

CapabilityBasic VIN decodersParts catalogsOtoIndex
VIN / YMMT identity decodepartial
Config-level precision (exact engine & trim)partial
OEM fluid types & exact capacities
OEM service intervals (miles & months)partial
Exact-fit OEM parts with live prices + MSRPpartial
Real-world labor times (measured from jobs)
Sanitized per-VIN service historypartial
Whole vehicle in one call, one JSON shape

Maintenance depth, not just identity

Most APIs stop at decoding a VIN. We go all the way to the numbers you act on — exact fluid capacities, OEM intervals, and service points.

Labor measured from real jobs

Empirical labor hours with sample size and a p25–p75 spread, pulled from completed work — a data set nobody else exposes as an API.

Parts that actually fit, priced now

Exact-fit OEM part numbers per service, each with a current price and MSRP — so a response is a quote, not a research project.

One clean, versioned shape

Identity, specs, tires, intervals, parts + labor, and history come back keyed the same way every time. No blob parsing, no surprises.

// HOW IT WORKS

Three calls from VIN
to a bookable quote.

identify.sh
1curl '/v1/decode?vin=2HKRW2H85KH612345' \
2 -H 'Authorization: Bearer otp_live_…'
3# → { config_key: "2019_honda_cr_v_ex_l15be",
4# engine: "1.5L L15BE" }
200 OK · clean JSON

// COVERAGE

A dataset that grows
with every job.

All systems operational|
0+
Makes covered
domestic, import & EV
0%
Median fill rate
fields populated per config
0
Data groups
one call, or à la carte
0ms
Median response
cache-first edge reads
Live request feed
nowGET /v1/fluids2019 CR-V EX20023ms
1sGET /v1/parts2021 Camry LE20031ms
2sGET /v0/labor2018 F-150 XLT20018ms
3sGET /v1/decodeVIN WBA…20012ms

// FOR DEVELOPERS

A REST API that
gets out of your way.

Plain HTTP GETs, an OpenAPI 3.1 spec, and a live try-it console. No SDK required — call it from any stack, or generate one from the spec.

One key, every group

Fluids, parts, labor, tires, intervals and identity — all behind a single bearer token.

Identify any way

VIN, year/make/model, or config_key. Ambiguous YMMT returns the candidate configs to choose from.

Grouped or full

Pull one group — fluids, parts, tires — or the whole vehicle in a single call, field-selectable with include.

Free to try, no signup

Run every endpoint on public sample data in your browser or terminal — no key required.

1curl 'https://api.otoindex.com/v1/fluids?config_key=2019_honda_cr_v_ex_l15be' \
2 -H 'Authorization: Bearer otp_live_…'
otp_live_… · all read scopes · 60 req/min

// curl /api/sample/v1/vehicle

Try it now. Build on it next.

Run every endpoint on free sample data in your browser or your terminal — no signup, no card. Ready for live data across any vehicle? Request early access.