Vezmo App

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 ACTIVE categories. The API doesn't check the status when you attach one, so an INACTIVE category can still end up on a product.
  • A category the team deleted drops out of the list and answers 404 by 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.

FieldTypeRequiredRules
searchstringnoMatches the name or the slug (case-insensitive).
statusenumnoACTIVE or INACTIVE. Without it, the list has both.
pageintegerno1 or more. Default 1.
limitintegerno1 or more. Default 10, at most 100; a bigger value returns 100.
Request
curl "https://api.vezmo.com/api/v1/merchant/category?status=ACTIVE&page=1&limit=10" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
200 OK
{
  "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}

FieldTypeRequiredRules
idstring, pathyesThe category's id.
Request
curl https://api.vezmo.com/api/v1/merchant/category/cm3cat000001abcd \
  -H "Authorization: Bearer $ACCESS_TOKEN"
200 OK
{
  "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

StatusWhen
400A bad status, page or limit. page and limit must be whole numbers of 1 or more.
401 / 403No token, an expired one, or a key without category.read.
404“Category not found”: no such category, or it was deleted.
404 Not Found
{
  "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.