Traduite de l'anglais. En cas de différence, la page en anglais fait foi. Lire en anglais
Synchroniser stock et prix en masse
Envoyez des modifications de quantité et de prix pour jusqu'à 100 SKU par appel, et lisez le résultat de chaque élément.
Pour des synchronisations récurrentes depuis un ERP ou un entrepôt,
POST /inventory/batch est l'endpoint sur lequel s'appuyer : il identifie les
variantes par SKU, vous n'avez donc pas besoin de stocker les id Nembol.
curl -X POST https://api.nembol.com/rest/v1/inventory/batch \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: stock-sync-2026-07-30T22:00" \
-d '{"items": [
{"sku": "VDJ-M-001", "quantity": 12},
{"sku": "VDJ-L-001", "quantity": 0, "price": "44.90"}
]}'L'écriture locale est immédiate ; la propagation vers les canaux est
asynchrone. La réponse est une opération. Les éléments introuvables
reviennent dans rejected_items avec un motif (sku_not_found,
sku_ambiguous) sans faire échouer les autres, et ils figurent aussi
comme entrées failed dans results : l'opération se termine en partial.
Ainsi, un SKU renommé dans votre système apparaît dans vos alertes au lieu
d'arrêter discrètement sa synchronisation. Si aucun élément ne peut être
appliqué, l'appel répond 422 no_items_applied (motifs dans
error.details.rejected_items) et rien ne change.
results[] contient une entrée par SKU et par canal sur lequel le produit
est en ligne, avec son channel_account_id et son listing_id :
pending: enregistré dans Nembol, le canal n'a pas encore répondu ;succeeded: ce canal a reçu le nouveau stock / prix ;failed: ce canal l'a refusé, avec son message danserror. L'opération passe enpartial.
Un refus temporaire (par exemple le message de Shopify « this product is
currently being modified » quand deux écritures atteignent le même produit en
même temps, ou une limite de débit) est d'abord retenté par Nembol : pendant
les nouvelles tentatives, le résultat reste pending, et seul un envoi qui
échoue encore se termine en failed.
Vous savez donc toujours si chaque boutique a reçu le stock, et c'est ce qui
évite la survente : attendez le webhook operation.completed (ou interrogez
GET /operations/{id}) et traitez les entrées en échec. Un produit en ligne
sur aucun canal obtient une seule entrée avec channel_account_id: null, déjà
succeeded : enregistré dans Nembol, rien à envoyer.
Upserts du catalogue complet
Pour créer ou mettre à jour des produits entiers (contenu compris), utilisez
POST /products/batch. Il applique la même correspondance par SKU (un SKU
ambigu échoue avec sku_ambiguous, rien n'est écrit), jusqu'à 100 éléments,
un résultat par élément, status: "partial" quand seuls certains échouent, et
422 no_items_applied quand aucun ne s'applique. Les SKU sans correspondance
sont créés (titre obligatoire), ceux qui correspondent sont mis à jour.
Actions en masse sur les annonces
POST /listings/batch exécute une action (publish, delist, resync
ou retry) sur jusqu'à 100 paires (produit, compte de canal), par exemple
pour copier un catalogue sur un second compte eBay :
curl -X POST https://api.nembol.com/rest/v1/listings/batch \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: copy-to-ebay2-page-1" \
-d '{"action": "publish",
"items": [{"product_id": "prod_66a1f0", "channel_account_id": "chac_6aa12cab"},
{"product_id": "prod_66a1f1", "channel_account_id": "chac_6aa12cab"}]}'Chaque paire obtient son propre résultat dans l'opération : pending jusqu'à
la réponse du canal, skipped si elle est déjà dans l'état demandé (par
exemple already_listed), failed avec un code sinon. Les résultats
reviennent dans le même ordre que vos items, et chacun reprend le
product_id et le channel_account_id envoyés, y compris les inconnus : vous
savez donc toujours à quelle paire correspond un résultat. Parcourez les
catalogues plus grands par pages de 100 paires, avec une Idempotency-Key
distincte par page.
Modifications de prix en masse
POST /inventory/price_adjustment augmente ou baisse toutes les variantes
de jusqu'à 100 produits d'un pourcentage ou d'un montant (arrondi à .99 en
option) et envoie les nouveaux prix aux canaux en ligne :
curl -X POST https://api.nembol.com/rest/v1/inventory/price_adjustment \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_ids": ["prod_66a1f0", "prod_66a1f1"], "mode": "percentage", "value": -15, "rounding": true}'Le résultat de chaque variante contient previous_price et price. Pour
annuler, renvoyez les prix précédents :
POST /inventory/batch
{"items": [{"sku": "TEE-M", "price": "19.99"}, {"sku": "TEE-L", "price": "21.99"}]}Pièges à éviter
- Une Idempotency-Key par exécution de batch. Relancer un batch expiré avec la même clé rejoue le résultat enregistré au lieu de l'appliquer deux fois.
- Les mises à jour par batch n'acceptent pas d'images. Un élément trouvé
avec
images[]échoue (pour cet élément). Mettez à jour les images avecPATCH /products/{id}. quantity: 0est une vraie valeur. La variante passe en rupture de stock partout.- Écoutez
operation.completedau lieu d'interroger l'API si vous synchronisez souvent. - Les prix sont des chaînes (
"44.90"), toujours dans la devise de base de la boutique. - Un canal peut afficher moins d'unités que vous n'en avez (ou « en
rupture » sur Google Merchant Center) : les vendeurs peuvent définir un
plafond de quantité par canal (
inventorydansGET /channel_accounts). - Les règles de prix du canal s'appliquent en plus des prix que vous
définissez ou ajustez (
pricingsur le compte de canal).
Dernière mise à jour le 20 octobre 2026
Besoin d'aide ?
Écrivez-nous et une personne vous répond, généralement sous un jour ouvré.
Modifier un produit : ce qui atteint vraiment les canaux
Votre PATCH met toujours à jour Nembol ; ce qui se propage vers chaque canal dépend des paramètres de synchronisation du vendeur.
Expédier les commandes
Récupérez les commandes avec l'adresse de livraison complète, marquez-les comme expédiées, ajoutez le suivi et informez la marketplace.