- Marketplace and shop system for parts
- Software through which vehicle parts are offered and bought: marketplaces with many sellers, shop systems of individual traders or dismantlers, platforms connected by feed. It is run by a software vendor; the listings come from dismantlers, parts traders and dealerships, the buyers are workshops, fleets and private customers. Between record and search lie fields that are missing or completed by hand — that is where the API comes in.
Where data is missing in the process
A marketplace is only as good as its sellers' records, and those rarely arrive complete. What the seller does not supply, the platform has to add or leave empty — and empty fields cost visibility, see stock data for marketplaces. The typical places:
- On listing. The seller enters an OE number but no article type and no predecessor numbers. The category comes from a dropdown, and buyers search with the number on their removed part — which is often older than the one listed.
- In multilingual listings. The part designation is translated by hand per language or stays in the source language.
- In the images. Photos from the yard have busy backgrounds, and the condition sits next to them as free text that nobody assigns consistently.
- After listing. Whether an offered part is affected by a recall is checked by nobody, because the registers are not connected to the stock.
- On the buyer's side. Whether the part fits the buyer's vehicle is settled by a query or not at all — and the return arises after shipping.
What the API delivers
| Process step | Call | Result |
|---|---|---|
| Create a listing | GET /parts/oe/{oeNumber} | Normalised number, exactly one tapiGenArt, replacement chain, fitment, VDI 4081 mapping; 404 without a confirmed base match |
| Fill search fields | GET /parts/oe/{oeNumber}/seo | SEO enrichment per language and marketplace with product, content and item-specific fields |
| Translate the designation | GET /translation/translations | Exactly one part designation into the supported target languages — no titles, sentences or lists |
| Cut out an image | POST /vision/part/remove/bg | PNG with alpha or white; the pixels of the part stay unchanged; found=false when it cannot be delineated |
| Grade the condition | POST /vision/part/quality | Grade A, B or C from 1–3 photos, visual inspection only (visualOnly); gradable=false with reason |
| Check recalls | POST /recalls/parts | Up to 100 positions per call against the recall registers; per position status, measures, confidence |
| Fit in the cart | POST /vin/cart-check | Up to 30 OE positions against the buyer's VIN; per position fits, plus complete for how conclusive it is |
One process from start to finish
- The seller lists a part. Your software calls
GET /parts/oe/{oeNumber}. On200you take over the normalised number, thetapiGenArtas the basis of the category and the replacement chain into the number field — see GenArt number. On404there was no confirmed base match: the listing is still created, the fields stay empty. - Search fields and language versions.
GET /parts/oe/{oeNumber}/seosupplies product, content and item-specific fields for the language and marketplace. The part designation goes individually throughGET /translation/translations. - Prepare the images. Each seller photo runs through
POST /vision/part/remove/bg; the model only determines the outline, composition happens in code. One to three photos of the same part go toPOST /vision/part/qualityand return a grade you label as a visual inspection — see part photography. - New parts without a photo. For new parts without their own photo,
POST /vision/part/generatestarts a product-image job. The default isreferences_required; whoever choosesknowledge_onlygetsbasis=knowledgeandpartIdentityVerified=falseback and shows the image as a depiction, not as a photo. - Nightly recall run. A job sends the active stock in batches of up to 100 positions to
POST /recalls/parts, withvehicle.makeandvehicle.modelwhere known. Affected listings receive a notice and a task for the seller. - The buyer adds to the cart. If the buyer provides a VIN,
POST /vin/cart-checkchecks up to 30 positions against it —mode=typefor the vehicle type,mode=vehiclefor the specific vehicle.fits=falsewithcomplete=trueis a conclusive no;complete=falseremains an open question — see selling used parts online.
curl \ -H 'X-Api-Key: <API_KEY>' \ 'https://api.tapinomahub.com/parts/oe/5Q0919275C'
The integration
- Store the key server-side. The key in the
X-Api-Keyheader belongs in your backend's configuration — never in the browser, never in a feed, never in a seller account. The path from contract to go-live is in the documentation. - Start with one endpoint. For marketplaces that is
GET /parts/oe/{oeNumber}on listing: one call, three filled fields, immediately measurable in number search. - Define the field mapping.
tapiGenArtonto your category, the replacement chain into the number field,part.manufacturerandpart.nameinto the listing fields — and every field that returnsnullstays empty on your side. - Separate failure from empty result.
404on the OE lookup,found=falseon cut-out andgradable=falseon grading are empty results: create the listing, leave the field empty, raise a task. Only a technical error is retried. - Collect 202 responses.
POST /vin/cart-checkandPOST /vision/part/generateanswer longer runs with202,Location,Retry-Afterand a job ID. The status comes fromGET /vin/cart-check/jobs/{jobId}andGET /vision/part/generation-jobs/{jobId}respectively — at the interval ofRetry-After. - Roll out and observe. First one seller group, then all.
GET /client/usageshows which calls run how often; theX-Tapinoma-Usage-Warningheader reports before the credit runs out.
What to watch out for
- Set an Idempotency-Key. If a call runs twice after a restart, the repeat is recognised via the
Idempotency-Keyheader and reported in theX-Tapinoma-Idempotent-Replayresponse header. Exception: calls that issue a key once — after a timeout, reconcile what exists instead of creating again. - Do not fill empty fields. A
nullinpart.listPriceis a statement. Turning it into a placeholder produces the returns that eat the visibility again. - Do not show SEO content as fit. SEO enrichment creates publication copy and item specifics. A fit claim must come from the dedicated part or VIN comparison.
- Store the tapiId. Once a buyer account has matched a vehicle through a VIN flow, keep the
tapiId;GET /vehicles/{tapiId}returns the technical data as part of the previously paid VIN workflow, without VIN and without equipment. - Store results, do not query on every page view. What
GET /parts/oe/{oeNumber}returns belongs to the number in your database; every request is billed from the credit. - Never the key in the browser. The cart check also runs through your backend; the buyer's VIN never appears in a page URL. Rate limits per workspace contain a feed that relists everything each night.
- Check results before publishing. The SEO enrichment is meant for review, not for unseen publication. Use of the results lies with the customer.
What the API does not do
The API delivers cross-checks and analyses, not a data set: what is owed is the request; use and review of the results lie with you and your sellers. The price evaluation from GET /parts/oe/{oeNumber}/price is indicative and no price guarantee. The condition grade is a visual inspection, not an appraisal; a licence plate in an image leads to no keeper lookup. Vehicle data from provider 1 is not retrieved directly by third-party systems — for that there is the browser redirect via POST /vin/redirect-sessions, whose session expires after ten minutes and carries neither vehicle nor access data. And where the sources yield nothing, the field stays empty — a reference is not a fit, and a photo without a reliable finding gets no grade.
Frequently asked
Does every seller need their own contract with tapinomahub?
No. The marketplace creates a separate, individually billable workspace per seller via POST /client/partner-workspaces — one contract, many tenants.
What happens with an OE number that has no match?
GET /parts/oe/{oeNumber} answers with 404. That is an empty result, not an error: the listing is created, the enrichment fields stay empty, and the seller receives a task.
May I show SEO enrichment as „also fits“?
No. It creates publication copy and item specifics, but not proof of fit. Use the dedicated part or VIN comparison for that.
Is the cut-out image redrawn?
No. POST /vision/part/remove/bg only determines the outline; the pixels of the part come unchanged from the photo. An image from POST /vision/part/generate in knowledge_only mode, by contrast, is a labelled depiction.
