Update stock only
PATCH/v1/products/{id}/stock
scope products.write
The cheap path for stock. One UPDATE, nothing else touched.
Request body#
| Field | Type | Required | Description |
|---|---|---|---|
stock | integer | optional | Units available — buyers can order up to this many at once. A non-negative integer; anything else is invalid_stock (400). Biklo lowers it as orders are paid. Setting 0 does not delist the product — it stays visible and unbuyable; to take it off the marketplace, POST /v1/products/{id}/archive. When a Biklo order took the LAST pieces the listing is sold and archived (product.sold); sending stock above 0 then puts it back on sale by itself. |
price | integer | optional | This route accepts price as well, in minor units. At least one of the two must be present, or you get nothing_to_update (400). |
Example
{
"stock": 2
}Response#
Example
{
"id": 237224,
"external_id": "ERP-1001",
"sku": "MTB-29-001",
"gtin": null,
"mpn": null,
"ean": null,
"title": "Bicicleta MTB Hardtail 29 inch",
"description": "A hardtail mountain bike in very good condition, barely used.",
"category_id": 4291,
"status": "active",
"is_reviewed": true,
"price": {
"amount": 249900,
"currency": "RON",
"negotiable": true
},
"stock": 4,
"shipping": {
"ship_with_us": true,
"free_shipping": false,
"shipping_class": "bike",
"parcel_tier": "large",
"weight_kg": 14.5,
"width_cm": 80,
"height_cm": 120,
"length_cm": 180
},
"group_id": null,
"images": [
{
"id": 108876841,
"position": 0,
"path": "files/237224/mtb-front.jpg",
"source_url": null
}
],
"attributes": [
{
"field_id": 32,
"option_id": 226,
"value": null
}
],
"created_at": "2026-09-01T08:14:22Z",
"updated_at": "2026-09-11T16:02:51Z"
}