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

Connecter un canal

Permettez à un marchand de connecter eBay, Shopify, Etsy et d'autres canaux depuis votre application ou votre agent : liens OAuth, canaux à clé API, URL de retour et déconnexion.

POST /channel_connections exécute le même parcours de connexion que le tableau de bord Nembol, sur le prochain emplacement libre de ce canal. Un second compte eBay devient un second compte de canal. Votre clé a besoin du scope channels:connect.

eBay, Etsy, Shopify, WooCommerce, TikTok Shop, Temu, Amazon, Google Merchant Center, Facebook Catalog, Square, Squarespace, Faire, Wix, Facebook, Pinterest et Tumblr exigent que le marchand se connecte sur le canal et autorise Nembol. Vous obtenez un lien à usage unique, valable 1 heure :

curl -X POST https://api.nembol.com/rest/v1/channel_connections \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel": "shopify", "params": {"shop": "acme-vintage"},
       "return_url": "https://app.example.com/nembol/callback?user=42"}'
{
  "id": "conn_66f0a1",
  "object": "channel_connection",
  "status": "pending",
  "connect_url": "https://api.nembol.com/rest/v1/connect/…",
  "expires_at": "2026-10-07T16:00:00.000Z"
}

Ouvrez connect_url dans le navigateur du marchand. Une fois terminé, il arrive sur votre return_url avec le résultat ajouté à sa query string :

https://app.example.com/nembol/callback?user=42&connection_id=conn_66f0a1&status=connected&channel_account_id=chac_6aa12cab

Un lien inutilisable revient aussi vers votre return_url : expiré (status=expired&error=link_expired), déjà utilisé (le status actuel et error=link_already_used) ou refusé (status=failed et le motif, par exemple plan_not_eligible). Affichez votre propre message et créez un nouveau lien si nécessaire. Le vendeur ne voit jamais de page d'erreur Nembol.

Ne vous fiez pas à la seule query string. Confirmez avec GET /channel_connections/{id} (connected / failed / expired) ou le webhook channel_account.connected.

Agents IA et scripts : omettez return_url. Le marchand arrive sur une page Nembol qui lui indique qu'il peut fermer l'onglet, et l'agent interroge la connexion.

Enregistrez d'abord vos URL de retour

return_url doit commencer par une URL enregistrée pour la boutique. Cela empêche d'utiliser le parcours de connexion de Nembol pour envoyer des personnes vers des sites arbitraires :

curl -X POST https://api.nembol.com/rest/v1/redirect_urls \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://app.example.com/nembol/callback"}'

Même origine + un chemin commençant par celui enregistré : l'URL correspond ; toute query string est acceptée. Le marchand peut aussi gérer la liste dans Paramètres → Développeurs → URL de redirection.

Canaux à clé API : connexion immédiate

Kaufland, OnBuy, PrestaShop et Subito se connectent avec des identifiants, et la réponse est déjà connected ou failed :

curl -X POST https://api.nembol.com/rest/v1/channel_connections \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"channel": "kaufland", "params": {"client_key": "…", "secret_key": "…"}}'

Les clés sont transmises au canal et ne sont jamais stockées sur la connexion.

Canaux qui demandent quel compte connecter

Amazon, Google Merchant Center et Facebook Catalog se connectent avec un lien comme les autres. Après la connexion, le vendeur peut avoir plusieurs comptes au choix (plusieurs comptes Merchant Center, plusieurs entreprises). La connexion passe alors en needs_choice, sa liste choices donne les options, et vous la terminez avec POST /channel_connections/{id}/choose et la value choisie. S'il n'y a qu'une option, Nembol la choisit et la connexion est directement connected.

Déconnecter

curl -X POST https://api.nembol.com/rest/v1/channel_accounts/chac_6aa12cab/disconnect \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

La déconnexion arrête toute synchronisation avec ce compte et ne peut pas être annulée via l'API (la reconnexion exige une nouvelle connexion du marchand), elle demande donc d'abord une confirmation :

  1. La première requête répond 409 confirmation_required avec une description des conséquences et un confirmation.token.
  2. Montrez les conséquences au marchand. S'il est d'accord, répétez la même requête avec l'en-tête Nembol-Confirmation: <token>. Le jeton ne sert qu'une fois et expire au bout de 10 minutes.

Voir Confirmations et annulation.

Après la connexion : imports et options de synchronisation

Via l'API, une nouvelle connexion n'importe rien : votre application gère le catalogue. Demandez ce dont vous avez besoin en créant la connexion :

OptionPar défautEffet
import_productsfalseImporte le catalogue du canal dans Nembol une fois connecté. L'import est une opération normale : son id est le import_operation_id de la connexion ; suivez-le avec GET /operations/{id} et annulez-le avec POST /imports/{id}/undo
import_ordersfalseRécupère aussi les commandes que la boutique avait déjà avant la connexion (une récupération unique)

Les nouvelles commandes sont synchronisées dès que le compte est connecté, quel que soit votre choix. (Le tableau de bord importe toujours les deux : le vendeur veut voir sa boutique tout de suite.) Vous pouvez aussi importer plus tard avec POST /imports.

Un compte nouvellement connecté a toutes ses options de synchronisation désactivées : les modifications Nembol n'atteignent pas le canal et les ventes du canal ne modifient pas le stock ailleurs, tant que vous ne les activez pas avec PATCH /channel_accounts/{id}. Voir Modifier un produit : ce qui atteint les canaux.

eBay : Business Policies

Pour publier sur eBay, le compte doit utiliser les Business Policies d'eBay (chaque annonce porte des politiques d'expédition, de paiement et de retour). La plupart des vendeurs les utilisent déjà. La connexion ne modifie jamais ce réglage, car l'adhésion modifie définitivement le compte eBay du vendeur. Si le compte n'y a pas adhéré, eBay refuse la première publication ; activez-les explicitement, avec l'accord du vendeur :

curl -X POST https://api.nembol.com/rest/v1/channel_accounts/chac_6aa12cab/enable_business_policies \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

L'appel demande la confirmation en deux étapes. La réponse est ready (politiques en place, la publication fonctionne) ou pending (eBay migre le compte : rappelez dans quelques minutes). Un compte qui a déjà adhéré répond ready et rien ne change.

Déconnecter, puis reconnecter la même boutique

Un compte déconnecté garde sa place avec le nom de sa dernière boutique, pour que ses annonces puissent le retrouver. Le prochain POST /channel_connections pour ce canal le ramène : la réponse contient reconnects_shop (la boutique qu'il avait), et le vendeur se connecte à cette même boutique.

  • Pour connecter une autre boutique à la place, envoyez "new_account": true : elle prend une nouvelle place.
  • Si le vendeur se connecte à une autre boutique sans new_account, la connexion échoue avec different_channel_account et rien ne change.

Reconnecter une connexion expirée

La connexion à une marketplace peut expirer ou être révoquée (mot de passe modifié, application supprimée sur le canal). Le compte affiche alors des erreurs et cesse de se synchroniser. Pour corriger cela sans le tableau de bord, reconnectez ce même compte :

curl -X POST https://api.nembol.com/rest/v1/channel_connections \
  -H "Authorization: Bearer $NEMBOL_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"channel_account_id": "chac_6aa12cab",
       "return_url": "https://app.example.com/nembol/callback"}'

Cela fonctionne comme une nouvelle connexion (un connect_url pour le vendeur, puis return_url), avec trois différences :

  • Le compte garde son id (chac_…) et toutes les annonces qui y sont liées ; aucun nouveau compte de canal n'est créé et aucun emplacement libre n'est nécessaire.
  • Si le vendeur se connecte à une boutique ou un compte différent de celui en cours de reconnexion, rien ne change et la connexion échoue avec different_channel_account.
  • channel est facultatif ; s'il est envoyé, ce doit être le canal du compte.

Mêmes règles que le tableau de bord

L'API exécute le parcours de connexion du tableau de bord lui-même, donc toutes les règles de Nembol s'appliquent. Une intégration ne peut rien faire de plus que ce que le marchand pourrait faire dans Nembol :

  • Un compte marketplace, une boutique Nembol. Un compte eBay (Etsy, Shopify…) déjà connecté à une boutique Nembol ne peut pas être connecté à nouveau ; la connexion se termine en failed avec le message du canal.
  • Abonnement actif obligatoire, vérifié comme dans le tableau de bord (y compris une vérification en direct auprès du prestataire de paiement) : sinon 402 subscription_inactive.
  • Le compte par lequel la boutique paie Nembol (facturation Shopify, WooCommerce ou Wix) ne peut pas être déconnecté : 422 channel_not_disconnectable.
  • Tout est revérifié à l'ouverture du lien. Si l'emplacement a été pris entre-temps, si le forfait a changé ou si l'abonnement a expiré, le lien est refusé et la connexion se termine en failed.

Pièges à éviter

  • Un lien, un usage. Un lien ouvert ou expiré ne peut pas être réutilisé. Créez une nouvelle connexion.
  • Connexion expirée ou compte déconnecté. Un compte dont la connexion a expiré existe toujours : reconnectez-le avec channel_account_id (il garde son id). Un compte déconnecté revient avec la prochaine connexion de ce canal (même place et mêmes annonces, un nouvel id chac_ : l'ancien id répond 404 channel_account_not_found et ses annonces portent désormais le nouvel id dans channel_account_id) ; voir plus haut.
  • Etsy, seconde boutique : le marchand doit être déconnecté de la première boutique sur etsy.com avant d'ouvrir le lien, sinon Etsy le reconnectera à la même boutique.
  • Les emplacements se remplissent. Chaque canal a un nombre limité de comptes par boutique : 422 channel_slots_full signifie qu'il faut d'abord en déconnecter un.
  • Les limites du forfait s'appliquent comme dans le tableau de bord : 403 plan_channel_not_included quand le forfait n'inclut pas le canal.
  • Pas d'import automatique via l'API. Une connexion faite depuis le tableau de bord lance le premier import habituel ; une connexion faite via l'API n'importe que ce que demandent import_products / import_orders.

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