A damaged vehicle is in the yard, the seller wants a price, and the decision happens in minutes. Relying on experience alone means overpaying on unusual series and leaving money behind on ordinary ones. The vehicle route of the tapinomahub API starts exactly where the buyer starts: at the vehicle identification number — and ends at a traceable figure with an order of work for dismantling.
Stage 1: make the vehicle unambiguous
GET /vin/{vin}/vehicle matches the VIN against the enabled source. includeEquipments, includeColors and includeTechnical control how deep the answer goes; country sets the market context and provider the contractually agreed source. A successful match contains a stable tapiId — the reference by which every later call means the same vehicle. The service description is in Compare vehicle data by VIN.
curl \ -H 'X-Api-Key: <API_KEY>' \ 'https://api.tapinomahub.com/vin/WVWZZZ1KZAW000000/vehicle?includeEquipments=true&includeTechnical=true'
| Field | Content | Use |
|---|---|---|
tapiId | Stable vehicle reference after a successful match | The bracket around parts list, evaluation and vehicle record |
mainType, subType, constructionPeriod | Series, version and production period | The basis of every usage list and every listing statement |
kTypes, natCodes | Known type keys of the vehicle type | Connection to TecDoc structures and catalogue systems |
kba.hsn, kba.tsn | German type approval keys where available | Cross-check with HSN/TSN from the registration document |
engine.codes, transmission.codes | Engine and transmission codes of the type | Separates assemblies that look identical from outside |
equipmentsCategorized, manufacturerOrderCodes | Equipment by category, order codes with matched and unmatched | Evidence for value-driving equipment such as matrix lighting or driver assistance |
incomplete, dates.production | Flag for an incomplete answer, production date | Decide whether the data is good enough for an evaluation |
Stage 2: the vehicle's parts list
GET /vin/{vin}/parts returns the OE positions found: per part number and numberUnformatted, name and nameAddition, category, manufacturer, amount, price, tapiGenArt and the required vdi field. vdi contains confirmed full VDI 4081 codes and remains present as [] when no valid mapping is available. More important than the list itself is how it is qualified: matchLevel states how reliable the assignment is, and missingCategories states what is absent. A non-empty missingCategories explicitly means the parts list is incomplete. Details in Compare parts assignments by VIN.
| Value | Meaning | Consequence for use |
|---|---|---|
vehicle_specific_best_available | Vehicle-specific assignment at the best available quality | Sound enough for evaluation and dismantling planning |
vehicle_specific_unverified | Vehicle-specific but not cross-checked | Usable for internal planning; check individual positions before selling |
vehicle_type_candidates | Candidates at vehicle type level, not the individual vehicle | Do not use as a fitment statement — here the part on the vehicle decides |
Handling the asynchronous job properly
The parts list and the evaluation can take longer than an HTTP response should wait. The API therefore either answers 200 immediately or accepts the job with 202 — including Location, Retry-After and a jobId. That is the documented normal case, not a malfunction.
- Handle both answers. An integration that only knows
200works in testing and fails in production.202suppliesjobId,statusUrl,statusandretryAfterSeconds. - Poll at the stated interval, not in a tight loop.
GET /vin/parts/jobs/{jobId}andGET /vin/economic-evaluation/jobs/{jobId}returnqueued,running,succeededorfailed. - On `succeeded` the result is in `result` — the same structure as a direct
200response. Your code therefore needs only one parsing path. - On `failed`, `error.code` distinguishes
vehicle_not_found— an empty business finding — fromvin_service_unavailable, a technical outage. Only the second justifies a retry. - The job reference belongs in the record. Lose it and the result cannot be collected; an unknown job ends in
404 vin_parts_job_not_found.
# 202 Accepted: {"jobId":"8f1c…","status":"queued","retryAfterSeconds":5,…}
curl \
-H 'X-Api-Key: <API_KEY>' \
'https://api.tapinomahub.com/vin/parts/jobs/8f1c2f9e-2a44-4b7f-9a1e-6d4b8f0c3a21'Stage 3: the economic evaluation
GET /vin/{vin}/economic-evaluation combines the parts list with market prices and calculates three things: the vehicle's revenue potential, an order of work for dismantling and a purchase recommendation. The response discloses its assumptions so that every figure can be recalculated — see Create an economic evaluation by VIN.
| Parameter | Meaning | Range and default |
|---|---|---|
condition | The condition the price valuation is based on | used or new |
recoveryRate | Share of the revenue potential actually achieved on sale | 0.05 to 1; default 0.5 |
costPerPart | Assumed cost per priced part for removal, storage and shipping, in EUR | 0 to 1000; default 0 |
maxPricedParts | Upper limit of parts included in the evaluation | Default and maximum 100 |
- `coverage` makes the data situation visible:
totalParts,excludedIrrelevant,relevantParts,selectedParts,pricedPartsandunpricedParts. A highunpricedPartsis a warning sign, not a detail. - `revenuePotential` gives
min,averageandmax. The range stays fully visible — it is not compressed into one number. - `purchaseRecommendation.goodPurchasePriceEur` is the figure for the conversation in the yard:
recoveryRatetimes the minimum, less the assumed cost per priced part. - `assumptions.priceBasis` reports
min. The result therefore documents the basis the recommendation rests on. - `parts[]` carries
rank, number, name, category andpricingwithmin,average,max,confidenceandevaluatedAt. The amounts inpricingare per unit. - `amount` comes unchanged from the provider's parts list, is unverified and enters no calculation. The arithmetic uses one unit per part.
Billing: the monthly VIN bundle
- VIN Vehicle, VIN Parts and VIN Cart Check form the bundle `VIN_MONTHLY_LOOKUP`. Billing and repetitions are governed exclusively by the agreed terms. Cache or result reuse does not change customer billing.
- The `X-Tapinoma-Billing-Bundle` header is set when a call falls under that cap.
X-Tapinoma-Billing-Sourcenames the billing decision alongside it. - A plan applies per endpoint key, not across the board. If no plan covers the call or the monthly quota is used up, the balance is charged; if that is not enough, the API answers
402 insufficient_credits. - `404 vin_not_resolvable` marks a lookup that was not performed; its commercial treatment follows the terms shown before ordering and agreed in the contract.
- The sandbox follows the agreed terms. It uses the same base address, answers only with documented synthetic test data and behaves as described for validation, rate limits and asynchronous states — the right place to build your
202handling.
The workflow when buying
- Capture the VIN — typed, from the registration document via
POST /scanner/document/registration, or from the vehicle viaPOST /scanner/vin/extract. Seventeen characters, otherwise400 invalid_vin. - Match the vehicle and record
tapiId, thematchLevelof later calls andincompletein the record. - Request the parts list and handle
202properly. Store the job reference, poll at the stated interval. - Request the evaluation with your assumptions, not the defaults. Your business knows its recovery rate and cost per part better than any default.
- Show recommendation, range and coverage together. A figure without
coveragenext to it invites confidence the data does not support. - Plan dismantling by
rank. The first positions carry the revenue; the rest decide how long the vehicle occupies the hall. - Reconcile after selling: achieved revenue against the recommendation, priced parts against sold parts. That is how your own reliable
recoveryRatecomes about.
Limits you need to know
- An evaluation is not a price guarantee. It is indicative, it rests on market offers and assumptions, and it does not replace an inspection. No VIN lookup sees damage, mileage or completeness.
- Coverage depends on the source. Depending on manufacturer, year and market, the amount of available data differs.
incomplete,missingCategoriesandunpricedPartsare the fields that make that visible. - A VIN relates to a vehicle and can become personal data. Transmit only what you are authorised to transmit, and only what the purpose requires. Retention in your own system follows your agreement and your deletion periods.
- `vehicle_type_candidates` is not a fitment statement. At that level the list describes the vehicle type, not the individual vehicle.
- The parts list is not an inventory. It says what can be fitted in this type — not what is still fitted in this vehicle and sellable. The inspection makes that difference.
Schemas, error codes and example responses are in the developer documentation. Once the evaluated vehicle becomes individual parts, continue with From the OE number to a marketplace-ready article and, once those parts are on the bench, with From part photo to listing: the image route through the tapinomahub API.
Sources and legal references
Frequently asked
Why does the API answer 202 instead of the result?
Because the provider lookup can take longer than a response should wait. The 202 gives jobId, statusUrl and retryAfterSeconds; the result appears later in result with the same structure as a direct answer.
Does every VIN lookup cost again?
No. VIN Vehicle, VIN Parts and VIN Cart Check form a monthly bundle: per client and VIN the bundle price is charged at most once in a calendar month.
Why does the purchase recommendation rest on the minimum?
Because buying means paying before selling. assumptions.priceBasis reports min; the revenue potential stays in the response in full with min, average and max.
Is the quantity from the parts list used in the calculation?
No. amount comes unchanged and unverified from the provider's list. The arithmetic uses one unit per part so that a questionable quantity cannot multiply money.
Does the analysis replace an inspection?
No. It evaluates what the data says can be fitted. Damage, mileage, missing parts and the actual condition remain a matter of looking at the vehicle.
