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 → DevelopersCreate 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

Terminal
curl https://api.nembol.com/rest/v1/channel_accounts \
  -H "Authorization: Bearer $NEMBOL_API_KEY"
Response
{
  "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:

Response
{
  "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):

Terminal
curl https://api.nembol.com/rest/v1/listings/list_9ac2e \
  -H "Authorization: Bearer $NEMBOL_API_KEY"
Response
{
  "id": "list_9ac2e",
  "status": "listed",
  "id_on_channel": "8571…",
  "url_on_channel": "https://acme-vintage.myshopify.com/products/vintage-denim-jacket"
}

status goes ongoinglisted. If the channel rejects it, you get status: "error" with the reason in issues[]. Done — your product is live.

What's next

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