---
title: "GET /products/{code}"
method: GET
path: "/products/{code}"
tags: ["Products"]
---

# GET /products/{code}

`GET /products/{code}`

Gets a product by code

## Path parameters

- `code` string, required — Product code

## Response `200`

Success

- ProductSuccessResponse
  - `data` Product, required — Product object
    - `id` string, required — Unique identifier for the product
    - `workspace_id` string, required — Workspace ID this product belongs to
    - `workspaceId` string, required — Workspace ID this product belongs to
    - `code` string, required — User-defined product identifier.
    - `description` string — Description of the product
    - `paid_by_roles` ProductRole[], required — User roles that can pay for this product
      - `id` string, required — The unique ID of the role
      - `name` string, required — The name of the role
    - `paid_to_roles` ProductRole[], required — User roles that receive payment for this product
      - `id` string, required — The unique ID of the role
      - `name` string, required — The name of the role
    - `update_version` number, required — Version number for optimistic locking
    - `updateVersion` number, required — Version number for optimistic locking
    - `created` string, date-time, required — ISO 8601 timestamp when the product was created

## Other responses

- `401` — Unauthorized
- `404` — Not found
- `500` — Internal server error

## Changes

- **2026-03-06** `6768d46dbde8` — 1 breaking, 4 info
  - the response property `data/description` became optional for the status `200`
  - response property `data/updateVersion` deprecated
  - response property `data/workspaceId` deprecated
  - added the required property `data/update_version` to the response with the `200` status
  - …1 more
- **2026-02-05** `635b1d55b735` — 1 breaking, 3 info
  - removed the required property `data/seller` from the response with the `200` status
  - added the required property `data/id` to the response with the `200` status
  - added the required property `data/paid_by_roles` to the response with the `200` status
  - added the required property `data/paid_to_roles` to the response with the `200` status
- **2026-02-02** `0f4bb2a098cb` — 2 info
  - added `#/components/schemas/UserSeller` to the `data/seller` response property `anyOf` list for the response status `200`
  - removed `#/components/schemas/CounterpartySeller` from the `data/seller` response property `anyOf` list for the response status `200`
- **2026-01-27** `e106f73e6999` — 1 breaking, 1 info
  - api path removed without deprecation
  - endpoint added
- **2026-01-27** `aea46314e2f7` — 1 breaking, 1 info
  - api path removed without deprecation
  - endpoint added

[Full history](https://skmtc.dev/fragment-dev/apis/fragment-payments-api/changes/products/:code/get.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/930de445f98d/schema)
