> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joinmarkt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Merchant categories

> Create, update, and delete product categories with a Bearer API key.

All routes require:

```txt theme={null}
Authorization: Bearer mk_live_<your_key>
```

## List

```http theme={null}
GET /api/merchant/v1/stores/{storeId}/categories?page=1&limit=50
```

Scope: `category:read`

```json theme={null}
{
  "categories": [
    {
      "id": "clxyz...",
      "name": "Games",
      "description": null,
      "image": null,
      "storeId": "cm...",
      "productCount": 3,
      "createdAt": "2026-09-21T00:00:00.000Z",
      "updatedAt": "2026-09-21T00:00:00.000Z"
    }
  ],
  "page": 1,
  "limit": 50,
  "total": 1
}
```

## Create

```http theme={null}
POST /api/merchant/v1/stores/{storeId}/categories
```

Scope: `category:create` · `201`

```json theme={null}
{ "name": "Games", "description": "Digital game keys" }
```

Names are unique per store. `storeId` in the JSON body is ignored.

## Get / update / delete

```http theme={null}
GET    /api/merchant/v1/stores/{storeId}/categories/{categoryId}
PATCH  /api/merchant/v1/stores/{storeId}/categories/{categoryId}
PUT    /api/merchant/v1/stores/{storeId}/categories/{categoryId}
DELETE /api/merchant/v1/stores/{storeId}/categories/{categoryId}
```

Scopes: `category:read` · `category:update` · `category:delete`

DELETE fails with `400` while products still use the category — move or delete those products first.

A category that belongs to another shop returns `404`.

## Related

* [Merchant products](/api/merchant-products)
* [Merchant groups](/api/merchant-groups)
* [API keys](/developers/api-keys)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.