Summary
The body key wraps a create or update request. For example, a playlist update sends
{"library": {...}}, not {"playlist": {...}}.
Every list accepts q, sort, lang, page[cursor], and page[limit]. Every list except products also accepts filter[country] and filter[language]. See Find and create resources.
status and the on/off switch together decide what a public list shows. Pages, media, playlists, and enrollment packs have no archived state: switch them off or delete them instead. See Visibility, drafts, and scheduling.
Products
Products differ from the other resources more than any other:- Switch a product on or off with
public. Product writes usepublicwhere other resources useactive. Theactivefield in product responses is computed frompublicandstatus. - Availability is per variant. A product has no
countriesfield. Instead, each variant carries the countries it’s sold in. - Country pricing uses
country. Passcountry(an ISO-2 code) on a product list or show to get that country’s prices. Product lists don’t acceptfilter[country]. A product with no variant sold in the requested country is left out of the list. - Lists return a card, show returns the full product. Each row in a product list leaves out
description,image_url, andseo. Look the product up by slug to get them, along with its variants and subscription plans. - Different list filters. Product lists don’t accept
filter[country]orfilter[language]. They addfilter[availability],filter[bundle],filter[has_subscription_plans],filter[category_ids],filter[collection_ids], andfilter[tag_ids]. - Different admin filters. On the company product list,
filter[status]takesactive,draft, orarchived, and there is nofilter[active].
Categories
Categories form a tree. Each category carriesparent_id, position, has_children, and source_type, the kind of content it organizes. See Category hierarchy.
GET /api/v202604/categories/{slug}/products lists the live products in a category. Set a category’s products on the company side with product_ids, which replaces the whole list.
Collections
Collections are flat, hand-picked groups of products. They have no hierarchy. Like categories, they have a/products list, GET /api/v202604/collections/{slug}/products, and you set their products with product_ids.
Posts
Posts are blog entries. Besides the shared fields they carry a post date, an author, a summary, and the collections they belong to. Filter a post list byfilter[category_id] or filter[collection_id].
Pages
Pages are standalone storefront pages rendered from a theme template. Two things differ from other resources:- Renaming a page changes its slug, unless the slug is pinned. See Slugs and URLs.
- Pages can be cloned on the company side.
Media
Media are videos, images, PDFs, and other files. Filter a list byfilter[media_type]. The company media list also accepts filter[visibility].
- Restricted media aren’t listed. A medium with restricted visibility, or one uploaded by a rep, never appears in a public list, but it can still be looked up by slug.
- Media slugs can’t be set through v2026-04. Fluid generates them.
Playlists
Playlists are curated sets of media. Looking one up by slug returns its items. Playlist writes use thelibrary body key.
Enrollment packs
Enrollment packs are what a new member buys to join. Looking one up by slug returns the products and agreements it includes.Next steps
- Find and create resources — the list controls and the create request.
- Visibility, drafts, and scheduling — lifecycle states in detail.