Create Channel Catalog
POST/api/v2/listings/catalogs
Create a catalog, optionally with its rules and channel assignments in the same call.
Fields
name(string, required, max 255)description(string, optional, max 500)rules(array, optional) — replaces the whole rule setrules[].rule_type(required):include_product,exclude_product,include_category,exclude_category,include_brand,exclude_brand,include_filter,exclude_filterrules[].ref_id(integer) — required for every rule type EXCEPT the filter typesrules[].filter_tree(object) — required forinclude_filter/exclude_filter, forbidden otherwise
sales_channel_ids(array of integers, optional) — the channels this catalog governs. Channels previously pointing at the catalog and omitted here are released back to unrestricted.
Channel catalogs limit which products a sales channel may carry.
A catalog is a named, reusable set of include/exclude rules over product, category and brand, plus an optional filter rule that is re-evaluated on every read so newly created products qualify automatically. Exclusions always win: a product is eligible when it matches at least one include (or the catalog has no include rules at all, which means everything) AND matches no exclude.
A sales channel with no catalog carries every product, so catalogs are entirely opt-in.
Authentication: Requires Bearer token.
products:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Request
Responses
- 201
- 401
- 403
- 422
- 429
Created
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Unprocessable Content
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.