---
title: "POST /products"
method: POST
path: "/products"
tags: ["Products"]
---

# POST /products

`POST /products`

Creates a product.

## Request body

- CreateProductRequest — Request body for creating a product.
  - `code` string, required — Unique product code.
  - `description` string — Product description.

## Response `201`

Success

- ProductSuccessResponse
  - `data` Product, required — Product object.
    - `id` string, required — FRAGMENT generated unique ID.
    - `workspace_id` string, required — Workspace ID of the product.
    - `code` string, required — Product code.
    - `description` string — Product description.
    - `update_version` number, required — Current version of the product.
    - `created` string, date-time, required — Timestamp when the product was created. Uses ISO 8601 format.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `500` — Internal server error

## Changes

- **2026-05-11** `91a072ddf86d` — 2 breaking, 2 warning
  - removed the required property `data/paid_by_roles` from the response with the `201` status
  - removed the required property `data/paid_to_roles` from the response with the `201` status
  - removed the request property `paid_by_roles`
  - removed the request property `paid_to_roles`
- **2026-04-14** `8472a9bd15ea` — 2 breaking, 2 info
  - removed `subschema #1, subschema #2` from the `paid_by_roles/items/` request property `anyOf` list
  - removed `subschema #1, subschema #2` from the `paid_to_roles/items/` request property `anyOf` list
  - added `subschema #1, subschema #2` to the `paid_by_roles/items/` request property `anyOf` list
  - added `subschema #1, subschema #2` to the `paid_to_roles/items/` request property `anyOf` list
- **2026-03-13** `dd22ecbbe8e5` — 2 breaking
  - removed the required property `data/updateVersion` from the response with the `201` status
  - removed the required property `data/workspaceId` from the response with the `201` status
- **2026-03-06** `6768d46dbde8` — 1 breaking, 5 info
  - the response property `data/description` became optional for the status `201`
  - the request property `description` became optional
  - response property `data/updateVersion` deprecated
  - response property `data/workspaceId` deprecated
  - …2 more
- …earlier changes not shown

[Full history](https://skmtc.dev/fragment-dev/apis/fragment-payments-api/changes/products/post.md)

---

[API](https://skmtc.dev/fragment-dev/apis/fragment-payments-api.md) · [All operations](https://skmtc.dev/fragment-dev/apis/fragment-payments-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fragment-dev/fragment-payments-api/revisions/41ca2c686012/schema)
