Traduite de l'anglais. En cas de différence, la page en anglais fait foi. Lire en anglais

Publier un produit

Créez un produit, ajoutez-lui des images, publiez-le sur un canal et sachez quand il est vraiment en ligne.

Toute la boucle tient en deux écritures et une attente.

1. Créer le produit

curl -X POST https://api.nembol.com/rest/v1/products \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: create-VDJ-001" \
  -d '{
    "title": "Vintage denim jacket",
    "description": "<p>Classic 90s denim jacket.</p>",
    "brand": "Acme",
    "price": "49.90", "quantity": 3, "sku": "VDJ-M-001",
    "images": [{"url": "https://your-cdn.com/jacket.jpg"}]
  }'

La réponse est le produit, de façon synchrone. Récupérez l'id et les id des images.

2. Le publier

curl -X POST https://api.nembol.com/rest/v1/listings \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: publish-VDJ-001-shopify" \
  -d '{"product_id": "prod_…", "channel_account_id": "chac_…"}'

202 avec status: "ongoing". La publication passe par les workers de canal de Nembol. Récupérez le channel_account_id avec GET /channel_accounts.

3. Savoir quand il est en ligne

Abonnez-vous au webhook listing.status_changed (recommandé), ou interrogez GET /listings/{id} jusqu'à ce que status soit listed. Vous obtiendrez id_on_channel et url_on_channel. Sur un canal qui fonctionne bien, cela prend quelques secondes, pas des minutes.

Si le canal la rejette, vous obtenez status: "error" et le message du canal lui-même dans issues[]. Voir Gérer les erreurs.

Pièges à éviter

  • Les images d'abord. Les canaux rejettent les annonces sans image : une publication sans images échoue donc d'emblée avec photo_required_for_channel.
  • Les URL des images doivent être publiques. Nembol télécharge chaque url une fois et stocke sa propre copie. Si vos images ne sont pas accessibles depuis internet (un ERP local, un bucket privé), envoyez-les plutôt sous la forme {"base64": "…"} (10 Mo max chacune). Faites pointer url sur le fichier image lui-même, pas sur une page qui l'affiche : Nembol vérifie les octets, donc une URL qui renvoie une page HTML obtient 422 unsupported_file_type, et une URL impossible à télécharger obtient 422 image_unreachable, chacune avec l'image dans param. Rien n'est créé dans les deux cas.
  • Texte alternatif. Donnez à chaque image un alt (accessibilité, SEO), jusqu'à 512 caractères. Il atteint Shopify, WooCommerce, Etsy, Wix, Squarespace et le Storefront quand les images sont envoyées : à la publication, et lors d'une modification quand l'option d'envoi des mises à jour du compte est activée. Etsy garde les 500 premiers caractères, Squarespace les 200 premiers. Un import depuis ces canaux récupère leur texte alternatif. eBay, Amazon, TikTok Shop, Google Merchant Center et Meta n'ont pas de texte alternatif pour les images, ils ne le reçoivent donc pas. Modifiez-le plus tard en renvoyant l'image par id avec un nouvel alt ("" l'efface) ; les vendeurs peuvent aussi le modifier dans le tableau de bord (onglet Médias, sous chaque image).
  • Les variantes doivent former une matrice complète. Avec options (par exemple Couleur × Taille), chaque combinaison a besoin d'une variante. Les canaux génèrent toute la matrice : un ensemble incomplet est donc rejeté avec 422 au lieu de publier des variantes cassées.
  • Les devises ne sont pas converties. Les prix sont dans la devise de la boutique (GET /store → currency) et Nembol publie le nombre tel quel : 19.90 sur une boutique en EUR donne 19.90 USD sur une boutique Shopify américaine. Chaque compte de canal indique la devise dans laquelle il vend (currency) et, quand elle diffère de celle de la boutique, un avertissement currency_mismatch (sur le compte dans warnings, sur ses annonces dans issues). Corrigez-le avec une règle de prix sur ce compte (PATCH /channel_accounts/{id} avec pricing), ou connectez une boutique dans la devise de la boutique Nembol.
  • Le prix sur le canal peut différer du vôtre. Les vendeurs peuvent configurer des règles de prix par canal dans Nembol (ajustement en pourcentage ou fixe) : ne considérez donc pas un prix différent sur le canal comme un bug.
  • WooCommerce peut publier en brouillon. Si le vendeur a défini Statut du produit : brouillon dans les paramètres du canal sur Nembol, l'annonce est listed mais l'URL du produit n'est pas publique tant qu'il ne l'a pas publiée dans WooCommerce.
  • La publication est idempotente par (product_id, channel_account_id) : refaire le POST renvoie l'annonce existante. Si l'annonce est en erreur, refaire le POST relance la publication.

Après la publication

  • Modifications de prix et de texte : PATCH /products/{id}. Elles atteignent le canal quand l'option sync.product_edits du compte est activée (elle démarre désactivée) : voir Modifier un produit.
  • Stock depuis votre système : POST /inventory/batch par SKU, voir Synchroniser stock et prix en masse.
  • Ventes et expédition : webhooks order.created, puis POST /orders/{id}/fulfillment, voir Expédier les commandes.

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é.

Sur cette page