Core concepts

Products, listings, channels, orders and operations — how Nembol models multichannel selling.

Five objects explain the whole API.

Product

The central catalog item, owned by Nembol. Has variants[] (SKU, price, quantity, options) and images[]. Prices are decimal strings in the store's base currency (GET /storecurrency). A product can exist locally without being on any channel — including without images (it stays a local draft until published).

Listing

The projection of a product on one channel. Lives in the product's listings[]: channel, status (listed, imported, ongoing, error, delisted), id_on_channel, url_on_channel, last error if any. You publish/delist per channel:

POST /v1/products/{id}/listings/{channel}/publish
POST /v1/products/{id}/listings/{channel}/delist

Channel

A connected sales platform (shopify, amazon, ebay, etsy, woocommerce, tiktok, …). GET /channels tells you what the store has connected. Channel identifiers are stable strings — new ones appear as Nembol adds integrations, so tolerate unknown values.

Order

A normalized order line ingested from any channel, with per-order currency, normalized status, line items and buyer info (behind the orders:read scope). Read-only in v1.

Operation

The tracker for asynchronous channel work. The key thing to understand about Nembol writes:

  1. The local write is synchronous. POST/PATCH return the updated resource immediately — what you wrote is what you get back.
  2. Channel propagation is asynchronous. It runs through Nembol's channel workers, which respect each channel's own rate limits. The response's sync block gives you an operation_id; GET /operations/{id} reports per-channel results[] (succeeded, failed, channel_rate_limited, simulated), and an operation can end partial.

Instead of polling operations, subscribe to the operation.completed webhook.

How sync behaves

  • Writes from the API are queued behind order-driven updates and dashboard actions — an integration can never starve order sync.
  • When a channel throttles, Nembol backs off and retries; the operation shows channel_rate_limited in the meantime.
  • Deleting a product delists it everywhere first, then soft-deletes locally. Irreversible.

Last updated on July 28, 2026

Need help?

The API is in private beta — email us and a human replies, usually within one business day.

On this page