API de demande fournisseur
Estimer le transport international avant l’achat
Pour un canapé, un lampadaire, un tapis de course ou une grande cage pour animaux, le coût du transport international dépend presque entièrement de la façon dont l’article est réellement emballé : son poids emballé, les dimensions de ses cartons et le nombre de colis dans lesquels il est expédié.
Ces données sont le plus souvent absentes ou peu fiables sur les fiches produit 1688 et Taobao. Ce qui place votre client devant un problème très concret :
Il sait combien coûte le produit. Il n’a aucune idée de ce que coûte son acheminement jusqu’à son pays.
L’API de demande fournisseur comble cette lacune. Le service de communication fournisseur de HIOBuy contacte le vrai fournisseur avant l’achat, confirme le poids emballé, les dimensions des colis et les détails carton, puis renvoie les réponses à votre application sous forme de données structurées — prêtes à alimenter une estimation de transport.
Pourquoi l’API Produit ne suffit pas
Les API produit vous fournissent de façon fiable ce que la place de marché connaît elle-même : titre, images, prix, SKU, attributs, informations sur la boutique. Les données logistiques, c’est une autre histoire :
- aucun poids n’est publié ;
- le poids affiché est le poids net du produit, pas le poids emballé ;
- les dimensions du produit existent, mais pas les dimensions après emballage ;
- le poids a été saisi par le vendeur et n’est qu’indicatif ;
- des SKU différents donnent des poids emballés différents ;
- un article volumineux est expédié réparti sur plusieurs colis ;
- le nombre de cartons, leur poids et leur taille ne figurent nulle part sur la page.
L’API Produit vous dit ce que la place de marché sait. Une demande fournisseur vous apporte ce que seul le fournisseur peut confirmer.
Exemple : estimer le transport d’un canapé
Un client aux États-Unis consulte dans votre application un canapé 1688 affiché à ¥800. L’API produit a déjà renvoyé le produit, le prix, les images, les SKU et les attributs — mais aucun poids emballé ni dimensions de colis fiables.
Votre application ne peut donc pas répondre à la seule question qui compte ensuite :
Prix du produit ¥800
Transport international ???Sur un article volumineux, cette inconnue peut facilement dépasser le prix du produit lui-même.
Votre application ouvre une demande :
POST /v1/supplier-inquiries
{
"product_url": "https://detail.1688.com/offer/554456348334.html",
"questions": [
{ "type": "packed_weight" },
{ "type": "package_dimensions" },
{ "type": "carton_info" }
]
}HIOBuy confie la tâche au service de communication fournisseur, et un opérateur basé en Chine contacte le fournisseur réel de cette annonce. Le fournisseur répond que le canapé est expédié en deux colis :
Colis 1 32 kg 110 × 75 × 55 cm
Colis 2 18 kg 90 × 60 × 40 cmCes réponses reviennent à votre application en JSON structuré, et le parcours complet ressemble à ceci :
Produit 1688
↓ API Produit
Prix : ¥800
↓ données logistiques fiables manquantes
Demande fournisseur
↓ HIOBuy contacte le vrai fournisseur
Le fournisseur confirme : 2 colis, 32 kg + 18 kg, dimensions des cartons
↓ données logistiques structurées
Estimation du transport international (Chine → États-Unis)
↓
Le client voit un coût total approximatif avant d'acheterCe qui est tout l’objet de l’exercice :
Coût du produit
+ transport international estimé
= un coût réaliste avant achatSa place parmi les API HIOBuy
API Produit « Quel est le produit, et combien coûte-t-il ? »
↓
API de demande fournisseur « Comment le fournisseur va-t-il réellement l'emballer ? »
↓
Devis de transport « Combien coûtera à peu près l'expédition internationale ? »La demande fournisseur est la couche manquante entre les données produit et un devis de transport.
Une donnée confirmée par le fournisseur reste une estimation
Ce que vous recevez, ce sont des données confirmées par le fournisseur. Pour une estimation avant achat, c’est bien mieux que de n’avoir aucune donnée logistique, d’utiliser le poids net du produit, de deviner d’après les photos ou de faire confiance à un champ de place de marché qui n’a jamais été conçu pour être exact.
Mais confirmé par le fournisseur n’est pas mesuré en entrepôt. Une fois la marchandise physiquement arrivée, l’emballage peut différer, l’entrepôt peut reconditionner, et le poids réel, les dimensions et le nombre de colis peuvent tous changer.
Utilisez ces réponses pour estimer le transport international avant achat. Ne les considérez pas comme le poids facturable définitif — celui-ci provient toujours de ce que l’entrepôt emballe et mesure réellement.
Plus que des données de transport
Les données d’emballage pour l’estimation du transport sont le premier et le plus concret des usages de cette API, mais le même canal de communication fournisseur répond à tout ce que seul le fournisseur sait :
MOQ · stock · délai de production · emballage neutre · personnalisation · informations carton · détails produit · et tout le reste, via le type other.
Aujourd’hui, cela vous donne donc données d'emballage → estimation du transport, et le même appel peut tout aussi bien servir informations fournisseur → décision d'achat. Consultez les types de question pour les dix types et leurs schémas de réponse.
Fonctionnement
- Votre application appelle
POST /v1/supplier-inquiriesavec une URL produit, un SKU facultatif et une ou plusieurs questions typées. - HIOBuy crée la demande et la confie au service de communication fournisseur.
- Un opérateur basé en Chine contacte le fournisseur de cette annonce.
- Le fournisseur répond.
- La réponse est normalisée en données structurées conformément au schéma de chaque type de question.
- Votre endpoint reçoit le webhook
supplier_inquiry.message_answered, ou vous interrogezGET /v1/supplier-inquiries/{id}.
Une demande est une conversation, pas une requête ponctuelle. Une fois créée, vous ajoutez vos messages de relance au même fil plutôt que d’en ouvrir un second.
Il s’agit d’un service humain, pas d’une API temps réel
Une vraie personne contacte un vrai fournisseur : le délai de réponse dépend donc de la disponibilité du fournisseur, de sa rapidité à répondre, de la complexité de la question et de la nécessité éventuelle d’une relance. Considérez-le comme une tâche asynchrone se comptant en heures, parfois davantage. Certaines questions reviendront légitimement en unavailable ou refused.
En pratique : ne laissez jamais une page visible par l’utilisateur attendre un résultat de façon synchrone, répondez dès la création de la demande, recevez les réponses par webhook et affichez entre-temps un état processing ou waiting_supplier dans votre interface.
Pièces jointes
Certaines questions sont bien plus simples à poser avec une image. Une référence d’emballage, une capture d’écran de SKU, un croquis coté, une fiche technique — et dans l’autre sens, la photo d’emballage du fournisseur, une photo de carton ou un devis en PDF.
Chaque message, le vôtre comme celui du fournisseur, peut transporter jusqu’à cinq pièces jointes :
{
"message": "Please ask the supplier whether they can use packaging similar to this.",
"attachments": [
{
"type": "image",
"url": "https://example.com/reference-packaging.jpg",
"filename": "reference-packaging.jpg",
"mime_type": "image/jpeg"
}
]
}type vaut image, document ou other. L’URL doit être en https:// ; toute autre valeur est rejetée avec INVALID_ATTACHMENT_URL.
HIOBuy n’héberge pas les fichiers joints
Les pièces jointes sont des références. Vous hébergez vos propres fichiers ; ceux du fournisseur sont hébergés par le service de demande. HIOBuy conserve les métadonnées et l’URL, et ne téléverse, ne télécharge, ne copie et ne relaie jamais le fichier lui-même. Il n’existe aucun endpoint de téléversement de fichier, et aucun n’est prévu.
La conséquence pratique est que les URL des pièces jointes sont gérées par celui qui les fournit, et certaines expirent. Lorsqu’une réponse contient expires_at, considérez cette date comme la limite pour récupérer le fichier dans votre propre stockage ; null signifie que le fournisseur déclare que l’URL n’expire pas. Ne partez pas du principe qu’une URL renvoyée aujourd’hui répondra encore le mois prochain.
Les réponses du fournisseur peuvent elles aussi comporter des pièces jointes. Elles arrivent dans le tableau attachments du message ainsi que dans le webhook supplier_inquiry.message_answered, aux côtés des réponses structurées. Vous ne voyez que les pièces jointes que le service de demande a marquées comme vous étant destinées — les fichiers de travail des opérateurs et les captures d’écran des échanges avec le fournisseur restent internes au service et n’atteignent jamais l’API.
Accès
La demande fournisseur est désactivée par défaut. HIOBuy l’active application par application après l’intégration commerciale — contactez le support HIOBuy pour en faire la demande.
| Prérequis | Valeur |
|---|---|
| Capacité | Demande fournisseur, activée par application |
| Scopes | supplier_inquiry:read, supplier_inquiry:write |
| Authentification | Clé API live (Authorization: Bearer hio_live_...) |
Si la capacité est absente ou suspendue, chaque endpoint renvoie 403 SUPPLIER_INQUIRY_NOT_ENABLED.
Places de marché prises en charge
| Canal | Détecté à partir de |
|---|---|
1688 | detail.1688.com/offer/{id}.html et liens équivalents |
taobao | Liens produit item.taobao.com / detail.tmall.com |
Tout le reste échoue avec UNSUPPORTED_MARKETPLACE. Un produit est identifié par channel + source_product_id, jamais par la chaîne d’URL brute : différentes formes de lien pour une même offre pointent donc vers le même produit.
Statuts de demande
| Statut | Signification |
|---|---|
pending | Acceptée, pas encore prise en charge par le prestataire |
processing | Un opérateur la traite |
waiting_supplier | La question a été envoyée ; en attente de la réponse du fournisseur |
answered | Le dernier message a reçu des réponses — le fil reste ouvert aux relances |
completed | La conversation est close |
failed | Le message n’a pas pu être remis ou le prestataire l’a rejeté |
cancelled | Annulée ; plus aucun message n’est accepté |
pending, processing, waiting_supplier et answered sont considérés comme actifs. Une application ne peut détenir qu’une seule demande active par produit — c’est ce qui garantit un fil fournisseur unique par offre. Envoyer une requête de création pour un produit dont la demande est completed ou failed rouvre cette conversation au lieu d’en créer une nouvelle.
Webhooks
Enregistrez un endpoint dans le portail développeur et abonnez-vous à la catégorie supplier_inquiry. La signature et les tentatives de renvoi suivent les règles standard des webhooks.
| Événement | Déclenché lorsque |
|---|---|
supplier_inquiry.created | Une demande est créée |
supplier_inquiry.processing | Un opérateur a pris en charge le message |
supplier_inquiry.waiting_supplier | La question est parvenue au fournisseur |
supplier_inquiry.message_answered | Les réponses sont arrivées — le payload contient le tableau answers complet ainsi que les éventuelles attachments |
supplier_inquiry.completed | La conversation a été close |
supplier_inquiry.failed | Le message a échoué |
Chaque payload contient inquiry_id et product.{channel,source_product_id}.
Codes d’erreur
| Code | HTTP | Signification |
|---|---|---|
SUPPLIER_INQUIRY_NOT_ENABLED | 403 | Capacité non accordée ou suspendue |
INVALID_PRODUCT_URL | 400 | URL http(s) non absolue, ou aucun identifiant produit détecté |
UNSUPPORTED_MARKETPLACE | 400 | Le canal n’est ni 1688 ni Taobao |
INVALID_QUESTION_TYPE | 400 | questions[].type inconnu |
INVALID_QUESTION_SCHEMA | 400 | Questions vides, trop nombreuses ou dupliquées |
INVALID_ATTACHMENT_URL | 400 | L’URL de la pièce jointe est absente, non absolue, ou n’est pas en https:// |
INVALID_ATTACHMENT_TYPE | 400 | attachments[].type n’est ni image, ni document, ni other |
TOO_MANY_ATTACHMENTS | 400 | Plus de cinq pièces jointes sur un même message |
ACTIVE_INQUIRY_EXISTS | 409 | Une demande active existe déjà — ajoutez-y un message à la place |
INQUIRY_NOT_FOUND | 404 | Demande inconnue, ou appartenant à une autre application |
INQUIRY_NOT_ACTIVE | 409 | La demande est annulée |
SUPPLIER_INQUIRY_SERVICE_UNAVAILABLE | 503 | Le service de demande est indisponible ou a rejeté la tâche |
SUPPLIER_INQUIRY_SERVICE_UNAVAILABLE reste volontairement générique : les causes côté prestataire, comme le solde ou l’état du compte, ne sont pas exposées. Indiquez le request_id lorsque vous contactez le support.
Endpoints
| Endpoint | Rôle |
|---|---|
POST /v1/supplier-inquiries | Créer une demande |
POST /v1/supplier-inquiries/{id}/messages | Poser une question de relance |
GET /v1/supplier-inquiries | Lister les demandes |
GET /v1/supplier-inquiries/{id} | Détail de la demande avec tous les messages |
GET /v1/supplier-inquiries/{id}/messages | Messages avec questions et réponses |
Get Support
Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days