Skip to content

List prices

The prices.list operation: GET /api/v1/prices in the REST API and the prices_list tool in the MCP server.

GET/api/v1/prices

Lists the brand's prices in the request's mode, newest first. Filter with productId, type, currency, active (true or false) and lookupKey (at most one price has it).

Paginate with limit (1–100, default 10) and starting_after (the next_cursor of the previous page).

At a glance

  • REST: GET /api/v1/prices
  • MCP tool: prices_list
  • Operation ID: prices.list
  • Scope: Brand
  • Permission: catalog:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the catalog:read scope
  • Since: M4

Request

Query parameters

FieldTypeRequiredDescription
productIdprod_… IDNo
typeone of one_time, recurring, credit_packNo
currencystringNo
activestringNoOnly active (true) or archived (false) prices.
lookupKeystringNoA stable name for the price, unique in the brand and mode, e.g. pro_monthly.
limitinteger (1 to 100)No
starting_afterprice_… IDNo

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idprice_… ID
data[].object"price"
data[].brandIdbrd_… ID
data[].livemodeboolean
data[].productIdprod_… ID
data[].nicknamestring or null
data[].lookupKeystring or null
data[].typeone of one_time, recurring, credit_pack
data[].currencystring
data[].taxBehaviorone of inclusive, exclusive
data[].amountmoney or nullFixed one-time or credit-pack amount.
data[].customAmountobject or nullThe range a buyer may choose from (custom-amount prices).
data[].creditPackobject or null
data[].recurringobject or null
data[].activeboolean
data[].usedbooleanA checkout session or payment referenced the price: what it charges can no longer change.
data[].usedAtdate-time or null
data[].metadataobject
data[].createdAtdate-time
data[].updatedAtdate-time
has_moreboolean
next_cursorprice_… ID or null

Examples

The price behind a lookup key

HTTP
GET /api/v1/prices?lookupKey=pro_monthly
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "price_01m4tx5nj8emwbyf7y9vcf47y2",
      "object": "price",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "livemode": false,
      "productId": "prod_01m4tx5nj8emwbyf7y9vcf47y0",
      "nickname": "Pro monthly, per seat",
      "lookupKey": "pro_monthly",
      "type": "recurring",
      "currency": "EUR",
      "taxBehavior": "inclusive",
      "amount": null,
      "customAmount": null,
      "creditPack": null,
      "recurring": {
        "interval": "month",
        "intervalCount": 1,
        "usageType": "licensed",
        "billingScheme": "tiered",
        "unitAmount": null,
        "tiersMode": "graduated",
        "tiers": [
          {
            "upTo": 10,
            "unitAmountMicros": "12000000",
            "flatAmount": null
          },
          {
            "upTo": "inf",
            "unitAmountMicros": "9000000",
            "flatAmount": null
          }
        ],
        "trialDays": 14,
        "includedCredits": null,
        "metered": null
      },
      "active": true,
      "used": false,
      "usedAt": null,
      "metadata": {},
      "createdAt": "2026-10-13T12:00:00.000Z",
      "updatedAt": "2026-10-13T12:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

A product's active prices

HTTP
GET /api/v1/prices?productId=prod_01m4tx5nj8emwbyf7y9vcf47y0&active=true
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "price_01m4tx5nj8emwbyf7y9vcf47y2",
      "object": "price",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "livemode": false,
      "productId": "prod_01m4tx5nj8emwbyf7y9vcf47y0",
      "nickname": "Pro monthly, per seat",
      "lookupKey": "pro_monthly",
      "type": "recurring",
      "currency": "EUR",
      "taxBehavior": "inclusive",
      "amount": null,
      "customAmount": null,
      "creditPack": null,
      "recurring": {
        "interval": "month",
        "intervalCount": 1,
        "usageType": "licensed",
        "billingScheme": "tiered",
        "unitAmount": null,
        "tiersMode": "graduated",
        "tiers": [
          {
            "upTo": 10,
            "unitAmountMicros": "12000000",
            "flatAmount": null
          },
          {
            "upTo": "inf",
            "unitAmountMicros": "9000000",
            "flatAmount": null
          }
        ],
        "trialDays": 14,
        "includedCredits": null,
        "metered": null
      },
      "active": true,
      "used": false,
      "usedAt": null,
      "metadata": {},
      "createdAt": "2026-10-13T12:00:00.000Z",
      "updatedAt": "2026-10-13T12:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
validation_failed400A filter or pagination value is malformed.Fix the fields listed in details.issues and send the request again.
permission_denied403You can't see this brand's catalog.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, scope_required, resource_not_found, dry_run_not_supported, rate_limited, internal_error.