---
title: "Create an item category"
method: POST
path: "/v1/item_categories/"
tags: ["Item Categories"]
---

# Create an item category

`POST /v1/item_categories/`

## Request

- Base URL: `https://api.yoco.com`
- URL: `https://api.yoco.com/v1/item_categories/`
- Auth: HTTP bearer

Create an item category

**Required scopes: `business/catalogue:read`, `business/catalogue:write`**

## Request body

- CreateItemCategoryRequest
  - `name` string, required: The name of the category. Leading and trailing whitespace is removed, and the name that remains must be 1 to 255 characters long, and unique among the business's categories.
  - `description` string, nullable: A description of the category. Leading and trailing whitespace is removed, and the description that remains must be 1 to 255 characters long. Leave it out, or send `null`, for no description.
  - `parent_category_id` string, nullable: The unique identifier of the parent category. The parent must be another category of the business. Leave it out, or send `null`, for a category with no parent.
  - `image_id` string, nullable: The `id` of a media item uploaded with `POST /v1/media/`, shown as the image of the category. Leave it out, or send `null`, for a category with no image.

## Response `201`

Successful Response

- ItemCategory
  - `id` string, required: The unique identifier of the category.
  - `name` string, required: The name of the category.
  - `description` string, nullable, required: A description of the category.
  - `image` Media, required
    - `id` string, required: The unique identifier of the media.
    - `type` 'image', required
    - `mime_type` string, required: The mime type indicates the format of the media.
    - `url` string, required: The URL of the media file.
    - `created_at` string, date-time, required: The media creation date and time in ISO 8601 format.
    - `updated_at` string, date-time, nullable, required: The date and time the media was last modified in ISO 8601 format.
  - `created_at` string, date-time, required: The category creation date and time in ISO 8601 format.
  - `updated_at` string, date-time, nullable, required: The date and time the category was last modified in ISO 8601 format.
  - `parent_category` ParentItemCategory, required
    - `id` string, required: The unique identifier of the category.
    - `name` string, required: The name of the category.
    - `description` string, nullable, required: A description of the category.
    - `image` Media, required
      - `id` string, required: The unique identifier of the media.
      - `type` 'image', required
      - `mime_type` string, required: The mime type indicates the format of the media.
      - `url` string, required: The URL of the media file.
      - `created_at` string, date-time, required: The media creation date and time in ISO 8601 format.
      - `updated_at` string, date-time, nullable, required: The date and time the media was last modified in ISO 8601 format.
    - `created_at` string, date-time, required: The category creation date and time in ISO 8601 format.
    - `updated_at` string, date-time, nullable, required: The date and time the category was last modified in ISO 8601 format.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict
- `429`: Too Many Requests

## Changes

- **2026-10-15** `2505c2f21875`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/yoco/apis/yoco-api/changes/v1/item_categories/post.md)

---

[API](https://skmtc.dev/yoco/apis/yoco-api.md) - [All operations](https://skmtc.dev/yoco/apis/yoco-api/llms.txt) - [OpenAPI document](https://skmtc.dev/yoco/apis/yoco-api/revisions/daf9b9d86161?raw)
