Traduite de l'anglais. En cas de différence, la page en anglais fait foi. Lire en anglais
Importer des produits
Importez dans Nembol le catalogue d'un canal connecté, ou un CSV, depuis votre application ou votre agent : uniquement les nouveaux articles, liaison par SKU, filtres ponctuels, progression en direct et annulation.
POST /imports exécute le même import que le tableau de bord Nembol, en
arrière-plan, avec les mêmes règles. Votre clé a besoin de products:write.
Importer le catalogue d'un canal
curl -X POST https://api.nembol.com/rest/v1/imports \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel_account_id": "chac_66f0a1",
"filters": {"status": "Active", "quantity": {"operator": "gt", "value": 0}}}'{
"id": "op_8fd2c1",
"object": "operation",
"type": "import.channel",
"status": "processing",
"import": {
"source": "channel",
"channel_account_id": "chac_66f0a1",
"filters": { "status": "Active", "quantity": { "operator": "gt", "value": 0 } },
"warnings": [],
"processed": 0
}
}Ce qui est importé, exactement comme pour un import depuis le tableau de bord :
- Uniquement les nouveaux articles. Les articles déjà importés depuis ce compte de canal sont ignorés (imports depuis un canal ; pour un CSV, voir plus bas), donc relancer un import n'apporte que les nouveautés.
- Pas de doublons par SKU. Un article dont le SKU correspond exactement à
un seul produit déjà présent dans Nembol (avec le même nombre de variantes)
y est lié, et le produit n'est pas écrasé. Les correspondances ambiguës
ne sont pas importées et sont comptées dans
not_imported. - La limite de produits du forfait arrête la création ; les articles au-delà
de la limite sont comptés dans
not_imported.GET /billingvous indique d'abord la marge disponible.
Filtres pour un seul import
Sans filters, l'import utilise les paramètres d'import du compte de canal
(les mêmes que dans le tableau de bord). filters les remplace pour cet
import uniquement ; les paramètres enregistrés ne changent pas.
| Filtre | Canaux | Valeurs |
|---|---|---|
quantity | tous sauf Faire, Temu, Wix | {"operator": "gt" | "lt" | "eq", "value": 0}, stock total de toutes les variantes |
status | la plupart des canaux | les valeurs propres à chaque canal, par exemple eBay Active / Unsold / All, Etsy active / draft / expired / inactive, Shopify any / published / unpublished |
listing_type | eBay | All, FixedPriceItem (Achat immédiat), Chinese (enchère) |
shop_section_id | Etsy | un id de section de boutique |
collection_id | Shopify | un id de collection (GET /channel_accounts/{id}/collections) |
category_id | WooCommerce, Wix, Square | un id de catégorie |
availability | Google Merchant Center | all, in_stock, out_of_stock |
sku_contains | Amazon | texte que le SKU doit contenir |
La liste complète des valeurs se trouve dans la référence de l'API.
Lire les avertissements
import.warnings contient des remarques en langage clair à transmettre à la
personne avant qu'elle ne se fie au résultat. Par exemple, sur certains
forfaits certains filtres sont ignorés, ou la boutique a déjà atteint sa
limite de produits. La liaison par SKU fonctionne avec tous les forfaits.
Importer un CSV
Envoyez le contenu du fichier en texte :
curl -X POST https://api.nembol.com/rest/v1/imports \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{"csv": "id,title,description,quantity,price,sku\nMUG-1,Blue mug,A blue mug,5,12.50,MUG-BLUE\n"}
JSONColonnes obligatoires : price et quantity (ou sku-code seul, pour mettre
à jour des variantes existantes par SKU : seules les colonnes envoyées
changent). Elles sont vérifiées avant tout démarrage : un fichier sans elles
répond 422 validation_failed avec error.details.missing_columns. id,
title, description et les autres sont facultatives ; sans id, une ligne
en reçoit un dérivé de son contenu, donc renvoyer le même fichier retrouve les
mêmes produits. Les exports Shopify, eBay et inkFrog sont aussi reconnus ; les
colonnes non reconnues sont listées dans import.warnings.
Lignes réimportées, une seule règle : une ligne dont l'id correspond à un
produit de la boutique (son id prod_… issu d'un export,
ou l'id de la ligne qui l'a créé) le met à jour (updated), jamais de
doublon ; une ligne sans nouveauté est comptée comme unchanged. Pour un CSV,
import.total est connu dès le départ.
Suivre la progression
Interrogez GET /operations/{id}, ou abonnez-vous à operation.completed :
{
"id": "op_8fd2c1",
"type": "import.channel",
"status": "succeeded",
"import": {
"processed": 342,
"created": 310,
"linked": 32,
"requires_attention": 3,
"not_imported": 4,
"error": null
}
}processed augmente pendant l'import. Pour un import depuis un canal, il
compte les produits créés jusqu'ici (les articles liés à un produit existant
sont comptés à la fin) ; pour un CSV, les lignes traitées. created,
updated, linked et not_imported sont renseignés à la fin. Un seul import
par compte de canal (et un seul CSV) s'exécute à la fois : une seconde requête
répond 409 import_already_running.
requires_attention compte les articles qui existent peut-être déjà dans
Nembol, sans certitude : ils arrivent en pause (to_verify) jusqu'à ce que
quelqu'un décide (voir Doublons).
Annuler un import
Annuler supprime des produits de Nembol : cela demande donc la même
confirmation en deux étapes que toute action irréversible. Le premier appel
répond 409 confirmation_required avec un confirmation.token ; montrez son
résumé à la personne et, si elle est d'accord, répétez la même requête avec le
jeton :
curl -X POST https://api.nembol.com/rest/v1/imports/op_8fd2c1/undo \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Nembol-Confirmation: cfm_3kTq9Xb2"Envoyez {"include_modified": true} comme corps pour supprimer aussi les
produits créés puis modifiés après l'import.
{
"import": {
"undone_at": "2026-10-08T10:12:00.000Z",
"undo": {
"removed": 309,
"unlinked": 32,
"kept": { "live_on_a_channel": 1, "modified_after_import": 0 }
}
}
}L'annulation retire de Nembol ce que l'import a ajouté (les produits qu'il a
créés et les liens qu'il a ajoutés aux produits existants) et ne touche
jamais à rien sur le canal : vos annonces eBay ou Etsy restent exactement
telles quelles. Dans l'API, les annonces des produits supprimés partent avec
eux : elles disparaissent de GET /listings et répondent 404 par id.
- Les produits désormais en ligne sur un canal sont toujours conservés.
- Les produits modifiés après l'import sont conservés, sauf si vous passez
"include_modified": true. - Chaque import peut être annulé une seule fois, après sa fin.
Après une annulation, relancer l'import ramène les mêmes articles.
Bonnes pratiques pour les agents
- Vérifiez
GET /billing(marge du forfait) avant un gros import, et dites combien de produits la boutique peut encore ajouter. - Expliquez à la personne ce que fera l'import (uniquement les nouveaux
articles, liaison par SKU, les filtres définis) et lisez-lui
import.warnings. - Gardez l'id de l'opération : c'est ce qu'il vous faut pour annuler.
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é.
Exports
Exports CSV des produits et des commandes : chaque format, son délimiteur et ses colonnes, et la correspondance de ses id avec l'API.
Doublons : À vérifier et Même produit
Comment les imports traitent les produits qui existent peut-être déjà, comment les résoudre, et comment fusionner deux produits en un seul.