---
title: "Retrieve a product by key"
method: POST
path: "/commerce/products/{product_key}"
tags: ["Commerce"]
---

# Retrieve a product by key

`POST /commerce/products/{product_key}`

Retrieves detailed information about a specific product by its unique product number or ID. 
You can optionally specify related objects to expand in the request body.

## Path parameters

- `product_key` string, required

## Headers

- `Accept-Encoding` string
- `Content-Encoding` string
- `Zuora-Track-Id` string
- `Zuora-Entity-Ids` string
- `Zuora-Org-Ids` string

## Request body

- object
  - `expand` object — Controls which related objects are expanded and included in the response.
    - `productRatePlans` boolean — When `true`, includes product rate plans in the response.
    - `productRatePlanCharges` boolean — When `true`, includes product rate plan charges in the response.
    - `businessContextFilters` boolean — When `true`, includes business context filters in the response.

## Response `200`

OK

- GetProductByKeyResponse — Response body returned when retrieving a product by product key.
  - `allowFeatureChanges` boolean
  - `category` string — Product category, for example `base` or `add_on`.
  - `contextFilters` object[]
  - `createdBy` string — ID of the user who created the product.
  - `createdTime` string, date-time
  - `customFields` object — Custom field values keyed by API name.
  - `customObjects` object, nullable — Custom object references related to this product.
  - `dacTag` object — Internal DAC tag associated with the product.
    - `id` string — DAC tag identifier.
    - `name` string — DAC tag name.
  - `endDate` string, date — Product effective end date.
  - `features` object[]
  - `id` string — Unique identifier of the product.
  - `legacyFeatures` object[] — Legacy, customer-defined feature objects retained for compatibility.
  - `name` string — Product name.
  - `netsuite` object, nullable — NetSuite integration metadata if applicable.
  - `organizationLabels` object[]
  - `productNumber` string — System-generated product number.
  - `productRatePlans` object[] — List of rate plans under this product.
    - `id` string — Unique identifier of the Product Rate Plan.
    - `createdBy` string — ID of the user who created the rate plan.
    - `createTime` string, date-time — Timestamp when the rate plan was created.
    - `updatedBy` string — ID of the user who last updated the rate plan.
    - `updateTime` string, date-time — Timestamp when the rate plan was last updated.
    - `name` string — Product Rate Plan name.
    - `displayName` string — Product Rate Plan display name.
    - `description` string — Product Rate Plan description.
    - `productId` string — Identifier of the product this plan belongs to.
    - `startDate` string, date — Effective start date of the plan (UTC, YYYY-MM-DD).
    - `endDate` string, date — Effective end date of the plan (UTC, YYYY-MM-DD).
    - `state` string — Current plan state.
    - `status` string — Status of the plan.
    - `activeCurrencies` string[] — Currencies supported by this plan.
    - `productRatePlanNumber` string — Product Rate Plan number.
    - `productRatePlanCharges` object[] — List of Product Rate Plan Charges (PRPCs) belonging to the plan.
      - `id` string — Unique identifier of the Product Rate Plan Charge.
      - `productRatePlanChargeNumber` string — System-generated number of the Product Rate Plan Charge.
      - `name` string — Charge name.
      - `description` string — Charge description.
      - `chargeType` string — Charge type (recurring, one_time, or usage).
      - `chargeModel` string — Charge model (flat_fee, per_unit, tiered, etc.).
      - `listPriceBase` string — Indicates how list price is interpreted.
      - `specificListPriceBase` integer — Specifies the number of periods for list price when listPriceBase is period-based.
      - `triggerEvent` string — Event that triggers the charge.
      - `endDateCondition` string — Condition that determines when the charge ends.
      - `upToPeriodsType` string — Type of period used with `upToPeriods` to control charge duration.
      - `upToPeriods` integer — Number of periods after which the charge ends, based on `upToPeriodsType`.
      - `billCycle` object — Billing cycle configuration.
      - `pricing` object — Pricing configuration for the charge.
      - `pricingSummary` string[] — Human-readable pricing summary lines.
      - `taxMode` string — Tax mode for this charge.
      - `taxable` boolean — Indicates whether the charge is taxable.
      - `createdById` string — ID of the user who created the charge.
      - `createdTime` string, date-time — Timestamp when the charge was created.
      - `updatedById` string — ID of the user who last updated the charge.
      - `updatedTime` string, date-time — Timestamp when the charge was last updated.
  - `sku` string — Stock keeping unit for the product.
  - `startDate` string, date — Product effective start date.
  - `state` string — Current product state.
  - `updatedBy` string — ID of the user who last updated the product.
  - `updatedTime` string, date-time — Timestamp of the last update.

## Other responses

- `500` — Internal Server Error
- `4XX` — Request Errors

---

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