# Retrieve a product

Retrieves a single product. The product is identified by the `id` path parameter.

Endpoint: GET /v3/products/{id}
Version: 2026-09-18
Security: ZephrHmacHttp

## Security:

  - `ZephrHmacHttp` (unknown)
    http ZEPHR-HMAC-*

## Path parameters:

  - `id` (string, required)
    Unique Product identifier.

## Response 200:

  - `200` (unknown)
    OK. Returns the product details.

## Response 200 fields (application/json):

  - `tenantId` (string)
    Example: company

  - `subTenantId` (string)
    Example: company|demo

  - `id` (string)
    The product ID/slug. This is the unique identifier for the product within the tenant.
    Example: gold

  - `label` (string)
    The product label. This is the human-readable name of the product.
    Example: Gold Subscription

  - `description` (string)
    The product description. This is a human-readable description of the product.
    Example: The most premium subscription.

  - `entitlement` (object)

  - `entitlement.id` (string)
    Entitlement ID/slug.
    Example: gold-bundle

  - `entitlement.type` (string)
    Entitlement type (always "bundle").
    Example: bundle

  - `entitlement.entitlementTenant` (string)
    Entitlement tenant ID.
    Example: company

  - `mapping` (object)
    Example: {"braintree_one_off":{"price_points":[{"id":"ten","label":"Ten Dollars","price":10}]}}

  - `mapping.braintree_recurring` (object)

  - `mapping.braintree_recurring.plan_id` (string)
    The Braintree plan ID. This is the unique identifier for the plan within the Braintree account.
    Example: gold

  - `mapping.braintree_recurring.archived` (boolean)
    Whether the product is archived. If true, the product will not be available for purchase.
    Example: true

  - `mapping.braintree_one_off` (object)

  - `mapping.braintree_one_off.price_points` (array)

  - `mapping.braintree_one_off.price_points.id` (string, required)
    The unique identifier for the price point within the product.
    Example: ten

  - `mapping.braintree_one_off.price_points.label` (string, required)
    The human-readable name of the price point.
    Example: Ten Dollars

  - `mapping.braintree_one_off.price_points.price` (number, required)
    The price of the product in the currency of the payment provider account.
    Example: 10

  - `mapping.braintree_one_off.price_points.archived` (boolean)
    Whether the price point is archived. If true, the price point will not be available for purchase.
    Example: true

  - `mapping.stripe_recurring` (object)

  - `mapping.stripe_recurring.stripe_plan_id` (string)
    The Stripe plan ID. This is the unique identifier for the plan within the Stripe account.
    Example: gold

  - `mapping.stripe_one_off` (object)

  - `mapping.stripe_one_off.price_points` (array)

  - `mapping.rate_plans` (array)

  - `mapping.rate_plans.payment_provider` (string, required)
    The payment provider for which the rate plan is configured.

  - `mapping.rate_plans.rate_plan_id` (string, required)
    The unique identifier for the rate plan within the payment provider account.

  - `mapping.rate_plans.archived` (boolean)
    Whether the rate plan is archived. If true, the rate plan will not be available for purchase.

  - `mapping.rate_plans.archive_label` (string)
    The human-readable name of the rate plan.

  - `mapping.rate_plans.environment` (string, required)
    The environment for which the rate plan is configured.
    Example: LIVE

  - `mapping.jwt` (object)

  - `mapping.jwt.privateClaimValue` (string)

  - `sharingLimit` (number)
    The number of other users that the purchaser of this product can share the product with.
    Example: 5

## Response 401:

  - `401` (unknown)
    Unauthorized. Returned if no valid authentication was provided.

## Response 404:

  - `404` (unknown)
    Not Found. The product does not exist.

