Developers
Connect FLUF to Your System
Your spreadsheet, your admin tool, your accountant's system — or an AI assistant. Know the second something sells, anywhere you sell it, without writing a single marketplace integration.
Create an API token Read the docsWebhooks
A signed POST to your server the moment an item sells on any connected marketplace.
REST API
Read your inventory and orders, and list items to marketplaces, over plain HTTPS.
MCP server
Let Claude, Cursor or any MCP client run your shop in plain language.
One integration instead of fifteen
Every marketplace has its own idea of what a product is — different categories, size systems, brands, condition values and photo rules. Several have no public API at all. FLUF already speaks all of them, so you integrate once and reach every channel your account is connected to.
You never touch marketplace credentials, and you don't redo the work every time a channel changes something.
Know the second something sells
Point FLUF at a URL and it'll POST there as sales come in:
curl -X POST "https://fluf.io/wp-json/fc/api/v1/webhooks" \
-H "Authorization: Bearer fluf_pat_your_token" \
-H "Content-Type: application/json" \
-d '{"url":"https://yourapp.example.com/hooks/fluf","events":["new_sale"]}'
Every sale arrives like this:
{
"event": "new_sale",
"sku": "T-001",
"channel": "depop",
"price": 45.00,
"currency": "GBP",
"sold_at": "2026-07-28T14:03:11+00:00",
"title": "Vintage Levi's 501 jeans",
"order_id": "abc-123-def"
}
sku is your reference code, read from the item in FLUF — so it
already matches whatever your own system calls it. No lookup table, no guessing
which listing sold.
Deliveries are signed so you can prove they came from us, retried if your server is down, and every attempt is logged — so you can always check whether one fired. Full webhook documentation →
What you can listen for
| Event | Fires when |
|---|---|
new_sale | An item sold on any connected marketplace |
new_listing | A product was created in FLUF |
listing_crosslisted | A product went live on a marketplace |
crosslisting_error | A listing attempt failed |
listing_sold_out | A product is no longer live anywhere |
oos_alert | Stock hit zero |
crosslisting_job_completed | A bulk listing run finished |
Finer-grained events
Each one names the marketplace and the account it happened on, so a business with several accounts on the same marketplace can tell them apart.
| Event | Fires when |
|---|---|
listing.created | A listing went up, with the price it was listed at |
listing.live | The listing is visible to buyers, with its public link |
listing.updated | A change reached the marketplace |
listing.rejected | A marketplace refused the listing — the item needs fixing |
listing.error | The attempt failed for a reason unrelated to the item |
listing.delisted | A listing came down, and why |
listing.sold | An item sold, with the price and order id |
listing.liked | Someone liked an item |
message.received | A buyer sent you a message |
offer.received | A buyer made an offer |
offer.accepted | An offer was accepted — the item sold at that price |
offer.declined | An offer was declined or expired |
account.follower | An account gained followers |
Not every event reaches every marketplace — it depends what each one exposes.
listing.rejected and listing.error split the same failure
on purpose: rejected means an item needs editing before it will go
up, error means nothing is wrong with the item and it's worth
trying again later.
Specifications
Two OpenAPI documents, both public — you don't need a token to read them. Point your generator at either one.
Deliveries are at-least-once, so deduplicate on event_id — it identifies
the event and stays the same across every retry. Delivery order isn't guaranteed, so
each event also carries a seq: keep the highest you've applied for an
item and ignore anything lower.
Let an AI assistant run your shop
FLUF ships a Model Context Protocol server, so any MCP-compatible assistant can work your account directly. Add it to Claude, Cursor, Cline or anything else that speaks MCP:
{
"mcpServers": {
"fluf": {
"command": "npx",
"args": ["-y", "fluf-mcp"],
"env": { "FLUF_API_TOKEN": "fluf_pat_your_token" }
}
}
}
Then just ask it:
- “What's in stock that isn't on eBay yet? List the ten cheapest.”
- “What sold last week, and on which channel?”
- “List these forty items on Vinted and Depop.”
It can also reach Intesa, the assistant built into FLUF, for the open-ended questions — “why did my last five listings fail?” — so your assistant gets FLUF's own answer rather than a guess.
Source is open on GitHub under the MIT licence.
Get started in two minutes
- Open More → Developers in FLUF Connect.
- Create an API token. It's shown once and starts with
fluf_pat_. - Send it as
Authorization: Bearer <token>.
Included with any paid FLUF plan — there's no separate developer tier.
Need something we haven't built yet? Email [email protected] — we prioritise by what people actually ask for.
