Documentation
The manual for the
product you have
Short guides to everything Liflio does. Nothing on this page describes something we have not built.
Getting started
Open an account, tell Liflio about your shop, and pick a plan.
Making the content
From a photo of a promotion to posts you would actually publish.
Publishing
Connecting accounts, publishing now, and publishing on a schedule.
Liflio Deals
Putting your promotions in front of people already looking for them.
Products and your shop
Getting your catalogue into Liflio so you stop retyping it.
Results and help
What Liflio can tell you afterwards, and where to go when it cannot.
What each platform
will actually take
WhatsApp sends pre-approved template messages rather than free text. Everything above is generated from the publishing code itself, so the day a platform gains a format, this table gains it too — and until then it will not claim one.
For developers
One small,
read-only API
Three endpoints that let another system read the offers you have published. That is the whole surface: no write endpoints, no webhooks, no SDK, and no separate API host.
Manage your API keysInside the app — you need an account to be signed in to.
GET /api/v1/export/cataloguesPublished catalogues and flyer deals, with their page images and PDF.
GET /api/v1/export/couponsCode and barcode coupons, with their value, terms and expiry.
GET /api/v1/export/reductionsPrice drops, with the original price, the sale price and the percentage.
- Authentication
- A bearer token: an lfk_ key you create in the app. Keys are stored hashed and shown once, so copy it when it appears. A missing or unknown key returns 401.
- Scope
- A key reads the offers on its own account and nothing else. Keys have no per-key permissions to configure.
- Paging
- page starts at 1; limit defaults to 50 and is capped at 100. meta.hasNextPage tells you when to stop.
- Incremental reads
- updated_since takes a date and returns only what changed after it. An unparseable date is ignored rather than rejected.
A request
curl -H "Authorization: Bearer lfk_…" \
"https://liflio.com/api/v1/export/coupons?limit=50"And its response
{
"data": [
{
"id": 128,
"title": "10% off the summer range",
"discountValue": 10,
"type": "NORMAL",
"code": "SUMMER10",
"termsAndConditions": "Minimum spend 50 EUR. Excludes sale items.",
"validUntil": "2026-07-31T23:59:59.000Z",
"status": "active",
"updatedAt": "2026-07-01T09:12:44.000Z"
}
],
"meta": {
"currentPage": 1,
"totalPages": 1,
"totalItems": 1,
"hasNextPage": false,
"generatedAt": "2026-07-01T09:20:00.000Z",
"endpoint": "/api/v1/export/coupons"
}
}Fields that have no value come back as null rather than being omitted, so the shape is the same on every row.