Skip to main content

Developer API (2.0.0)

Download OpenAPI specification:Download

Product

Operations about products.

Get a product

This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

query Parameters
expand
Array of strings[ items [ 1 .. 5000 ] characters ]
Items Enum: "app" "indicative_price"
Example: expand=app

Specifies which fields in the response should be expanded. Accepted values are: app (requires project_configuration:apps:read permission), indicative_price (requires project_configuration:products:read permission).

Responses

Response samples

Content type
application/json
{
  • "state": "active",
  • "object": "product",
  • "id": "prod1a2b3c4d5e",
  • "store_identifier": "rc_1w_199",
  • "type": "subscription",
  • "subscription": {
    },
  • "one_time": {
    },
  • "created_at": 1658399423658,
  • "app_id": "app1a2b3c4",
  • "app": {
    },
  • "indicative_price": {
    },
  • "display_name": "Premium Monthly 2023"
}

Update a product

Update a product in the project's catalog. Changing the type only affects how RevenueCat treats the product, it does not update the store. Make sure the new type matches how the product is configured in the store, otherwise RevenueCat will handle purchases in a way the store does not expect. This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

query Parameters
expand
Array of strings[ items [ 1 .. 5000 ] characters ]
Items Enum: "app" "indicative_price"
Example: expand=app

Specifies which fields in the response should be expanded. Accepted values are: app (requires project_configuration:apps:read permission), indicative_price (requires project_configuration:products:read permission).

Request Body schema: application/json
required
display_name
string <= 1500 characters

The display name of the product

type
string (ProductType)
Enum: "subscription" "one_time" "consumable" "non_consumable" "non_renewing_subscription"

Responses

Request samples

Content type
application/json
{
  • "display_name": "string",
  • "type": "subscription"
}

Response samples

Content type
application/json
{
  • "state": "active",
  • "object": "product",
  • "id": "prod1a2b3c4d5e",
  • "store_identifier": "rc_1w_199",
  • "type": "subscription",
  • "subscription": {
    },
  • "one_time": {
    },
  • "created_at": 1658399423658,
  • "app_id": "app1a2b3c4",
  • "app": {
    },
  • "indicative_price": {
    },
  • "display_name": "Premium Monthly 2023"
}

Delete a product

This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

Responses

Response samples

Content type
application/json
{
  • "object": "app",
  • "id": "string",
  • "deleted_at": 1658399423658
}

Archive a product

Archives a product (makes it inactive). This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

Responses

Response samples

Content type
application/json
{
  • "state": "active",
  • "object": "product",
  • "id": "prod1a2b3c4d5e",
  • "store_identifier": "rc_1w_199",
  • "type": "subscription",
  • "subscription": {
    },
  • "one_time": {
    },
  • "created_at": 1658399423658,
  • "app_id": "app1a2b3c4",
  • "app": {
    },
  • "indicative_price": {
    },
  • "display_name": "Premium Monthly 2023"
}

Unarchive a product

Unarchives a product (makes it active). This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

Responses

Response samples

Content type
application/json
{
  • "state": "active",
  • "object": "product",
  • "id": "prod1a2b3c4d5e",
  • "store_identifier": "rc_1w_199",
  • "type": "subscription",
  • "subscription": {
    },
  • "one_time": {
    },
  • "created_at": 1658399423658,
  • "app_id": "app1a2b3c4",
  • "app": {
    },
  • "indicative_price": {
    },
  • "display_name": "Premium Monthly 2023"
}

Push a product to the store

Push a product to the App Store.

For subscription products: You must provide store information including duration and subscription group details.

For in-app purchase products (consumable, non-consumable, non-renewing subscription): No request body is required. This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

product_id
required
string [ 1 .. 255 ] characters
Example: prod1a2b3c4d5

ID of the product

Request Body schema: application/json
optional

Store-specific information. Only required for subscription products. For in-app purchase products, send an empty body or omit the request body entirely.

CreateAppStoreConnectSubscriptionInput (object) or CreateAppStoreConnectInAppPurchaseInput (object)

Store-specific information for creating the product in the store

One of
duration
required
string
Enum: "ONE_WEEK" "ONE_MONTH" "TWO_MONTHS" "THREE_MONTHS" "SIX_MONTHS" "ONE_YEAR"

The subscription duration period

subscription_group_name
required
string [ 1 .. 255 ] characters

The name of the subscription group

subscription_group_id
string or null [ 1 .. 255 ] characters

The ID of the subscription group (optional)

Responses

Request samples

Content type
application/json
Example
{
  • "store_information": {
    }
}

Response samples

Content type
application/json
{
  • "created_product": {
    }
}

Get a list of products

This endpoint requires the following permission(s): project_configuration:products:read. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.

Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

query Parameters
app_id
string
Example: app_id=app1a2b3c4

This is an optional query parameter to get a list of products of a given entitlement associated with a particular app

starting_after
string
Example: starting_after=ent12354

Pagination cursor. Pass the id of the last item from the previous page to fetch the next page; omit for the first page.

limit
integer
Default: 20
Example: limit=10

Maximum number of items to return per page. Values below 1 or above 100 are clamped to that range rather than rejected.

expand
Array of strings[ items [ 1 .. 5000 ] characters ]
Items Enum: "items.app" "items.indicative_price"
Example: expand=items.app

Specifies which fields in the response should be expanded. Accepted values are: items.app (requires project_configuration:apps:read permission), items.indicative_price (requires project_configuration:products:read permission).

Responses

Response samples

Content type
application/json
{
  • "object": "list",
  • "items": [
    ],
  • "next_page": "/v2/projects/proj1ab2c3d4/products?starting_after=prodab21dac",
  • "url": "/v2/projects/proj1ab2c3d4/products"
}

Create a product

Create a product in the project's catalog.

Warning
This endpoint does not allow to create Web Billing products.
This endpoint requires the following permission(s): project_configuration:products:read_write. This endpoint belongs to the Project Configuration domain, which has a default rate limit of 60 requests per minute.
Authorizations:
BearerAuth
path Parameters
project_id
required
string <= 255 characters
Example: proj1ab2c3d4

ID of the project

Request Body schema: application/json
required
store_identifier
required
string [ 1 .. 200 ] characters

The store identifier of the product.

  • For Apple App Store products this is the product ID of the subscription or in-app product.
  • For Google's Play Store, it should follow the format 'productId:basePlanId' for subscription products and SKU for one-time purchase products.
  • For Stripe, the product identifier that always starts with "prod_". RevenueCat selects the active, supported default price when available, or the only active, supported price otherwise. If no price can be selected, the product is created without a web price. For projects that model Stripe products per price, the store_identifier in the response is the Stripe price ID when a price is selected.
  • For Amazon, if it's a subscription, the term SKU of the subscription. If it's a one-time purchase, the SKU of the product.
  • For Roku, this is the product identifier of the subscription or one-time purchase product.
price_identifier
string or null [ 1 .. 200 ] characters

The Stripe price identifier to import. When provided, the price must exist, belong to the Stripe product, and be active and supported. Only supported for Stripe products.

app_id
required
string [ 1 .. 255 ] characters

The ID of the app

type
required
string (ProductType)
Enum: "subscription" "one_time" "consumable" "non_consumable" "non_renewing_subscription"
display_name
string or null [ 1 .. 1500 ] characters

The display name of the product

object or null (ProductSubscriptionInput)

Subscription parameters for product creation. Only supported for simulated store products.

duration
required
string (Duration)
Enum: "P1W" "P1M" "P2M" "P3M" "P6M" "P1Y"

The duration of the product subscription. This field is only supported for the test store and it is ignored for other stores.

title
string or null [ 1 .. 1500 ] characters

The user-facing title of the product. This field is required for Test Store products.

Responses

Request samples

Content type
application/json
Example
{
  • "store_identifier": "com.revenuecat.magicweather.monthly9.99",
  • "app_id": "app1a2b3c4",
  • "type": "subscription",
  • "display_name": "Premium Monthly 2023"
}

Response samples

Content type
application/json
{
  • "state": "active",
  • "object": "product",
  • "id": "prod1a2b3c4d5e",
  • "store_identifier": "rc_1w_199",
  • "type": "subscription",
  • "subscription": {
    },
  • "one_time": {
    },
  • "created_at": 1658399423658,
  • "app_id": "app1a2b3c4",
  • "app": {
    },
  • "indicative_price": {
    },
  • "display_name": "Premium Monthly 2023"
}