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.
sync_rule
{
  "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"
Response 200
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

StatusTypeWanneer
404not-foundDeze 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"
Response 200
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

StatusTypeWanneer
404not-foundDit product bestaat niet op dit account.
409invalid-stateHet 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"
  }'
Response 201
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

StatusTypeWanneer
404not-foundDeze 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"
  }'
Response 200
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

StatusTypeWanneer
409invalid-staterule_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"
Response 200
HTTP/2 200 OK

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