Du VIN à l’analyse de rentabilité : la voie véhiculeTous les articles

Du VIN à l’analyse de rentabilité : la voie véhicule

À l’achat, un chiffre décide de tout et personne ne le connaît : combien de pièces vendables ce véhicule contient-il ? Cette voie mène du VIN à un montant que l’on peut annoncer.

Publié: 2026-09-11Mis à jour: 2026-09-15Temps de lecture: 10 minAPI tapinomahub & processus
API & processusVINAPIHSN/TSNDonnées véhiculePrix & évaluationLogistique & stock

Un véhicule accidenté est dans la cour, le vendeur attend un prix, et la décision se prend en quelques minutes. S’en remettre à l’expérience seule conduit à payer trop cher les séries inhabituelles et à laisser de l’argent sur les banales. La voie véhicule de l’API tapinomahub part d’où part l’acheteur : du numéro d’identification du véhicule — et aboutit à un montant traçable, accompagné d’un ordre de démontage.

Du VIN à la décision d’achatEntrée : VIN à 17 caractères que vous êtes autorisé à traiter 1. Rapprocher le véhicule (GET /vin/{vin}/vehicle): tapiId, type, kTypes, HSN/TSN, codes moteur et boîte 2. Demander la liste des pièces (GET /vin/{vin}/parts): 200 avec parts et matchLevel — ou 202 avec un jobId 3. Suivre le travail (GET /vin/parts/jobs/{jobId}): queued, running, succeeded ou failed avec un code de résultat 4. Calculer la rentabilité (GET /vin/{vin}/economic-evaluation): Potentiel de revenus, classement de démontage, recommandation d’achat 5. Récupérer l’analyse (GET /vin/economic-evaluation/jobs/{jobId}): result avec hypothèses et couverture — ou error avec un code Sortie : un prix que l’on peut annoncer et un ordre de démontage 202 n’est pas une erreur mais un travail accepté. Retry-After indique l’intervalle avant le prochain appel.Du VIN à la décision d’achatEntrée : VIN à 17 caractères que vous êtes autorisé à traiter01Rapprocher le véhiculeGET /vin/{vin}/vehicletapiId, type, kTypes, HSN/TSN, codes moteur et boîte02Demander la liste des piècesGET /vin/{vin}/parts200 avec parts et matchLevel — ou 202 avec un jobId03Suivre le travailGET /vin/parts/jobs/{jobId}queued, running, succeeded ou failed avec un code de résultat04Calculer la rentabilitéGET /vin/{vin}/economic-evaluationPotentiel de revenus, classement de démontage, recommandation d’achat05Récupérer l’analyseGET /vin/economic-evaluation/jobs/{jobId}result avec hypothèses et couverture — ou error avec un codeSortie : un prix que l’on peut annoncer et un ordre de démontage202 n’est pas une erreur mais un travail accepté. Retry-After indique l’intervalle avant le prochain appel.
Trois étapes métier, deux sous forme de travail asynchrone. Les appels de statut ne sont pas un palliatif mais le cas normal documenté des rapprochements longs.

Étape 1 : rendre le véhicule univoque

GET /vin/{vin}/vehicle rapproche le VIN de la source activée. includeEquipments, includeColors et includeTechnical règlent la profondeur de la réponse ; country fixe le contexte de marché et provider la source prévue au contrat. Un rapprochement réussi contient une tapiId stable — la référence par laquelle tous les appels suivants désignent le même véhicule. La description du service figure dans Comparer les données d’un véhicule par VIN.

Récupérer les données véhicule avec équipements et technique
curl \
  -H 'X-Api-Key: <API_KEY>' \
  'https://api.tapinomahub.com/vin/WVWZZZ1KZAW000000/vehicle?includeEquipments=true&includeTechnical=true'
Les champs qui comptent à l’achat
ChampContenuUtilisation
tapiIdRéférence véhicule stable après un rapprochement réussiLe lien entre liste des pièces, évaluation et dossier véhicule
mainType, subType, constructionPeriodSérie, version et période de constructionBase de toute liste d’utilisation et de toute mention d’annonce
kTypes, natCodesClés de type connues du type de véhiculeRaccordement aux structures TecDoc et aux catalogues
kba.hsn, kba.tsnClés d’homologation allemandes si disponiblesComparaison avec les HSN/TSN du certificat
engine.codes, transmission.codesCodes moteur et boîte du typeDistingue des organes identiques à l’extérieur
equipmentsCategorized, manufacturerOrderCodesÉquipements par catégorie, codes de commande avec matched et unmatchedJustificatif des équipements de valeur : éclairage matriciel, aides à la conduite
incomplete, dates.productionIndicateur de réponse incomplète, date de productionDécider si les données suffisent à une évaluation

Étape 2 : la liste des pièces du véhicule

GET /vin/{vin}/parts renvoie les positions OE trouvées : par pièce number et numberUnformatted, name et nameAddition, category, manufacturer, amount, price, tapiGenArt et le champ obligatoire vdi. vdi contient les codes VDI 4081 complets et confirmés et reste présent sous la forme [] lorsqu’aucune correspondance valide n’est disponible. Plus important que la liste : sa qualification. matchLevel indique la fiabilité de l’affectation et missingCategories ce qui manque. Une liste missingCategories non vide signifie expressément que la liste est incomplète. Détails dans Comparer les affectations de pièces par VIN.

Ce que `matchLevel` dit de la portée du résultat
ValeurSignificationConséquence d’usage
vehicle_specific_best_availableAffectation propre au véhicule, au meilleur niveau disponibleSuffisant pour l’évaluation et la planification du démontage
vehicle_specific_unverifiedPropre au véhicule mais non contre-vérifiéUtilisable en interne ; vérifier les positions avant la vente
vehicle_type_candidatesCandidats au niveau du type, pas du véhicule individuelNe pas utiliser comme affirmation de compatibilité — la pièce sur le véhicule décide

Traiter correctement le travail asynchrone

La liste des pièces et l’évaluation peuvent demander plus de temps qu’une réponse HTTP ne doit attendre. L’API répond donc soit immédiatement 200, soit accepte le travail avec 202 — avec Location, Retry-After et un jobId. C’est le cas normal documenté, pas un incident.

  1. Traiter les deux réponses. Une intégration qui ne connaît que 200 fonctionne en test et échoue en production. 202 fournit jobId, statusUrl, status et retryAfterSeconds.
  2. Interroger à l’intervalle indiqué, pas en boucle serrée. GET /vin/parts/jobs/{jobId} et GET /vin/economic-evaluation/jobs/{jobId} renvoient queued, running, succeeded ou failed.
  3. Avec `succeeded`, le résultat est dans `result` — même structure qu’une réponse 200 directe. Votre code n’a donc besoin que d’un seul chemin de lecture.
  4. Avec `failed`, `error.code` distingue vehicle_not_found — constat métier vide — de vin_service_unavailable, panne technique. Seul le second justifie une nouvelle tentative.
  5. La référence du travail appartient au dossier. La perdre empêche de récupérer le résultat ; un travail inconnu donne 404 vin_parts_job_not_found.
Récupérer un travail accepté
# 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'

Étape 3 : l’analyse de rentabilité

GET /vin/{vin}/economic-evaluation combine la liste des pièces et les prix du marché pour calculer trois choses : le potentiel de revenus du véhicule, un ordre de démontage et une recommandation d’achat. La réponse expose ses hypothèses afin que chaque montant puisse être recalculé — voir Créer une évaluation économique par VIN.

Comment une liste de pièces devient un prix d’achatPièces évaluées du VIN — coverage indique combien de pièces étaient pertinentes, retenues et évaluées 1. Hypothèses (assumptions): priceBasis min, recoveryRate, costPerPartEur, maxPricedParts 2. Potentiel de revenus (revenuePotential): min, average et max en EUR — la fourchette reste visible 3. Classement de démontage (parts[].rank): Pièces par revenu attendu, calculées à une unité chacune 4. Recommandation d’achat (purchaseRecommendation): recoveryRate × min, moins le coût par pièce évaluée La recommandation s’appuie volontairement sur le minimum : on paie avant d’avoir vendu une pièce.Pièces évaluées duVINcoverage indique combien depièces étaient pertinentes,retenues et évaluéesComment une liste de pièces devient un prix d’achatHypothèsesassumptionspriceBasis min, recoveryRate, costPerPartEur, maxPricedPartsPotentiel de revenusrevenuePotentialmin, average et max en EUR — la fourchette reste visibleClassement de démontageparts[].rankPièces par revenu attendu, calculées à une unité chacuneRecommandation d’achatpurchaseRecommendationrecoveryRate × min, moins le coût par pièce évaluéeLa recommandation s’appuie volontairement sur le minimum : on paie avant d’avoir vendu une pièce.
L’analyse ne cache pas son calcul : hypothèses, couverture, fourchette et recommandation figurent séparément dans la réponse.
Les paramètres qui adaptent le calcul à votre entreprise
ParamètreSignificationPlage et valeur par défaut
conditionÉtat retenu pour l’évaluation des prixused ou new
recoveryRatePart du potentiel réellement réalisée à la vente0,05 à 1 ; défaut 0,5
costPerPartCoût supposé par pièce évaluée pour démontage, stockage et expédition, en EUR0 à 1000 ; défaut 0
maxPricedPartsNombre maximal de pièces incluses dans l’évaluationDéfaut et maximum 100
  • `coverage` rend la situation des données visible : totalParts, excludedIrrelevant, relevantParts, selectedParts, pricedParts et unpricedParts. Un unpricedParts élevé est un signal d’alerte, pas un détail.
  • `revenuePotential` donne min, average et max. La fourchette reste entièrement visible — elle n’est pas réduite à un chiffre.
  • `purchaseRecommendation.goodPurchasePriceEur` est le montant pour la discussion dans la cour : recoveryRate fois le minimum, moins le coût supposé par pièce évaluée.
  • `assumptions.priceBasis` indique min. Le résultat documente ainsi la base sur laquelle repose la recommandation.
  • `parts[]` porte rank, référence, désignation, catégorie et pricing avec min, average, max, confidence et evaluatedAt. Les montants de pricing valent à l’unité.
  • `amount` provient tel quel de la liste du fournisseur, n’est pas vérifié et n’entre dans aucun calcul. Le calcul retient une unité par pièce.

Facturation : le forfait VIN mensuel

  • VIN Vehicle, VIN Parts et VIN Cart Check forment le forfait `VIN_MONTHLY_LOOKUP`. La facturation et les répétitions sont régies exclusivement par les conditions convenues. La réutilisation du cache ou d’un résultat ne modifie pas la facturation client.
  • L’en-tête `X-Tapinoma-Billing-Bundle` est présent lorsqu’un appel relève de ce plafond. X-Tapinoma-Billing-Source nomme en plus la décision de facturation.
  • Un plan s’applique par clé d’endpoint, pas globalement. Si aucun plan ne couvre l’appel ou si le quota mensuel est épuisé, le solde est débité ; s’il ne suffit pas, l’API répond 402 insufficient_credits.
  • `404 vin_not_resolvable` signale un rapprochement non effectué ; son traitement commercial suit les conditions affichées avant la commande et convenues au contrat.
  • Le sandbox suit les conditions convenues. Il utilise la même adresse de base, ne répond qu’avec des données de test synthétiques documentées et se comporte comme indiqué pour la validation, les limites de débit et les états asynchrones — l’endroit pour construire la gestion du 202.

Le déroulé à l’achat

  1. Saisir le VIN — à la main, depuis le certificat via POST /scanner/document/registration, ou depuis le véhicule via POST /scanner/vin/extract. Dix-sept caractères, sinon 400 invalid_vin.
  2. Rapprocher le véhicule et consigner tapiId, le matchLevel des appels suivants et incomplete dans le dossier.
  3. Demander la liste des pièces et traiter proprement le 202. Enregistrer la référence du travail, interroger à l’intervalle indiqué.
  4. Demander l’évaluation avec vos hypothèses, pas les valeurs par défaut. Votre entreprise connaît son taux et son coût par pièce mieux que toute valeur par défaut.
  5. Afficher ensemble recommandation, fourchette et couverture. Un chiffre sans coverage à côté inspire une confiance que les données ne justifient pas.
  6. Planifier le démontage selon rank. Les premières positions portent le revenu ; le reste décide du temps d’occupation du hall.
  7. Recalculer après la vente : revenu obtenu contre recommandation, pièces évaluées contre pièces vendues. C’est ainsi que naît votre propre recoveryRate fiable.

Des limites à connaître

  • Une évaluation n’est pas une garantie de prix. Elle est indicative, repose sur des offres et des hypothèses, et ne remplace pas l’inspection. Aucune requête VIN ne voit les dommages, le kilométrage ou l’intégralité.
  • La couverture dépend de la source. Selon le constructeur, l’année et le marché, les données disponibles varient. incomplete, missingCategories et unpricedParts rendent cela visible.
  • Un VIN se rattache à un véhicule et peut devenir une donnée personnelle. Ne transmettez que ce que vous êtes autorisé à transmettre, et seulement ce que la finalité exige. La conservation dans votre système suit votre contrat et vos délais de suppression.
  • `vehicle_type_candidates` n’est pas une affirmation de compatibilité. À ce niveau, la liste décrit le type, pas le véhicule individuel.
  • La liste des pièces n’est pas un inventaire. Elle dit ce qui peut être monté sur ce type — pas ce qui est encore monté et vendable sur ce véhicule. L’inspection fait la différence.

Schémas, codes d’erreur et exemples de réponse figurent dans la documentation développeur. Dès que le véhicule évalué devient des pièces, la suite est dans De la référence OE à l’article prêt pour la marketplace et, lorsque ces pièces sont sur l’établi, dans De la photo de pièce à l’annonce : la voie image de l’API tapinomahub.

Sources et références juridiques

Questions fréquentes

Pourquoi l’API répond-elle 202 au lieu du résultat ?

Parce que le rapprochement chez le fournisseur peut durer plus longtemps qu’une réponse ne doit attendre. Le 202 fournit jobId, statusUrl et retryAfterSeconds ; le résultat arrive ensuite dans result, avec la même structure qu’une réponse directe.

Chaque requête VIN coûte-t-elle de nouveau ?

Non. VIN Vehicle, VIN Parts et VIN Cart Check forment un forfait mensuel : par client et par VIN, le prix du forfait est prélevé au plus une fois par mois civil.

Pourquoi la recommandation d’achat s’appuie-t-elle sur le minimum ?

Parce qu’à l’achat on paie avant de vendre. assumptions.priceBasis indique min ; le potentiel de revenus reste intégralement dans la réponse avec min, average et max.

La quantité de la liste entre-t-elle dans le calcul ?

Non. amount provient tel quel et non vérifié de la liste du fournisseur. Le calcul retient une unité par pièce afin qu’une quantité douteuse ne multiplie pas l’argent.

L’analyse remplace-t-elle l’inspection ?

Non. Elle évalue ce que les données indiquent comme pouvant être monté. Dommages, kilométrage, pièces manquantes et état réel restent affaire d’examen visuel.