Catalogus-API2026-11Preview

Producten

Een listing die je uit een import hebt opgeslagen, met jouw titel en prijzen en de winkels waar hij verkoopt.
  • Producten worden naar Shopify gestuurd. Bestellingen van de marktplaatsen waarop je Shopify-winkel verkoopt, bereiken ons ook via Shopify: Een winkel koppelen.
  • Een WooCommerce- of Wix-winkel houdt zijn eigen producten en stuurt zijn bestellingen met Een bestelling aanmaken.

Het Product-object

idstring
Begint met prd_.
titlestring
Je titel. Die van de verkoper blijft bij de import.
statusstring
active of paused (door jou, of door een syncregel als de kosten te veel stegen of de verkoper uitverkocht was).
sourceobject
Marktplaats, listinglink en verkoper in China.
options[]array
Optienamen, maximaal drie, zoals je winkel ze toont.
price_range, cost_rangeobject
Jouw prijzen en die van de verkoper, over alle varianten.
channels[]array
Waar het staat: de winkel, de eigen product-id daar, en de status daar.
syncobject
De syncregel die het volgt, en wanneer we de listing voor het laatst lazen.
importstring
De import waaruit het is opgeslagen.
product
{
  "id": "prd_8f2k",
  "title": "Heavyweight Washed Hoodie",
  "status": "active",
  "source": {
    "marketplace": "weidian",
    "url": "https://weidian.com/item.html?itemID=7750970856",
    "seller": "Ruoyi Studio"
  },
  "options": ["Color", "Size"],
  "variants_count": 6,
  "price_range": {
    "min": { "amount": "49.99", "currency": "USD" },
    "max": { "amount": "54.99", "currency": "USD" }
  },
  "cost_range": {
    "min": { "amount": "38.00", "currency": "CNY" },
    "max": { "amount": "42.00", "currency": "CNY" }
  },
  "channels": [
    {
      "channel": "shopify",
      "shop": "acme-goods.myshopify.com",
      "external_id": "gid://shopify/Product/8812042",
      "status": "draft",
      "pushed_at": "2026-11-04T09:20:03Z"
    }
  ],
  "sync": {
    "rule": "rule_default",
    "last_checked_at": "2026-11-04T09:12:40Z"
  },
  "import": "imp_2c9d",
  "created_at": "2026-11-04T09:20:01Z",
  "updated_at": "2026-11-04T09:20:03Z"
}

Producten opvragen

GET/v1/products

Je producten, nieuwste eerst.

Scopeproducts:read

Queryparameters

statusstring
Optioneel. active of paused.
channelstring
Optioneel. shopify, voor de producten die daar staan.
changed_sincestring
Optioneel. Een tijdstip: alleen producten waarvan de kosten of voorraad sindsdien zijn veranderd.
limit, cursor
Pagination
curl "https://www.ninjabuy.com/api/v1/products?status=active&limit=2" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "data": [
    {
      "id": "prd_8f2k",
      "title": "Heavyweight Washed Hoodie",
      "status": "active",
      "variants_count": 6
    },
    {
      "id": "prd_1x0a",
      "title": "Canvas Tote",
      "status": "active",
      "variants_count": 3
    }
  ],
  "has_more": true,
  "cursor": "c_1x0a"
}

Een product ophalen

GET/v1/products/{id}

Eén product met de bron, kanalen en sync-status. De varianten hebben een eigen route.

Scopeproducts:read

Padparameters

idstringverplicht
De id van het product.

Fouten

StatusTypeWanneer
404not-foundDit product bestaat niet op dit account.
curl "https://www.ninjabuy.com/api/v1/products/prd_8f2k" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{
  "id": "prd_8f2k",
  "title": "Heavyweight Washed Hoodie",
  "status": "active",
  "source": {
    "marketplace": "weidian",
    "url": "https://weidian.com/item.html?itemID=7750970856",
    "seller": "Ruoyi Studio"
  },
  "options": ["Color", "Size"],
  "variants_count": 6,
  "price_range": {
    "min": { "amount": "49.99", "currency": "USD" },
    "max": { "amount": "54.99", "currency": "USD" }
  },
  "cost_range": {
    "min": { "amount": "38.00", "currency": "CNY" },
    "max": { "amount": "42.00", "currency": "CNY" }
  },
  "channels": [
    {
      "channel": "shopify",
      "shop": "acme-goods.myshopify.com",
      "external_id": "gid://shopify/Product/8812042",
      "status": "draft",
      "pushed_at": "2026-11-04T09:20:03Z"
    }
  ],
  "sync": {
    "rule": "rule_default",
    "last_checked_at": "2026-11-04T09:12:40Z"
  },
  "import": "imp_2c9d",
  "created_at": "2026-11-04T09:20:01Z",
  "updated_at": "2026-11-04T09:20:03Z"
}

Een product bijwerken

PATCH/v1/products/{id}

Wijzig de titel of beschrijving, of pauzeer en hervat het. Stuur alleen wat verandert. Prijzen gelden per variant (Varianten); een doorgestuurd product neemt de wijziging bij de volgende keer doorsturen mee naar je winkel.

Scopeproducts:write

Padparameters

idstringverplicht
De id van het product.

Body

titlestring
Optioneel.
descriptionstring
Optioneel. HTML die je winkel toont.
statusstring
Optioneel. active of paused. Paused zet de voorraad op je kanalen op 0.
sync_rulestring
Optioneel. Een syncregel-id; de standaardregel bij null.

Fouten

StatusTypeWanneer
404not-foundDit product bestaat niet op dit account.
curl -X PATCH "https://www.ninjabuy.com/api/v1/products/prd_8f2k" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Content-Type: application/json" \
  -d '{ "status": "paused" }'
Response 200
HTTP/2 200 OK

{
  "id": "prd_8f2k",
  "title": "Heavyweight Washed Hoodie",
  "status": "paused",
  "source": {
    "marketplace": "weidian",
    "url": "https://weidian.com/item.html?itemID=7750970856",
    "seller": "Ruoyi Studio"
  },
  "options": ["Color", "Size"],
  "variants_count": 6,
  "price_range": {
    "min": { "amount": "49.99", "currency": "USD" },
    "max": { "amount": "54.99", "currency": "USD" }
  },
  "cost_range": {
    "min": { "amount": "38.00", "currency": "CNY" },
    "max": { "amount": "42.00", "currency": "CNY" }
  },
  "channels": [
    {
      "channel": "shopify",
      "shop": "acme-goods.myshopify.com",
      "external_id": "gid://shopify/Product/8812042",
      "status": "draft",
      "pushed_at": "2026-11-04T09:20:03Z"
    }
  ],
  "sync": {
    "rule": "rule_default",
    "last_checked_at": "2026-11-04T09:12:40Z"
  },
  "import": "imp_2c9d",
  "created_at": "2026-11-04T09:20:01Z",
  "updated_at": "2026-11-04T09:20:03Z"
}

Naar Shopify sturen

POST/v1/products/{id}/push

Zet het product in je gekoppelde Shopify-winkel: één Shopify-product, een variant per SKU die je hebt gehouden, de foto's, elke variant op voorraad op de locatie Fulfilled by NinjaBuy, zodat de bestellingen ervoor naar ons komen.

  • De eerste keer doorsturen maakt het aan als concept: de titel en foto's kwamen van een Chinese marktplaats, dus lees ze voordat je kopers dat doen, en publiceer dan in Shopify.
  • Opnieuw doorsturen werkt hetzelfde Shopify-product bij: prijzen en voorraad worden opnieuw ingesteld, varianten die je hebt laten vallen worden verwijderd. Status, titel, beschrijving en foto's blijven zoals je ze in Shopify liet, tenzij je nieuwe stuurt.
  • Voorraad is het aantal van de verkoper, gemaximeerd op 100: we kopen op aanvraag, dus het is hoeveel bestellingen Shopify aanneemt voordat het uitverkocht toont.
  • Je winkel moet in US$ verkopen, omdat de prijzen daarin staan. Uitverkochte varianten worden overgeslagen en genoemd in skipped[].

Scopeproducts:write

Padparameters

idstringverplicht
De id van het product.

Body

shopstring
Welke gekoppelde winkel, zoals acme-goods.myshopify.com. Alleen nodig als je er meerdere hebt gekoppeld.
title, descriptionstring
Optioneel. Alleen naar Shopify gestuurd als je ze meestuurt.

Fouten

StatusTypeWanneer
409no-linked-storeEr is geen Shopify-winkel aan dit account gekoppeld, of er zijn er meerdere en shop ontbreekt.
409store-not-readyDe toegang van de winkel is verlopen, of onze locatie is nog niet ingericht: open de NinjaBuy-app in Shopify één keer.
422store-currencyDe winkel verkoopt niet in US$.
422too-many-optionsDe listing heeft meer dan drie opties; Shopify neemt er drie.
422unprocessableElke variant is uitverkocht, of Shopify weigerde een veld; detail geeft de woorden door.
curl -X POST "https://www.ninjabuy.com/api/v1/products/prd_8f2k/push" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "shop": "acme-goods.myshopify.com" }'
Response 200
HTTP/2 200 OK

{
  "channel": "shopify",
  "shop": "acme-goods.myshopify.com",
  "external_id": "gid://shopify/Product/8812042",
  "status": "draft",
  "created": true,
  "variants": 5,
  "skipped": [{ "sku": "5187209555", "reason": "sold_out" }],
  "admin_url": "https://admin.shopify.com/store/acme-goods/products/8812042"
}

Een product verwijderen

DELETE/v1/products/{id}

Stopt de synchronisatie en zet de voorraad op je kanalen op 0; het Shopify-product blijft staan zodat je het kunt archiveren. Al geplaatste bestellingen worden nog verzonden.

Scopeproducts:write

Padparameters

idstringverplicht
De id van het product.

Fouten

StatusTypeWanneer
404not-foundDit product bestaat niet op dit account.
curl -X DELETE "https://www.ninjabuy.com/api/v1/products/prd_8f2k" \
  -H "Authorization: Bearer $NINJABUY_API_KEY" \
  -H "NinjaBuy-Version: 2026-11"
Response 200
HTTP/2 200 OK

{ "id": "prd_8f2k", "deleted": true }