Skip to main content
GET
Company Categories index

Authorizations

Authorization
string
header
required

Bearer token authentication. Accepts company-admin tokens with storefront.view for read operations and storefront.update for writes and scan triggers (legacy per-resource grants like categories.update / products.view / etc. are still accepted during the migration), required on every company operation. Storefront public operations under /api/v202604/{resource} and /api/v202604/{resource}/{slug} are unauthenticated (security: []).

Query Parameters

lang
string

Response locale. ISO code (e.g. fr, de). When omitted, responds in the company's default locale. On reads an unsupported or unknown locale is ignored — the response comes back in the default locale, never a 422. Any translated field with no value in the requested locale falls back to its en value.

Example:

"fr"

q
string

Free-text search over translation-aware title and description fields, plus slug. On /products it additionally matches the product-level sku and every variant SKU.

On /products the match is TIERED: the term is matched first against the fields that NAME a product — title in every locale, slug, sku and every variant SKU — and description / metafields answer only when no name match survives the other filters on the request. A bundle's copy lists the products it contains, so matching name and copy in one pass returned every pack that merely mentions a product ahead of the product itself.

Substring-aware (word_middle), so partial terms match. Results are returned in the requested sort order, not by relevance — search resolves to an id set that the ordinary paginated query then filters, and that id set is capped at 1000 matches per request.

page[cursor]
string

Opaque cursor returned in meta.pagination.next_cursor (or prev_cursor). Omit on the first page.

page[limit]
integer
default:25

Page size. Default 25. Max 100. Requests above 100 return 422.

Required range: 1 <= x <= 100
filter[country]
string

ISO-2 country code. Restricts the catalog to resources available in that country — combining the with_country_iso scope's OR-empty semantics: unrestricted resources (no access_countries rows) match every country.

Example:

"GB"

filter[language]
string

ISO locale. Restricts the catalog to resources translated in that locale.

Example:

"fr"

filter[source_type]
enum<string>

One source type: product, medium, page, library, or promotion. Categories only — the collection catalog does not accept this filter.

Available options:
product,
medium,
page,
library,
promotion
filter[parent_id]
string

A category id as a string, or the literal "root" for top-level categories only. Selects a single level of the tree. Categories only — collections have no hierarchy. Honored on both the public catalog and the company index, which share one query contract.

Example:

"root"

filter[status]
enum<string>

One of draft, scheduled, published, or archived. Restricts the index to a single lifecycle state. Company-surface only. Matches the STORED status column, not the read-time-resolved status: a past-due scheduled row (its publish_at has passed, so it renders as published) is matched by filter[status]=scheduled, NOT by filter[status]=published.

Available options:
draft,
scheduled,
published,
archived
filter[active]
enum<string>

Company-surface only. "true" / "false" restrict to active / inactive rows; a blank value (filter[active]=) means "no filter" — it is NOT where(active: nil).

Available options:
,
true,
false
sort
enum<string>

Single sort key. Prefix with - for descending. Default position then id.

Available options:
position,
-position,
title,
-title,
created_at,
-created_at,
updated_at,
-updated_at

Response

A page of categories.

Shared success envelope for list / show / create / update responses: the resource payload is returned alongside a top-level integer status and meta. Composed onto each resource response via allOf.

status
integer
required
Example:

200

meta
object
required

Response metadata included on every successful response body. request_id and timestamp are always present; list endpoints also add pagination.

categories
object[]
required