Base URLs
The API base URL ishttps://api.fluid.app. All requests are made over HTTPS.
Public storefront reads are the one exception. They carry no token, so Fluid identifies your company from the request host. Send them to your storefront’s own host instead.
For example, a company product request goes to
https://api.fluid.app/api/v202604/company/products. A public catalog request goes to https://acme.fluid.app/api/v202604/products. The same public request sent to api.fluid.app returns 404, because the host names no storefront.
API versioning
The current, canonical surface is v2026-04. Its URL paths use the non-hyphenated form/api/v202604/...:
A small number of related surfaces carry their own date version in the path. Each endpoint’s reference entry shows its exact path, so always copy the version from there. For token types, scopes, and how to pass credentials, see Authentication.
Authentication
Company endpoints require a bearer token in theAuthorization header:
/api/v202604/{resource} and /api/v202604/{resource}/{slug}) require no authentication — the company is resolved from the request host. Company endpoints (/api/v202604/company/...) require a company-admin bearer token with storefront.view for reads and storefront.update for writes. See the Authentication guide for token types, scopes, and management.
Request format
Send request bodies as JSON and set theContent-Type header:
true or false, and numbers must not be quoted.
Response format
Every successful response carries a top-level integerstatus, a meta object, and the resource under its own key. List endpoints return the resource under a plural key (for example products) and add a pagination object to meta:
product or category) and omit pagination:
meta.request_id is a per-request identifier (it may be null) — include it when contacting support so a request can be traced.
Errors
Validation (422) and not-found (404) responses use a wrapped error envelope that mirrors the success shape — an error object, a top-level status, and meta:
Pagination
List endpoints use opaque cursor pagination. Two query parameters control it:
Each list response reports pagination under
meta.pagination:
next_cursor as page[cursor] on the next request and repeat until next_cursor comes back null. Cursors are opaque strings — pass them back verbatim and do not attempt to decode or construct them. Pagination is count-free by design: there are no total_count or total_pages fields.
Localization
Every storefront resource can carry its translated text — title, description, and image — in more than one language. Reads render a locale with thelang query parameter (a field with no translation falls back to its English value); writes add a translation with a company PATCH carrying lang. Writing a translation is always a company update, never a public read, and never a separate translations endpoint. See Translate storefront resources for the full model and a per-resource reference.
What’s available
The v2026-04 storefront surface covers categories, collections, products, pages, posts, media, playlists, and enrollment packs — each with a public (unauthenticated) read surface and a company (token-authenticated) management surface. Browse every endpoint, with request and response schemas, in the auto-generated Endpoints reference.Authentication
Token types, scopes, and how to pass and manage credentials.
Storefront API overview
The storefront resources, the current version, and how the public and company endpoints differ.
Find and create resources
List, search, and filter storefront resources, then create them with the company API.
Visibility, drafts, and scheduling
What makes a resource live, and what drafts return.
Agent signup
Create a Fluid company with one API call.
SEO
What search engines see, and how to control it.