카탈로그 API2026-11프리뷰
동기화 규칙
중국 판매자가 가격을 바꾸거나 품절될 때 내 상품에 일어나는 일.
- 주문이 들어올 때와 정기 일정에 따라 상품을 다시 읽어요. 각 상품의 last_checked_at에 마지막으로 읽은 시각이 있어요. 상품 동기화는 무료예요.
- 저희가 조치한 모든 변경은 이벤트로도 발생해요: product.cost_changed와 product.out_of_stock.
Sync rule 객체
idstring- rule_로 시작해요. 기본 규칙은 rule_default예요.
applies_tostring- 기본 규칙이면 all, 개별 규칙이면 상품 ID.
on_cost_increase.actionstring- 마진을 지키도록 가격 변경, 상품 일시 중지, 또는 알림만.
on_cost_increase.keep_margin_percentstring- reprice일 때: 판매 가격 대비 지킬 마진.
on_cost_increase.max_increase_percentstring|null- reprice일 때: 한 번에 올릴 수 있는 최대 가격 인상. 넘으면 above_max가 적용돼요: pause 또는 notify.
on_cost_decreasestring- keep_price 또는 같은 마진까지 가격 인하.
on_out_of_stockstring- 항상 zero_stock: 품절된 SKU는 채널에서 0으로 표시돼요.
on_back_in_stockstring- restock 또는 재개할 때까지 stay_paused.
round_tostring|null- 가격 변경 시 끝자리(.99, .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"
}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
}동기화 규칙 조회
GET/v1/sync_rules/{id}
규칙 하나.
범위products:read
경로 매개변수
idstring필수- 규칙 ID.
오류
| 상태 | 유형 | 시점 |
|---|---|---|
| 404 | not-found | 이 계정에 해당 규칙이 없어요. |
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"
}상품별 개별 규칙
POST/v1/sync_rules
개별 규칙이 있는 상품은 기본 규칙 대신 그 규칙을 따라요. 생략한 필드는 기본 규칙 값을 사용해요.
범위products:write
본문
applies_tostring필수- 기본 규칙이면 all, 개별 규칙이면 상품 ID.
on_cost_increase.actionstring- 마진을 지키도록 가격 변경, 상품 일시 중지, 또는 알림만.
on_cost_increase.keep_margin_percentstring- reprice일 때: 판매 가격 대비 지킬 마진.
on_cost_increase.max_increase_percentstring|null- reprice일 때: 한 번에 올릴 수 있는 최대 가격 인상. 넘으면 above_max가 적용돼요: pause 또는 notify.
on_cost_decreasestring- keep_price 또는 같은 마진까지 가격 인하.
on_out_of_stockstring- 항상 zero_stock: 품절된 SKU는 채널에서 0으로 표시돼요.
on_back_in_stockstring- restock 또는 재개할 때까지 stay_paused.
round_tostring|null- 가격 변경 시 끝자리(.99, .00 등).
오류
| 상태 | 유형 | 시점 |
|---|---|---|
| 404 | not-found | 이 계정에 해당 상품이 없어요. |
| 409 | invalid-state | 상품에 이미 개별 규칙이 있어요. 그것을 교체하세요. |
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"
}동기화 규칙 교체
PUT/v1/sync_rules/{id}
규칙 전체를 보내세요. 각 상품을 다음에 읽을 때부터 적용돼요.
범위products:write
경로 매개변수
idstring필수- 규칙 ID.
본문
on_cost_increase.actionstring- 마진을 지키도록 가격 변경, 상품 일시 중지, 또는 알림만.
on_cost_increase.keep_margin_percentstring- reprice일 때: 판매 가격 대비 지킬 마진.
on_cost_increase.max_increase_percentstring|null- reprice일 때: 한 번에 올릴 수 있는 최대 가격 인상. 넘으면 above_max가 적용돼요: pause 또는 notify.
on_cost_decreasestring- keep_price 또는 같은 마진까지 가격 인하.
on_out_of_stockstring- 항상 zero_stock: 품절된 SKU는 채널에서 0으로 표시돼요.
on_back_in_stockstring- restock 또는 재개할 때까지 stay_paused.
round_tostring|null- 가격 변경 시 끝자리(.99, .00 등).
오류
| 상태 | 유형 | 시점 |
|---|---|---|
| 404 | not-found | 이 계정에 해당 규칙이 없어요. |
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"
}개별 규칙 삭제
DELETE/v1/sync_rules/{id}
상품이 다시 기본 규칙을 따라요. rule_default 자체는 삭제할 수 없어요.
범위products:write
경로 매개변수
idstring필수- 규칙 ID.
오류
| 상태 | 유형 | 시점 |
|---|---|---|
| 409 | invalid-state | rule_default는 삭제할 수 없어요. |
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 }