Most minipim list endpoints use offset pagination and return a small envelope. A few return the full set as a plain array. This page lists which is which and the filters GET /v1/products supports.
With the API
Paginated endpoints return:
{ "data": [], "limit": 50, "offset": 0, "hasMore": true }
Keep requesting with offset += limit until hasMore is false. hasMore is exact: the server fetches one extra row to decide it, so a final page that happens to be full still reports false.
| Endpoint | Shape | Default / max limit |
|---|---|---|
GET /v1/products | Envelope, optional total | 50 / 200 |
GET /v1/content | Envelope | 50 / 200 |
GET /v1/brands | Envelope | 50 / 200 |
GET /v1/audit-log | Envelope | 100 / 500 |
GET /v1/categories | Plain array, whole tree unless you pass limit (max 1000) | none |
GET /v1/attributes, /v1/modifiers, /v1/locales, /v1/channels, /v1/connectors | Plain array, everything | none |
curl 'https://api.minipim.com/v1/products?status=active&categoryId=8d2a…&includeDescendants=true&limit=200&withTotal=true' \
-H 'Authorization: Bearer pim_…'
Product filters
status:draft,activeorarchived.q: relevance search over name, slug and attribute text. Results sort by relevance whenqis present unless you setsortBy.slug: exact, case-sensitive match. Use this, notq, to turn a URL slug into an id.ids: up to 200 ids, comma-separated or repeated. Unknown ids are simply missing from the result.familyId,brandId,brand(brand name, case-insensitive),connectorId.categoryId: direct assignments only. AddincludeDescendants=trueto include the whole subtree.tag: repeatable, and a product must carry every listed tag. Values are canonicalized the same way writes are.updatedSince: ISO 8601. Use it to catch up after downtime.sortBy:name,slug,status,updatedAt,createdAt,relevanceorattribute.sortDir:asc(default) ordesc.sortAttributeandfilterAttributewithfilterMin/filterMax: sort or range-filter by amoney,numberordecimalattribute. Money bounds are integer cents, sofilterMin=1000means 10.00.withTotal=trueadds atotalcount. It costs an extra query, so leave it off on hot paths.
GET /v1/products/facets takes the same filters and returns counts by family, status, category, brand, tag and connector. facetLimit (up to 500) raises the per-dimension cap, and includeEmpty=true includes categories and brands with zero matches.
GET /v1/content supports status, q (title), slug, ids, familyId, categoryId, includeDescendants, channelId, tag and updatedSince, and sorts by updatedAt descending by default.
Rules and limits
GET /v1/productsandGET /v1/categoriesreject unknown query parameters with422. Other list endpoints ignore unknown parameters, so check spelling there.- Boolean query flags accept
true,false,1or0.?withTotal=falsereally means false. Any other value is a422. sortBy=attributewithoutsortAttributeis a422, and so is naming an attribute that is notmoney,numberordecimal. Measurements are refused because their values carry units.- Attribute sorts and filters read the default-scope value (no locale, no channel). Products without one sort last and are excluded by any bound. No currency conversion is applied.
?locale=and?channel=are accepted on the product list but ignored. Fetch the product detail forresolvedAttributes.- The facet
tagsandstatusesdimensions never include zero-count entries. - Pagination is offset-based; there are no cursors. The SDK’s
paginatehelper handles both envelope and array responses, see TypeScript SDK.
Full parameter lists are in the API reference. For keeping a copy in sync, pair updatedSince with webhooks.
See also
- REST API basics — Base URL, authentication, JSON conventions, IDs, money and dates for the minipim /v1 REST API, plus where to find the live OpenAPI reference.
- Products — How minipim products work: family, slug, attribute payload and tags, plus creating, editing, duplicating and deleting them in the admin or via the API.
- Categories — Build a minipim category tree, nest and reorder categories, give them a status and custom fields, assign products, and query a whole subtree through the API.
- TypeScript SDK — Use @minipim/sdk: a typed client generated from the OpenAPI spec, pagination helpers, attribute and money helpers, and webhook signature verification.