Catalogus-API2026-11Preview
Syncregels
Wat er met je listing gebeurt als een verkoper in China een prijs verandert of uitverkocht raakt.
- We lezen een listing opnieuw wanneer er een bestelling voor binnenkomt en volgens een vast schema; last_checked_at van elk product zegt wanneer we dat laatst deden. Producten gesynchroniseerd houden is gratis.
- Elke wijziging waarop we reageren, is ook een event: product.cost_changed en product.out_of_stock.
Het Sync rule-object
idstring- Begint met rule_; de standaardregel is rule_default.
applies_tostring- all voor de standaardregel, of een product-id voor een uitzondering.
on_cost_increase.actionstring- prijs aanpassen om je marge te behouden, het product pauzeren, of alleen melden.
on_cost_increase.keep_margin_percentstring- Met reprice: de marge die je houdt, van de verkoopprijs.
on_cost_increase.max_increase_percentstring|null- Met reprice: de grootste stijging die een prijs in één keer mag maken. Daarboven geldt above_max: pauzeren of melden.
on_cost_decreasestring- keep_price, of de prijs omlaag aanpassen naar dezelfde marge.
on_out_of_stockstring- Altijd zero_stock: een uitverkochte SKU toont 0 op je kanalen.
on_back_in_stockstring- restock, of stay_paused tot je het hervat.
round_tostring|null- Een prijsafronding voor aangepaste prijzen, zoals ,99 of ,00.
{
"id": "rule_default",
"applies_to": "all",
"on_cost_increase": {
"action": "reprice",
"keep_margin_percent": "30",
"max_increase_percent": "15",
"above_max": "pause"
},
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "restock",
"round_to": ".99",
"updated_at": "2026-11-02T08:00:00Z"
}Syncregels opvragen
GET/v1/sync_rules
Eerst de standaardregel, daarna elke uitzondering per product.
Scopeproducts:read
curl "https://www.ninjabuy.com/api/v1/sync_rules" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{
"data": [
{
"id": "rule_default",
"applies_to": "all",
"on_cost_increase": {
"action": "reprice",
"keep_margin_percent": "30",
"max_increase_percent": "15",
"above_max": "pause"
},
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "restock",
"round_to": ".99",
"updated_at": "2026-11-02T08:00:00Z"
},
{
"id": "rule_9p3e",
"applies_to": "prd_1x0a",
"on_cost_increase": { "action": "pause" },
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "stay_paused",
"round_to": null,
"updated_at": "2026-11-03T10:14:00Z"
}
],
"has_more": false,
"cursor": null
}Een syncregel ophalen
GET/v1/sync_rules/{id}
Eén regel.
Scopeproducts:read
Padparameters
idstringverplicht- De id van de regel.
Fouten
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Deze regel bestaat niet op dit account. |
curl "https://www.ninjabuy.com/api/v1/sync_rules/rule_default" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{
"id": "rule_default",
"applies_to": "all",
"on_cost_increase": {
"action": "reprice",
"keep_margin_percent": "30",
"max_increase_percent": "15",
"above_max": "pause"
},
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "restock",
"round_to": ".99",
"updated_at": "2026-11-02T08:00:00Z"
}Uitzondering voor een product
POST/v1/sync_rules
Een product met een eigen regel volgt die in plaats van de standaard. Velden die je weglaat, nemen de standaard over.
Scopeproducts:write
Body
applies_tostringverplicht- all voor de standaardregel, of een product-id voor een uitzondering.
on_cost_increase.actionstring- prijs aanpassen om je marge te behouden, het product pauzeren, of alleen melden.
on_cost_increase.keep_margin_percentstring- Met reprice: de marge die je houdt, van de verkoopprijs.
on_cost_increase.max_increase_percentstring|null- Met reprice: de grootste stijging die een prijs in één keer mag maken. Daarboven geldt above_max: pauzeren of melden.
on_cost_decreasestring- keep_price, of de prijs omlaag aanpassen naar dezelfde marge.
on_out_of_stockstring- Altijd zero_stock: een uitverkochte SKU toont 0 op je kanalen.
on_back_in_stockstring- restock, of stay_paused tot je het hervat.
round_tostring|null- Een prijsafronding voor aangepaste prijzen, zoals ,99 of ,00.
Fouten
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Dit product bestaat niet op dit account. |
| 409 | invalid-state | Het product heeft al een uitzondering: vervang die. |
curl -X POST "https://www.ninjabuy.com/api/v1/sync_rules" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"applies_to": "prd_1x0a",
"on_cost_increase": { "action": "pause" },
"on_back_in_stock": "stay_paused"
}'HTTP/2 201 Created
{
"id": "rule_9p3e",
"applies_to": "prd_1x0a",
"on_cost_increase": { "action": "pause" },
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "stay_paused",
"round_to": null,
"updated_at": "2026-11-03T10:14:00Z"
}Een syncregel vervangen
PUT/v1/sync_rules/{id}
Stuur de hele regel. Hij geldt vanaf de volgende keer dat we elke listing lezen.
Scopeproducts:write
Padparameters
idstringverplicht- De id van de regel.
Body
on_cost_increase.actionstring- prijs aanpassen om je marge te behouden, het product pauzeren, of alleen melden.
on_cost_increase.keep_margin_percentstring- Met reprice: de marge die je houdt, van de verkoopprijs.
on_cost_increase.max_increase_percentstring|null- Met reprice: de grootste stijging die een prijs in één keer mag maken. Daarboven geldt above_max: pauzeren of melden.
on_cost_decreasestring- keep_price, of de prijs omlaag aanpassen naar dezelfde marge.
on_out_of_stockstring- Altijd zero_stock: een uitverkochte SKU toont 0 op je kanalen.
on_back_in_stockstring- restock, of stay_paused tot je het hervat.
round_tostring|null- Een prijsafronding voor aangepaste prijzen, zoals ,99 of ,00.
Fouten
| Status | Type | Wanneer |
|---|---|---|
| 404 | not-found | Deze regel bestaat niet op dit account. |
curl -X PUT "https://www.ninjabuy.com/api/v1/sync_rules/rule_default" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11" \
-H "Content-Type: application/json" \
-d '{
"on_cost_increase": { "action": "notify" },
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "restock",
"round_to": ".99"
}'HTTP/2 200 OK
{
"id": "rule_default",
"applies_to": "all",
"on_cost_increase": { "action": "notify" },
"on_cost_decrease": "keep_price",
"on_out_of_stock": "zero_stock",
"on_back_in_stock": "restock",
"round_to": ".99",
"updated_at": "2026-11-02T08:00:00Z"
}Een uitzondering verwijderen
DELETE/v1/sync_rules/{id}
Het product volgt weer de standaardregel. rule_default zelf kan niet worden verwijderd.
Scopeproducts:write
Padparameters
idstringverplicht- De id van de regel.
Fouten
| Status | Type | Wanneer |
|---|---|---|
| 409 | invalid-state | rule_default kan niet worden verwijderd. |
curl -X DELETE "https://www.ninjabuy.com/api/v1/sync_rules/rule_9p3e" \
-H "Authorization: Bearer $NINJABUY_API_KEY" \
-H "NinjaBuy-Version: 2026-11"HTTP/2 200 OK
{ "id": "rule_9p3e", "deleted": true }