Aus dem Englischen übersetzt. Bei Abweichungen gilt die englische Seite. Auf Englisch lesen

Produkte importieren

Hol den Katalog eines verbundenen Kanals oder eine CSV-Datei aus deiner App oder deinem Agenten in Nembol: nur neue Artikel, Verknüpfung über die SKU, Filter für einen einzelnen Import, Live-Fortschritt und Rückgängigmachen.

POST /imports führt denselben Import aus wie das Nembol-Dashboard, im Hintergrund und mit denselben Regeln. Dein Schlüssel braucht products:write.

Den Katalog eines Kanals importieren

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
  }
}

Was hereinkommt, genau wie bei einem Import im Dashboard:

  • Nur neue Artikel. Artikel, die bereits von diesem Kanalkonto importiert wurden, werden übersprungen (bei Kanalimporten; für CSV siehe unten). Ein erneuter Import holt also nur Neues.
  • Keine Duplikate über die SKU. Ein Artikel, dessen SKU genau einem bereits in Nembol vorhandenen Produkt entspricht (mit gleich vielen Varianten), wird mit diesem verknüpft, und das Produkt wird nicht überschrieben. Mehrdeutige Treffer werden nicht importiert und in not_imported gezählt.
  • Das Produktlimit des Plans stoppt das Anlegen; Artikel über dem Limit werden in not_imported gezählt. GET /billing zeigt dir vorher den verbleibenden Spielraum.

Filter für einen einzelnen Import

Ohne filters verwendet der Import die Importeinstellungen des Kanalkontos (dieselben wie im Dashboard). filters überschreiben sie nur für diesen Import; die gespeicherten Einstellungen ändern sich nicht.

FilterKanäleWerte
quantityalle außer Faire, Temu, Wix{"operator": "gt" | "lt" | "eq", "value": 0}, Gesamtbestand über alle Varianten
statusdie meisten Kanäledie eigenen Werte jedes Kanals, z. B. eBay Active / Unsold / All, Etsy active / draft / expired / inactive, Shopify any / published / unpublished
listing_typeeBayAll, FixedPriceItem (Sofort-Kaufen), Chinese (Auktion)
shop_section_idEtsyeine Shop-Bereichs-ID
collection_idShopifyeine Kollektions-ID (GET /channel_accounts/{id}/collections)
category_idWooCommerce, Wix, Squareeine Kategorie-ID
availabilityGoogle Merchant Centerall, in_stock, out_of_stock
sku_containsAmazonText, den die SKU enthalten muss

Die vollständige Liste der Werte steht in der API-Referenz.

Die Warnungen lesen

import.warnings enthält Hinweise in einfacher Sprache, die du an die Person weitergeben solltest, bevor sie sich auf das Ergebnis verlässt. Zum Beispiel werden bei manchen Plänen einige Filter ignoriert, oder der Shop hat sein Produktlimit bereits erreicht. Das Verknüpfen per SKU funktioniert in jedem Plan.

Eine CSV-Datei importieren

Sende den Dateiinhalt als Text:

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"}
JSON

Pflichtspalten: price und quantity (oder nur sku-code, um vorhandene Varianten über die SKU zu aktualisieren: Nur die Spalten, die du sendest, ändern sich). Sie werden geprüft, bevor irgendetwas startet: Eine Datei ohne sie antwortet mit 422 validation_failed und error.details.missing_columns. id, title, description und der Rest sind optional; ohne id erhält eine Zeile eine aus ihrem Inhalt abgeleitete ID, sodass ein erneuter Upload derselben Datei dieselben Produkte findet. Exporte aus Shopify, eBay und inkFrog werden ebenfalls erkannt; nicht erkannte Spalten werden in import.warnings aufgeführt.

Erneut importierte Zeilen, eine Regel: Eine Zeile, deren id einem Produkt im Shop entspricht (seiner prod_…-ID aus einem Export oder der id der Zeile, die es angelegt hat), aktualisiert es (updated), nie ein Duplikat; eine Zeile ohne Neuigkeiten wird als unchanged gezählt. Bei einer CSV-Datei ist import.total von Anfang an bekannt.

Den Fortschritt verfolgen

Frage GET /operations/{id} ab oder abonniere 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 wächst, während der Import läuft. Bei einem Kanalimport zählt es die bisher angelegten Produkte (mit einem vorhandenen Produkt verknüpfte Artikel werden am Ende gezählt), bei einer CSV-Datei die verarbeiteten Zeilen. created, updated, linked und not_imported werden gesetzt, wenn er abgeschlossen ist. Pro Kanalkonto (und pro CSV) läuft jeweils nur ein Import: Eine zweite Anfrage antwortet mit 409 import_already_running.

requires_attention zählt die Artikel, die möglicherweise schon in Nembol existieren, aber nicht mit Sicherheit: Sie kommen pausiert herein (to_verify), bis jemand entscheidet (siehe Duplikate).

Einen Import rückgängig machen

Das Rückgängigmachen entfernt Produkte aus Nembol, daher verlangt es dieselbe zweistufige Bestätigung wie jede unumkehrbare Aktion. Der erste Aufruf antwortet mit 409 confirmation_required und einem confirmation.token; zeig der Person die Zusammenfassung und wiederhole, wenn sie zustimmt, dieselbe Anfrage mit dem Token:

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"

Sende {"include_modified": true} als Body, um auch angelegte Produkte zu entfernen, die nach dem Import bearbeitet wurden.

{
  "import": {
    "undone_at": "2026-10-08T10:12:00.000Z",
    "undo": {
      "removed": 309,
      "unlinked": 32,
      "kept": { "live_on_a_channel": 1, "modified_after_import": 0 }
    }
  }
}

Das Rückgängigmachen entfernt aus Nembol, was der Import hinzugefügt hat (die angelegten Produkte und die Verknüpfungen mit vorhandenen Produkten), und ändert nie etwas auf dem Kanal: Deine eBay- oder Etsy-Angebote bleiben genau, wie sie sind. In der API verschwinden die Angebote der entfernten Produkte mit ihnen: Sie fehlen in GET /listings und antworten über ihre ID mit 404.

  • Produkte, die inzwischen auf einem Kanal live sind, bleiben immer erhalten.
  • Produkte, die nach dem Import bearbeitet wurden, bleiben erhalten, außer du übergibst "include_modified": true.
  • Jeder Import kann einmal rückgängig gemacht werden, nachdem er abgeschlossen ist.

Nach dem Rückgängigmachen holt ein erneuter Import dieselben Artikel zurück.

Gute Praxis für Agenten

  • Prüfe vor einem großen Import GET /billing (Spielraum des Plans) und sag, wie viele Produkte der Shop noch hinzufügen kann.
  • Sag der Person, was der Import tun wird (nur neue Artikel, Verknüpfung über die SKU, die gesetzten Filter), und lies ihr import.warnings vor.
  • Bewahre die ID der Operation auf: Du brauchst sie zum Rückgängigmachen.

Zuletzt aktualisiert am 20. Oktober 2026

Brauchst du Hilfe?

Schreib uns, und ein Mensch antwortet, meist innerhalb eines Werktags.

Auf dieser Seite