---
title: "List available products"
method: GET
path: "/billing/products/"
tags: ["billing"]
---

# List available products

`GET /billing/products/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/billing/products/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

List all available billing products with their pricing information.

## Response `200`

Successful Response

- ProductsResponseSchema: Response schema for listing available products.
  - `products` ProductRead[], required: List of available billing products.
    - `credit_tiers` ProductCreditTierReadSchema[], required: The selectable credit volumes, cheapest first, each carrying the plan's full price at that volume. Empty for products with no self-serve price (Free, Enterprise), which is the whole of what they cost.
      - `annual_price_decimal` string, required: The plan's FULL annual price at this volume, in cents.
      - `credits` integer, required: The monthly credit allowance the tier grants.
      - `monthly_price_decimal` string, required: The plan's FULL monthly price at this volume, in cents, flat platform fee included, not an increment over any base price.
      - `tier_key` string, required: The tier key, e.g. 'team_tier_20k'.
    - `data_retention` string, duration, required: Data retention period.
    - `included_credits` integer, required: Credits included each period. For a tiered product this is the entry tier's allowance. The effective allowance comes from the selected tier.
    - `max_integrations` integer, required: Maximum number of integrations allowed. 0 means unlimited.
    - `max_rows_per_table` integer, required: Maximum number of rows per table. 0 means unlimited.
    - `max_tables` integer, required: Maximum number of tables allowed. 0 means unlimited.
    - `name` string, required: The product name.
    - `seats` integer, required: Number of seats included. 0 means unlimited.
    - `type` 'free_plan' | 'team_plan' | 'pro_plan' | 'enterprise_plan', required: The tier of a product in Stripe. Declared cheapest-first. Free and Enterprise never touch Stripe: Free is free, Enterprise is sales-led and has no self-serve price. A subscription's tier is recovered from its price's ``product_tier`` metadata, never by reverse-parsing a Stripe product name: a product is named for the plan AND the credit volume it sells ("Team Plan (10,000 credits)"), so the name has not round-tripped to a tier since prices collapsed to one per plan+volume.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
