Developers › Docs › API reference › List items
List items
Returns a reconciliation page: products on your account, each with its current marketplace listing state.
curl "https://fluf.io/wp-json/fc/api/v1/items?limit=50" \
-H "Authorization: Bearer fluf_pat_your_token"const res = await fetch("https://fluf.io/wp-json/fc/api/v1/items?limit=50", {
headers: {
"Authorization": "Bearer fluf_pat_your_token",
},
});
const data = await res.json();import requests
res = requests.get(
"https://fluf.io/wp-json/fc/api/v1/items?limit=50",
headers={
"Authorization": "Bearer fluf_pat_your_token",
},
)
data = res.json()<?php
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://fluf.io/wp-json/fc/api/v1/items?limit=50', [
'headers' => [
'Authorization' => 'Bearer fluf_pat_your_token',
],
]);
$data = json_decode((string) $res->getBody(), true);{
"items": [
{
"vid": "fluf_326428506_0",
"fluf_id": 326428506,
"title": "Vintage Levi's 501 jeans",
"sku": "LV-501-32",
"price": 42,
"listings": []
}
],
"has_more": true,
"next_cursor": "326428506"
}Query parameters
| Parameter | Type | Notes |
|---|---|---|
limit | integer | 1-100, default 50 |
cursor | string | Opaque token from next_cursor; omit on the first page |
updated_since | RFC 3339 timestamp | Changed products only, max 30 days back |
Pagination
Paginate until next_cursor is absent. Treat the cursor as opaque: it is not an offset or timestamp, and it carries the updated_since filter from page one.
Each item has the same fields as GET /items/{vid}, except photos.
Catching up
Use updated_since when your webhook endpoint was down, a consumer bug dropped events, or you never received a write response:
It returns products that genuinely changed: sold, repriced, relisted, delisted, hidden, restocked, newly listed, or edited by the seller. Reindexing does not count. If you need more than 30 days, omit updated_since and sweep the full catalogue.
curl "https://fluf.io/wp-json/fc/api/v1/items?updated_since=2026-08-01T00:00:00Z" \
-H "Authorization: Bearer fluf_pat_your_token"const res = await fetch("https://fluf.io/wp-json/fc/api/v1/items?updated_since=2026-08-01T00:00:00Z", {
headers: {
"Authorization": "Bearer fluf_pat_your_token",
},
});
const data = await res.json();import requests
res = requests.get(
"https://fluf.io/wp-json/fc/api/v1/items?updated_since=2026-08-01T00:00:00Z",
headers={
"Authorization": "Bearer fluf_pat_your_token",
},
)
data = res.json()<?php
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://fluf.io/wp-json/fc/api/v1/items?updated_since=2026-08-01T00:00:00Z', [
'headers' => [
'Authorization' => 'Bearer fluf_pat_your_token',
],
]);
$data = json_decode((string) $res->getBody(), true);Something missing? Email [email protected] — we prioritise by what people actually ask for.
