Quickstart
From API key to a product live on a channel, in under 5 minutes.
By the end of this page you will have created a product through the API and
published it to one of your connected channels, watching its status go from
ongoing to listed.
Prerequisites
- A Nembol store on an Enterprise plan (or a beta invite).
- At least one connected channel (Channels page in the dashboard).
- An API key: dashboard → Settings → Developers → Create key. Use a
nbl_test_key while you integrate — test keys validate everything but never touch your live channels.
Use your key in the examples
Paste a test key (nbl_test_…) and every code block on this site fills it in for you. It is stored only in this browser — never sent anywhere.
Check your key
curl https://api.nembol.com/rest/v1/store \
-H "Authorization: Bearer $NEMBOL_API_KEY"The response tells you the store, its base currency (all product prices are
in this currency) and the scopes of your key.
See your connected channel accounts
curl https://api.nembol.com/rest/v1/channel_accounts \
-H "Authorization: Bearer $NEMBOL_API_KEY"{
"data": [
{
"id": "chac_66a1f09b2",
"object": "channel_account",
"channel": "shopify",
"label": "Shopify",
"shop_name": "acme-vintage",
"status": "connected"
}
]
}Keep the id — it identifies this exact account, even if you have several
accounts on the same channel.
Create a product
curl -X POST https://api.nembol.com/rest/v1/products \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: quickstart-001" \
-d '{
"title": "Vintage denim jacket",
"description": "Classic 90s denim jacket, size M.",
"price": "49.90",
"quantity": 3,
"sku": "VDJ-M-001",
"images": [{ "url": "https://example.com/jacket.jpg" }]
}'You get 201 with the full product back immediately — the local write is
synchronous. It exists in Nembol but is not on any channel yet.
Publish it to a channel
A listing is a product on one channel account. Create one:
curl -X POST https://api.nembol.com/rest/v1/listings \
-H "Authorization: Bearer $NEMBOL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: quickstart-002" \
-d '{
"product_id": "prod_64a91c3f2",
"channel_account_id": "chac_66a1f09b2"
}'The response is 202 — publishing runs through Nembol's channel workers:
{
"id": "list_9ac2e",
"object": "listing",
"product_id": "prod_64a91c3f2",
"channel_account_id": "chac_66a1f09b2",
"channel": "shopify",
"status": "ongoing"
}Posting the same (product_id, channel_account_id) pair again returns this
same listing — no duplicates.
Watch it go live
Poll the listing (or, better, subscribe to the
listing.status_changed webhook):
curl https://api.nembol.com/rest/v1/listings/list_9ac2e \
-H "Authorization: Bearer $NEMBOL_API_KEY"{
"id": "list_9ac2e",
"status": "listed",
"id_on_channel": "8571…",
"url_on_channel": "https://acme-vintage.myshopify.com/products/vintage-denim-jacket"
}status goes ongoing → listed. If the channel rejects it, you get
status: "error" with the reason in issues[]. Done — your product is live.
What's next
Core concepts
Products, listings, channels, operations — how the pieces fit.
Sync inventory
Update stock and prices in bulk, by SKU.
Webhooks
Get order and inventory events pushed to you.
Errors
The error envelope and every error code.
Need help?
The API is in private beta — email us and a human replies, usually within one business day.