Customers & catalog
Categories
Categories are a shared list that Vezmo's team maintains, such as Electronics or Design services. You read them and attach them to your products with categoryIds on Create product and Update product.
- The API only reads categories. There is no create, update or delete.
- Attach
ACTIVEcategories. The API doesn't check the status when you attach one, so anINACTIVEcategory can still end up on a product. - A category the team deleted drops out of the list and answers
404by id.
Every response is the usual envelope: { success, message, data, requestId, timestamp }.
Required API-key permissions
category.read— list and retrieve categories.
It is in the default category permission group, so new keys have it. Send the access token from Create token as Authorization: Bearer <token>.
List categories
GET /merchant/category — the categories that aren't deleted, newest first.
| Field | Type | Required | Rules |
|---|---|---|---|
search | string | no | Matches the name or the slug (case-insensitive). |
status | enum | no | ACTIVE or INACTIVE. Without it, the list has both. |
page | integer | no | 1 or more. Default 1. |
limit | integer | no | 1 or more. Default 10, at most 100; a bigger value returns 100. |
curl "https://api.vezmo.com/api/v1/merchant/category?status=ACTIVE&page=1&limit=10" \
-H "Authorization: Bearer $ACCESS_TOKEN"{
"success": true,
"message": "Category retrieved",
"data": {
"data": [
{
"id": "cm3cat000001abcd",
"name": "Electronics",
"slug": "electronics-cm3cat000001abcd",
"image": "https://…/category/electronics.png",
"description": "Phones, laptops and accessories",
"status": "ACTIVE",
"createdAt": "2026-01-02T10:00:00.000Z",
"updatedAt": "2026-01-02T10:00:00.000Z",
"deletedAt": null
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 10,
"totalPages": 1,
"nextPage": null,
"prevPage": null
}
},
"requestId": "…",
"timestamp": "…"
}Each item's id is what categoryIds takes. Follow pagination.nextPage until it is null.
Retrieve a category
GET /merchant/category/{id}
| Field | Type | Required | Rules |
|---|---|---|---|
id | string, path | yes | The category's id. |
curl https://api.vezmo.com/api/v1/merchant/category/cm3cat000001abcd \
-H "Authorization: Bearer $ACCESS_TOKEN"{
"success": true,
"message": "Category retrieved",
"data": {
"id": "cm3cat000001abcd",
"name": "Electronics",
"slug": "electronics-cm3cat000001abcd",
"image": "https://…/category/electronics.png",
"description": "Phones, laptops and accessories",
"status": "ACTIVE",
"createdAt": "2026-01-02T10:00:00.000Z",
"updatedAt": "2026-01-02T10:00:00.000Z",
"deletedAt": null
},
"requestId": "…",
"timestamp": "…"
}Errors
| Status | When |
|---|---|
400 | A bad status, page or limit. page and limit must be whole numbers of 1 or more. |
401 / 403 | No token, an expired one, or a key without category.read. |
404 | “Category not found”: no such category, or it was deleted. |
{
"success": false,
"message": "Category not found",
"errors": [{ "code": "http.404", "message": "Category not found", "statusCode": 404 }],
"data": null,
"requestId": "…",
"timestamp": "…"
}See Errors for the error body.