Checking recalls before a vehicle or part moves onAll articles

Checking recalls before a vehicle or part moves on

A recalled component in stock is a liability risk that can be checked before selling. This case shows the match for one vehicle and for up to a hundred stock positions per call; a larger inventory is spread across several calls.

Published: 2026-09-12Reading time: 5 mintapinomahub API & workflows
API & processesVINAPIWorkshop

A vehicle is due to be sold, a part is due to ship — and nobody knows whether a safety measure is pending for it. In practice this only surfaces when a customer asks or a workshop refuses to release the vehicle. By then the transaction has progressed, and unwinding it costs more than the check would have.

Spot recalls before the vehicle or the part moves onInput: a vehicle identification number, or a list of part numbers from stock 1. Identify the vehicle (GET /vin/{vin}/vehicle): Series and build period — the reference points of any recall match 2. Match the vehicle (GET /recalls/vehicles/{vin}): Matches from the official registers, plus the data status per register 3. Match the stock (POST /recalls/parts): The same check for a list of part numbers at once Output: a documented decision to sell, to inspect or to block No match is not an error but a result with a data status — and not a sales clearance.Spot recalls before the vehicle or the part moves onInput: a vehicle identification number, or a list of part numbers from stock01Identify the vehicleGET /vin/{vin}/vehicleSeries and build period — the reference points of any recall match02Match the vehicleGET /recalls/vehicles/{vin}Matches from the official registers, plus the data status per register03Match the stockPOST /recalls/partsThe same check for a list of part numbers at onceOutput: a documented decision to sell, to inspect or to blockNo match is not an error but a result with a data status — and not a sales clearance.
Determine the series first, then match vehicle and stock. The bulk call replaces one query per line.

The match runs by series against the recall and safety measures of the official registers. What matters is less the individual hit than the declared data status: an answer without a status is not an answer but a snapshot with no shelf life.

SurfaceRoles
HubVehicle trading, Workshop, Fleet and leasing, Parts trading

What this case requires

  • A vehicle identification number for the vehicle match. It determines series and build period — the reference points the match runs against.
  • A list of part numbers for the stock match. The bulk call is meant for inventories, not for single cases in a loop.
  • Somewhere to store the data status alongside. Without it you cannot later say how old an answer is.
  • A decision on what a hit triggers. Sales block, notice to the customer or inspection order to the workshop — the query does not make that call for you.
  • The entitlement to query the vehicle. With the call you confirm that you are the keeper, the owner or demonstrably authorised or otherwise legally entitled, and that you use the identification number solely for the stated permissible purpose.

The sequence

The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.

The call chain of this use case
StageCallWhat exists afterwards
Identify the vehicleGET /vin/{vin}/vehicleSeries and build period — the reference points of any recall match
Match the vehicleGET /recalls/vehicles/{vin}Matches from the official registers, plus the data status per register
Match the stockPOST /recalls/partsThe same check for a list of part numbers at once

Why each stage is needed

  1. Determine the vehicle. GET /vin/{vin}/vehicle returns series and build period. This stage comes first because a recall almost always attaches to a series and a period, not to one individual vehicle.
  2. Match the vehicle. GET /recalls/vehicles/{vin} returns the hits from the official registers, together with the data status per register. No hit is a valid result and not an error — it means nothing was on record as of the stated status.
  3. Match the stock. POST /recalls/parts checks up to a hundred entries in positions in one call — each with an oeNumber, optionally your own reference and optionally the vehicle. For an inventory this is the only workable route: anyone querying line by line never checks the whole stock in practice.
Check up to 100 stock positions in one call
curl -X POST \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{"positions":[{"oeNumber":"4H0907801","reference":"lager-A12"},{"oeNumber":"8K0959455K","reference":"lager-B07"}]}' \
  'https://api.tapinomahub.com/recalls/parts'

What you end up with

What remains is a documented decision: sell, have it inspected or block — together with the data status it rests on. That is the difference between “we knew nothing” and “we checked as of this status”.

Where to find this in the documentation

The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-hub). All use cases arranged by surface and role: overview of the use cases.

Frequently asked

Does no hit mean the vehicle is safe?

No. It means no measure was on record as of the declared data status. Store that status alongside, and check again after a long standing time.

Can I run the stock match regularly?

Yes, and that is exactly what the bulk call is for. A regular run across the whole inventory is workable, split across several calls beyond a hundred positions; one query per line in a loop is not.

What do I do about a hit on a part already sold?

That is a commercial and legal decision, not a technical one. The query delivers the finding with its data status; how you inform the customer follows from your own obligations.