Raise or lower prices by a percentage or an amount
POST /rest/v1/inventory/price_adjustment
Re-prices EVERY variant of up to 100 products. percentage: price × (1 + value/100); absolute: price + value (store currency); negative values lower prices. With rounding, results are rounded to the nearest whole amount minus 0.01 (e.g. 17.62 → 17.99). The new prices are pushed to every channel the product is live on (channel price rules still apply on top).
One operation result per variant and per live channel (like POST /inventory/batch: pending, then succeeded or failed for that channel) carries previous_price and price, the undo record. Send the previous prices back with POST /inventory/batch. A product whose new price would go below 0.01 is left untouched (price_below_minimum); unknown products fail per item. Requires inventory:write.
Authorization
apiKey Authorization: Bearer nbl_live_... (or nbl_test_... for test mode). Test-mode writes are validated and simulated but never persisted and never touch channels; simulated results are marked simulated.
In: header
Header Parameters
Unique client-generated key (max 255 chars), stored 24h.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/inventory/price_adjustment" \ -H "Content-Type: application/json" \ -d '{ "product_ids": [ "prod_66a1f0", "prod_66a1f1" ], "mode": "percentage", "value": -15, "rounding": true }'{ "id": "op_8fd2c1", "object": "operation", "type": "string", "status": "pending", "resource_type": "string", "resource_id": "string", "results": [ { "channel_account_id": "string", "product_id": "string", "listing_id": "string", "sku": "string", "variant_id": "string", "previous_price": "19.90", "price": "19.90", "status": "pending", "error": { "code": "string", "message": "string", "details": {} } } ], "import": { "source": "channel", "channel_account_id": "string", "filters": {}, "warnings": [ "string" ], "processed": 0, "total": 0, "created": 0, "updated": 0, "unchanged": 0, "linked": 0, "not_imported": 0, "requires_attention": 0, "error": "string", "undone_at": "2019-08-24T14:15:22Z", "undo": { "removed": 0, "unlinked": 0, "kept": { "live_on_a_channel": 0, "modified_after_import": 0 } } }, "created_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z"}Last updated on October 16, 2026
Need help?
Email us and a human replies, usually within one business day.