---
title: "Retrieve Product"
method: GET
path: "/v2/products/{id}"
tags: ["Products V2"]
---

# Retrieve Product

`GET /v2/products/{id}`

Retrieves a product by ID. Requires products:read scope.

## Path parameters

- `id` string, required — Product ID

## Response `200`

Success

- object
  - `id` string, required — Unique identifier for the product
  - `object` 'product', required — Object type, always `product`
  - `application_id` string, required — ID of the application this product is stored under
  - `project_id` string, required — ID of the project this product belongs to
  - `identifier` string, required — Platform-specific product identifier
  - `name` string, nullable, required — Display name of the product, or null
  - `platform` union, required — Platform the product belongs to
    - 'ios' — Apple App Store
    - 'android' — Google Play Store
    - 'stripe' — Stripe
    - 'promotional' — Promotional (manual grants)
    - 'custom' — Custom (external purchase controller)
  - `store` union, required — Store backing the product, when applicable
    - 'app_store' — Apple App Store
    - 'play_store' — Google Play Store
    - 'custom' — Custom external purchase controller
  - `price` object, nullable, required — Price of the product, or null
    - `amount` number, required
    - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
  - `trial_price` object, nullable, required — Trial or introductory price of the product, or null
    - `amount` number, required
    - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
  - `monthly_billing_plan_price` object, nullable, required — Monthly billing plan price for annual iOS products, or null
    - `amount` number, required
    - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
  - `monthly_billing_plan_trial_period_days` number, nullable, required — Monthly billing plan trial days, or null
  - `monthly_billing_plan_trial_price` object, nullable, required — Monthly billing plan trial price, or null
    - `amount` number, required
    - `currency` string, required — ISO 4217 currency code (e.g. `USD`)
  - `subscription` object, nullable, required — Subscription details, or null for one-time purchases
    - `period` 'day' | 'week' | 'month' | 'year', required — Billing period
    - `period_count` number, required — Number of periods per billing cycle
    - `trial_period_days` number, nullable, required — Number of trial days, or null
    - `introductory_offer` object — Introductory offer details
      - `type` 'free_trial' | 'pay_as_you_go' | 'pay_up_front', required — Type of introductory offer
      - `duration_days` number, required — Duration of the introductory offer in days
  - `app_store_info` object, nullable, required — App Store Connect metadata for iOS App Store products, or null
    - `state` string, required
    - `reference_name` string, required
    - `product_id` string, required
    - `in_app_purchase_type` string, required
  - `entitlements` string[], required — List of entitlement IDs granted by this product
  - `created_at` string, required — ISO 8601 timestamp of when the product was created
  - `updated_at` string, required — ISO 8601 timestamp of when the product was last updated
  - `metadata` object, required

## Other responses

- `400` — The request did not match the expected schema
- `401` — No API key was provided in the request
- `403` — The API key does not have permission to perform this action
- `404` — The requested resource was not found
- `429` — Too many requests have been made in a short period
- `500` — An unexpected error occurred on the server

---

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