Developers › Docs › API reference › Update a product
Update a product
Edits the product and applies the change to every listing that's currently up. Send only the fields you're changing. Anything you leave out stays as it is.
curl -X PATCH "https://fluf.io/wp-json/fc/api/v1/items/fluf_326428506_0" \
-H "Authorization: Bearer fluf_pat_your_token" \
-H "Content-Type: application/json" \
-d '{
"title": "Vintage Levi'"'"'s 501 jeans — W32 L32",
"description": "Classic straight-leg 501s.\n\nShipped within 2 days from our London studio.",
"price": 39.00
}'const res = await fetch("https://fluf.io/wp-json/fc/api/v1/items/fluf_326428506_0", {
method: "PATCH",
headers: {
"Authorization": "Bearer fluf_pat_your_token",
"Content-Type": "application/json",
},
body: JSON.stringify({
"title": "Vintage Levi's 501 jeans — W32 L32",
"description": "Classic straight-leg 501s.\n\nShipped within 2 days from our London studio.",
"price": 39.0
}),
});
const data = await res.json();import requests
res = requests.patch(
"https://fluf.io/wp-json/fc/api/v1/items/fluf_326428506_0",
headers={
"Authorization": "Bearer fluf_pat_your_token",
},
json={
"title": "Vintage Levi's 501 jeans — W32 L32",
"description": "Classic straight-leg 501s.\n\nShipped within 2 days from our London studio.",
"price": 39.0,
},
)
data = res.json()<?php
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client();
$res = $client->request('PATCH', 'https://fluf.io/wp-json/fc/api/v1/items/fluf_326428506_0', [
'headers' => [
'Authorization' => 'Bearer fluf_pat_your_token',
],
'json' => [
'title' => 'Vintage Levi\'s 501 jeans — W32 L32',
'description' => "Classic straight-leg 501s.\n\nShipped within 2 days from our London studio.",
'price' => 39.0,
],
]);
$data = json_decode((string) $res->getBody(), true);{
"vid": "fluf_326428506_0",
"fluf_id": 326428506,
"updated": ["title", "description", "price"],
"product": { "title": "Vintage Levi's 501 jeans — W32 L32", "price": 39, "…": "…" },
"listings_queued": ["ebay", "depop"],
"listings": [ { "channel": "ebay", "state": "live", "…": "…" } ]
}Body parameters
Accepts title, description, price, brand, category, condition, size, department, colours, sku, stock, weight and photos, with the same types as POST /products.
photosreplaces the product's photos, in the order you send them. To keep a current photo, send its URL back asGET /items/{vid}returned it. To add one, send the full list with the new URL included.pricehere is the product's own price. It changes on every listing. UsePOST /itemswith a targetpriceto change one account only.update_listings: falsechanges the product in FLUF without touching the live listings.
Returns
listings_queued names the marketplaces the change is being sent to. If the product is live in more than one of your accounts on the same marketplace, each of those listings is updated.
On accounts flagged runs_in_browser: true, only the product's main listing is updated for now. Updates happen in the background: each listing reports back as a listing.updated or listing.error webhook, and GET /items/{vid} shows the result.
Some marketplaces limit what can change after listing. Vestiaire Collective, for example, only accepts price reductions.
Something missing? Email [email protected] — we prioritise by what people actually ask for.
