List Product Types
GET/api/v2/product-types
List product types as a flat, path-ordered set — parents come before their children — with the number of active products each carries.
products:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Pagination: page, per_page (default 10). Pass per_page=-1 to receive every type on one page, which is the usual way to load the whole tree for a picker.
Filters:
filter[search]— matches the id exactly, or any part of the name or pathfilter[archived]— omit for active types only;onlyfor archived types;allfor bothfilter[parent_id]— direct children of one type;rootfor top-level typesfilter[is_leaf]—truefor leaf types (the only ones products and channel category maps can use),falsefor parent types- Operator filters on
id,name,path,created_atandupdated_at—filter[name][contains]=diaper,filter[id][is_one_of]=3,7,filter[created_at][after]=2026-01-01. Text operators: contains, does_not_contain, is, is_not, is_one_of, is_not_one_of, starts_with, does_not_start_with, ends_with, does_not_end_with, is_empty, is_not_empty. Numeric operators: is, is_not, is_one_of, is_not_one_of, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, is_empty, is_not_empty. Date operators: is, is_not, before, after, on_or_before, on_or_after, between, is_empty, is_not_empty, today, yesterday, tomorrow. filter_groups— a base64-encoded JSON tree of AND/OR groups over the same columns, for compound conditions.
Allowed sorts: id, name, path, level, sort_order, products_count, created_at, updated_at (prefix with - for descending). Default: path.
Sparse fieldsets: included / excluded (JSON arrays of field names) trim each row to the fields you need; id is always returned.
Each row: id, name, path (the full Parent > Child path), parent_id, level (0 = top level; at most 3 levels), is_leaf, sort_order, products_count (active products carrying the type), created_at, updated_at, archived_at.
Request
Responses
- 200
- 401
- 403
- 429
OK
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.
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.