APIProduct subcategory

Get product subcategories

GET
/public/v1/product-subcategories

List product subcategories for the authenticated company, oldest first (ascending creation order).

A subcategory is a second-level classification beneath a product category; products point at a subcategory to place them in the catalog taxonomy. Only subcategories whose parent category belongs to your company and is not deleted are returned.

Optionally narrow the list to one parent category with ?category_id= (exact match on the parent category id).

Results are paginated. When more rows remain, the response's next_page field holds the URL of the following page; it is null on the last page.

Required permission: settings_permissions_product_categories.

Authorization

Bearer
headerAuthorizationBearer <token>

API token generated in Distru (Settings → Distru API). Send it on every request as Authorization: Bearer YOUR_API_TOKEN.

Query Parameters

ids[]?array<string>

Restrict the result to specific product subcategories by ID (the same ID returned as each subcategory's id). Repeat the bracketed key once per ID. Unknown IDs simply match nothing; an empty list is treated as no filter. At most 200 IDs may be given.

category_id?string

Return only subcategories whose parent product category id matches this value exactly. Omit to return every subcategory across all of your categories.

inserted_datetime?string

Filter to product subcategories by their creation datetime, given as a comma-separated start,end pair of ISO8601 datetimes (inclusive). Either bound may be omitted for an open-ended range: 2022-07-10T00:00:00Z, matches on or after that instant, ,2022-07-10T00:00:00Z matches on or before it.

updated_datetime?string

Filter to product subcategories by their last-updated datetime, given as a comma-separated start,end pair of ISO8601 datetimes (inclusive). Either bound may be omitted for an open-ended range.

page?string

Page selector. Page size is fixed by the server; paginate by following the next_page URL in each response rather than building page selectors yourself — it is null on the last page. next_page uses page[after]=<cursor>, an opaque token marking where the next page resumes; pass it back exactly as given, and only to the endpoint that issued it. This is seek-based, so every page stays fast no matter how deep you page.

Response Body

A list of product subcategories

*/*
  1. response

A collection of product subcategories

data?array<>

Product Subcategories

next_page?string

URL for the next page of results; null when there is no next page

Example Request
curl -X GET 'https://app.distru.com/public/v1/product-subcategories'
Example Response
{  "data": [    {      "category": {        "id": "00000000-0000-0000-0000-000000000003",        "name": "C1",        "official_product_category_id": "OPC_0"      },      "id": "00000000-0000-0000-0000-000000000003",      "inserted_datetime": "2025-01-01T00:00:00.000000Z",      "name": "SC1",      "updated_datetime": "2026-10-08T09:10:04.292538Z"    },    {      "category": {        "id": "00000000-0000-0000-0000-000000000003",        "name": "C1",        "official_product_category_id": "OPC_0"      },      "id": "00000000-0000-0000-0000-000000000006",      "inserted_datetime": "2025-01-02T00:00:00.000000Z",      "name": "SC2",      "updated_datetime": "2026-10-08T09:10:04.314377Z"    },    {      "category": {        "id": "00000000-0000-0000-0000-000000000003",        "name": "C1",        "official_product_category_id": "OPC_0"      },      "id": "00000000-0000-0000-0000-000000000007",      "inserted_datetime": "2025-01-03T00:00:00.000000Z",      "name": "SC3",      "updated_datetime": "2026-10-08T09:10:04.333426Z"    }  ],  "next_page": "https://www.example.com/public/v1/product-subcategories?page[after]=ZHwyMDI1LTAxLTAzVDAwOjAwOjAwLjAwMDAwMFp8aXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDc"}