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.
{
"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"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
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Dit 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"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
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Dit 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" }'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
| Status | Type | Wanneer |
|---|---|---|
| 409 | no-linked-store | Er is geen Shopify-winkel aan dit account gekoppeld, of er zijn er meerdere en shop ontbreekt. |
| 409 | store-not-ready | De toegang van de winkel is verlopen, of onze locatie is nog niet ingericht: open de NinjaBuy-app in Shopify één keer. |
| 422 | store-currency | De winkel verkoopt niet in US$. |
| 422 | too-many-options | De listing heeft meer dan drie opties; Shopify neemt er drie. |
| 422 | unprocessable | Elke 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" }'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
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Dit 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"HTTP/2 200 OK
{ "id": "prd_8f2k", "deleted": true }