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.
// 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.
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 }
}configThe 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.
specsOEM fluids & service points
Real viscosity, capacities, coolant type, lug-nut torque — the numbers a tech needs, not “takes about 5 quarts.”
tiresFull OEM tire & wheel package
Sizes, pressures, load index, speed rating, run-flat/staggered flags, and battery CCA — the whole fitment.
services[].parts[].priceExact-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[].laborReal-world labor hours
Labor measured from completed jobs (with sample size and p25–p75 spread on /v0/labor) — not just a book rate.
// 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.
| Capability | Basic VIN decoders | Parts catalogs | OtoIndex |
|---|---|---|---|
| VIN / YMMT identity decode | partial | ||
| 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 + MSRP | partial | ||
| Real-world labor times (measured from jobs) | |||
| Sanitized per-VIN service history | partial | ||
| 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.
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" }
// COVERAGE
A dataset that grows
with every job.
// 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_…'// 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.