---
title: "Get Product"
method: GET
path: "/v1/products/{id}"
tags: ["products", "public"]
---

# Get Product

`GET /v1/products/{id}`

Get a product by ID.

**Scopes**: `products:read` `products:write`

## Path parameters

- `id` string, uuid4, required — The product ID.

## Response `200`

Successful Response

- Product — A product.
  - `id` string, uuid4, required — The ID of the object.
  - `created_at` string, date-time, required — Creation timestamp of the object.
  - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
  - `trial_interval` 'day' | 'week' | 'month' | 'year', required
  - `trial_interval_count` integer, nullable, required — The number of interval units for the trial period.
  - `name` string, required — The name of the product.
  - `description` string, nullable, required — The description of the product.
  - `visibility` 'draft' | 'private' | 'public', required
  - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
  - `recurring_interval_count` integer, nullable, required — Number of interval units of the subscription. If this is set to 1 the charge will happen every interval (e.g. every month), if set to 2 it will be every other month, and so on. None for one-time products.
  - `meter_interval` 'day' | 'week' | 'month' | 'year', required
  - `meter_interval_count` integer, nullable, required — Number of meter interval units. None when no meter cycle is set.
  - `is_recurring` boolean, required — Whether the product is a subscription.
  - `is_archived` boolean, required — Whether the product is archived and no longer available.
  - `organization_id` string, uuid4, required — The ID of the organization owning the product.
  - `metadata` MetadataOutputType, required
  - `prices` union[], required — List of prices for this product.
    - union
      - union
        - LegacyRecurringProductPriceFixed — A recurring price for a product, i.e. a subscription. **Deprecated**: The recurring interval should be set on the product itself.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'fixed', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `type` 'recurring', required — The type of the price.
          - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
          - `price_amount` integer, required — The price in cents.
          - `legacy` true, required
        - LegacyRecurringProductPriceCustom — A pay-what-you-want recurring price for a product, i.e. a subscription. **Deprecated**: The recurring interval should be set on the product itself.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'custom', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `type` 'recurring', required — The type of the price.
          - `recurring_interval` 'day' | 'week' | 'month' | 'year', required
          - `minimum_amount` integer, required — The minimum amount the customer can pay. If 0, the price is 'free or pay what you want'.
          - `maximum_amount` integer, nullable, required — The maximum amount the customer can pay.
          - `preset_amount` integer, nullable, required — The initial amount shown to the customer.
          - `legacy` true, required
      - union
        - ProductPriceFixed — A fixed price for a product.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'fixed', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `price_amount` integer, required — The price in cents.
        - ProductPriceCustom — A pay-what-you-want price for a product.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'custom', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `minimum_amount` integer, required — The minimum amount the customer can pay. If 0, the price is 'free or pay what you want'.
          - `maximum_amount` integer, nullable, required — The maximum amount the customer can pay.
          - `preset_amount` integer, nullable, required — The initial amount shown to the customer.
        - ProductPriceSeatBased — A seat-based price for a product.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'seat_based', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `seat_tiers` ProductPriceSeatTiersOutput, required — List of pricing tiers for seat-based pricing. The minimum and maximum seat limits are derived from the tiers: - minimum_seats = first tier's min_seats - maximum_seats = last tier's max_seats (None for unlimited)
            - `seat_tier_type` 'volume' | 'graduated'
            - `tiers` ProductPriceSeatTier[], required — List of pricing tiers
              - …
            - `minimum_seats` integer, required — Minimum number of seats required for purchase, derived from first tier.
            - `maximum_seats` integer, nullable, required — Maximum number of seats allowed for purchase, derived from last tier. None for unlimited.
        - ProductPriceMeteredUnit — A metered, usage-based, price for a product, with a fixed unit price.
          - `created_at` string, date-time, required — Creation timestamp of the object.
          - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
          - `id` string, uuid4, required — The ID of the price.
          - `source` 'catalog' | 'ad_hoc', required
          - `amount_type` 'metered_unit', required
          - `price_currency` string, required — The currency in which the customer will be charged.
          - `tax_behavior` 'location' | 'inclusive' | 'exclusive', required
          - `is_archived` boolean, required — Whether the price is archived and no longer available.
          - `product_id` string, uuid4, required — The ID of the product owning the price.
          - `unit_amount` string, required — The price per unit in cents.
          - `cap_amount` integer, nullable, required — The maximum amount in cents that can be charged, regardless of the number of units consumed.
          - `meter_id` string, uuid4, required — The ID of the meter associated to the price.
          - `meter` ProductPriceMeter, required — A meter associated to a metered price.
            - `id` string, uuid4, required — The ID of the object.
            - `name` string, required — The name of the meter.
            - `unit` 'scalar' | 'token' | 'custom', required
            - `custom_label` string, nullable, required — The label for the custom unit.
            - `custom_multiplier` integer, nullable, required — The multiplier to convert from base unit to display scale.
  - `benefits` Benefit[], required — List of benefits granted by the product.
    - union
      - BenefitCustom — A benefit of type `custom`. Use it to grant any kind of benefit that doesn't fit in the other types.
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'custom', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitCustomProperties, required — Properties for a benefit of type `custom`.
          - `note` string, nullable, required
        - `visibility_configurable` boolean, required
      - BenefitDiscord — A benefit of type `discord`. Use it to automatically invite your backers to a Discord server.
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'discord', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitDiscordProperties, required — Properties for a benefit of type `discord`.
          - `guild_id` string, required — The ID of the Discord server.
          - `role_id` string, required — The ID of the Discord role to grant.
          - `kick_member` boolean, required — Whether to kick the member from the Discord server on revocation.
          - `guild_token` string, required
        - `visibility_configurable` boolean, required
      - BenefitGitHubRepository — A benefit of type `github_repository`. Use it to automatically invite your backers to a private GitHub repository.
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'github_repository', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitGitHubRepositoryProperties, required — Properties for a benefit of type `github_repository`.
          - `repository_owner` string, required — The owner of the repository.
          - `repository_name` string, required — The name of the repository.
          - `permission` 'pull' | 'triage' | 'push' | 'maintain' | 'admin', required — The permission level to grant. Read more about roles and their permissions on [GitHub documentation](https://docs.github.com/en/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization#permissions-for-each-role).
        - `visibility_configurable` boolean, required
      - BenefitDownloadables
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'downloadables', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitDownloadablesProperties, required
          - `archived` object, required
          - `files` string[], required
        - `visibility_configurable` boolean, required
      - BenefitLicenseKeys
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'license_keys', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitLicenseKeysProperties, required
          - `prefix` string, nullable, required
          - `expires` BenefitLicenseKeyExpirationProperties, required
            - `ttl` integer, required
            - `timeframe` 'year' | 'month' | 'day', required
          - `activations` BenefitLicenseKeyActivationProperties, required
            - `limit` integer, required
            - `enable_customer_admin` boolean, required
          - `limit_usage` integer, nullable, required
        - `visibility_configurable` boolean, required
      - BenefitMeterCredit — A benefit of type `meter_unit`. Use it to grant a number of units on a specific meter.
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'meter_credit', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitMeterCreditProperties, required — Properties for a benefit of type `meter_unit`.
          - `units` integer, required
          - `rollover` boolean, required
          - `meter_id` string, uuid4, required
        - `visibility_configurable` boolean, required
      - BenefitFeatureFlag — A benefit of type `feature_flag`. Use it to grant feature flags with key-value metadata that can be queried via the API and webhooks.
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'feature_flag', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitFeatureFlagProperties, required — Properties for a benefit of type `feature_flag`.
        - `visibility_configurable` boolean, required
      - BenefitSlackSharedChannel
        - `id` string, uuid4, required — The ID of the benefit.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `type` 'slack_shared_channel', required
        - `description` string, required — The description of the benefit.
        - `selectable` boolean, required — Whether the benefit is selectable when creating a product.
        - `deletable` boolean, required — Whether the benefit is deletable.
        - `is_deleted` boolean, required — Whether the benefit is deleted.
        - `organization_id` string, uuid4, required — The ID of the organization owning the benefit.
        - `metadata` MetadataOutputType, required
        - `visibility` 'draft' | 'private' | 'public', required
        - `properties` BenefitSlackSharedChannelProperties, required
          - `slack_integration_id` string, uuid4, required — Polar Slack integration linked to this benefit.
          - `channel_name_template` string, required — Template for the channel name. Supports placeholders: {customer_name}, {customer_email_local}, and {metadata.<key>} for any value stored in customer user metadata.
          - `private` boolean — Create the channel as private (recommended).
          - `welcome_message` string, nullable — Optional message posted to the channel right after creation.
          - `archive_on_revoke` boolean — Archive the channel when the benefit is revoked.
          - `team_invitees` string[] — Slack user IDs from the merchant workspace to invite to every channel created for this benefit.
        - `visibility_configurable` boolean, required
  - `medias` ProductMediaFileRead[], required — List of medias associated to the product.
    - `id` string, uuid4, required — The ID of the object.
    - `organization_id` string, uuid4, required
    - `name` string, required
    - `path` string, required
    - `mime_type` string, required
    - `size` integer, required
    - `storage_version` string, nullable, required
    - `checksum_etag` string, nullable, required
    - `checksum_sha256_base64` string, nullable, required
    - `checksum_sha256_hex` string, nullable, required
    - `last_modified_at` string, date-time, nullable, required
    - `version` string, nullable, required
    - `service` 'product_media', required
    - `is_uploaded` boolean, required
    - `created_at` string, date-time, required
    - `size_readable` string, required
    - `public_url` string, required
  - `attached_custom_fields` AttachedCustomField[], required — List of custom fields attached to the product.
    - `custom_field_id` string, uuid4, required — ID of the custom field.
    - `custom_field` union, required
      - CustomFieldText — Schema for a custom field of type text.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `id` string, uuid4, required — The ID of the object.
        - `metadata` MetadataOutputType, required
        - `type` 'text', required
        - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
        - `name` string, required — Name of the custom field.
        - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
        - `properties` CustomFieldTextProperties, required
          - `form_label` string
          - `form_help_text` string
          - `form_placeholder` string
          - `textarea` boolean
          - `min_length` integer
          - `max_length` integer
      - CustomFieldNumber — Schema for a custom field of type number.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `id` string, uuid4, required — The ID of the object.
        - `metadata` MetadataOutputType, required
        - `type` 'number', required
        - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
        - `name` string, required — Name of the custom field.
        - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
        - `properties` CustomFieldNumberProperties, required
          - `form_label` string
          - `form_help_text` string
          - `form_placeholder` string
          - `ge` integer
          - `le` integer
      - CustomFieldDate — Schema for a custom field of type date.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `id` string, uuid4, required — The ID of the object.
        - `metadata` MetadataOutputType, required
        - `type` 'date', required
        - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
        - `name` string, required — Name of the custom field.
        - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
        - `properties` CustomFieldDateProperties, required
          - `form_label` string
          - `form_help_text` string
          - `form_placeholder` string
          - `ge` integer
          - `le` integer
      - CustomFieldCheckbox — Schema for a custom field of type checkbox.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `id` string, uuid4, required — The ID of the object.
        - `metadata` MetadataOutputType, required
        - `type` 'checkbox', required
        - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
        - `name` string, required — Name of the custom field.
        - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
        - `properties` CustomFieldCheckboxProperties, required
          - `form_label` string
          - `form_help_text` string
          - `form_placeholder` string
      - CustomFieldSelect — Schema for a custom field of type select.
        - `created_at` string, date-time, required — Creation timestamp of the object.
        - `modified_at` string, date-time, nullable, required — Last modification timestamp of the object.
        - `id` string, uuid4, required — The ID of the object.
        - `metadata` MetadataOutputType, required
        - `type` 'select', required
        - `slug` string, required — Identifier of the custom field. It'll be used as key when storing the value.
        - `name` string, required — Name of the custom field.
        - `organization_id` string, uuid4, required — The ID of the organization owning the custom field.
        - `properties` CustomFieldSelectProperties, required
          - `form_label` string
          - `form_help_text` string
          - `form_placeholder` string
          - `options` CustomFieldSelectOption[], required
            - `value` string, required
            - `label` string, required
    - `order` integer, required — Order of the custom field in the resource.
    - `required` boolean, required — Whether the value is required for this custom field.

## Other responses

- `404` — Product not found.
- `422` — Validation Error

---

[API](https://skmtc.net/polar/apis/polar-api.md) · [All operations](https://skmtc.net/polar/apis/polar-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polar/polar-api/versions/964f974aceff/schema)
