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.
É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.
curl \ -H 'X-Api-Key: <API_KEY>' \ 'https://api.tapinomahub.com/vin/WVWZZZ1KZAW000000/vehicle?includeEquipments=true&includeTechnical=true'
| Champ | Contenu | Utilisation |
|---|---|---|
tapiId | Référence véhicule stable après un rapprochement réussi | Le lien entre liste des pièces, évaluation et dossier véhicule |
mainType, subType, constructionPeriod | Série, version et période de construction | Base de toute liste d’utilisation et de toute mention d’annonce |
kTypes, natCodes | Clés de type connues du type de véhicule | Raccordement aux structures TecDoc et aux catalogues |
kba.hsn, kba.tsn | Clés d’homologation allemandes si disponibles | Comparaison avec les HSN/TSN du certificat |
engine.codes, transmission.codes | Codes moteur et boîte du type | Distingue des organes identiques à l’extérieur |
equipmentsCategorized, manufacturerOrderCodes | Équipements par catégorie, codes de commande avec matched et unmatched | Justificatif des équipements de valeur : éclairage matriciel, aides à la conduite |
incomplete, dates.production | Indicateur de réponse incomplète, date de production | Dé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.
| Valeur | Signification | Conséquence d’usage |
|---|---|---|
vehicle_specific_best_available | Affectation propre au véhicule, au meilleur niveau disponible | Suffisant pour l’évaluation et la planification du démontage |
vehicle_specific_unverified | Propre au véhicule mais non contre-vérifié | Utilisable en interne ; vérifier les positions avant la vente |
vehicle_type_candidates | Candidats au niveau du type, pas du véhicule individuel | Ne 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.
- Traiter les deux réponses. Une intégration qui ne connaît que
200fonctionne en test et échoue en production.202fournitjobId,statusUrl,statusetretryAfterSeconds. - Interroger à l’intervalle indiqué, pas en boucle serrée.
GET /vin/parts/jobs/{jobId}etGET /vin/economic-evaluation/jobs/{jobId}renvoientqueued,running,succeededoufailed. - Avec `succeeded`, le résultat est dans `result` — même structure qu’une réponse
200directe. Votre code n’a donc besoin que d’un seul chemin de lecture. - Avec `failed`, `error.code` distingue
vehicle_not_found— constat métier vide — devin_service_unavailable, panne technique. Seul le second justifie une nouvelle tentative. - 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.
# 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.
| Paramètre | Signification | Plage et valeur par défaut |
|---|---|---|
condition | État retenu pour l’évaluation des prix | used ou new |
recoveryRate | Part du potentiel réellement réalisée à la vente | 0,05 à 1 ; défaut 0,5 |
costPerPart | Coût supposé par pièce évaluée pour démontage, stockage et expédition, en EUR | 0 à 1000 ; défaut 0 |
maxPricedParts | Nombre maximal de pièces incluses dans l’évaluation | Défaut et maximum 100 |
- `coverage` rend la situation des données visible :
totalParts,excludedIrrelevant,relevantParts,selectedParts,pricedPartsetunpricedParts. UnunpricedPartsélevé est un signal d’alerte, pas un détail. - `revenuePotential` donne
min,averageetmax. 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 :
recoveryRatefois 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 etpricingavecmin,average,max,confidenceetevaluatedAt. Les montants depricingvalent à 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-Sourcenomme 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
- Saisir le VIN — à la main, depuis le certificat via
POST /scanner/document/registration, ou depuis le véhicule viaPOST /scanner/vin/extract. Dix-sept caractères, sinon400 invalid_vin. - Rapprocher le véhicule et consigner
tapiId, lematchLeveldes appels suivants etincompletedans le dossier. - Demander la liste des pièces et traiter proprement le
202. Enregistrer la référence du travail, interroger à l’intervalle indiqué. - 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.
- Afficher ensemble recommandation, fourchette et couverture. Un chiffre sans
coverageà côté inspire une confiance que les données ne justifient pas. - Planifier le démontage selon
rank. Les premières positions portent le revenu ; le reste décide du temps d’occupation du hall. - 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
recoveryRatefiable.
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,missingCategoriesetunpricedPartsrendent 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.
