---
title: "GET /api/v1/plans"
method: GET
path: "/api/v1/plans"
tags: ["plan"]
---

# GET /api/v1/plans

`GET /api/v1/plans`

## Query parameters

- `page` integer, required
- `per_page` integer, required
- `product_family_id` string

## Response `200`

List of plans

- PlanListResponse
  - `data` Plan[], required
    - `available_parameters` AvailableParameters, required
      - `billing_periods` object — Map of component_id -> available billing periods (e.g., "MONTHLY", "ANNUAL")
      - `capacity_thresholds` object — Map of component_id -> available capacity values
      - `slot_components` string[] — List of component_ids that support slot parametrization (initial slot count)
    - `created_at` string, date-time, required
    - `currency` string, required
    - `description` string, nullable
    - `id` string, MeteroidId, required
    - `name` string, required
    - `net_terms` integer, required
    - `plan_type` 'STANDARD' | 'FREE' | 'CUSTOM', required
    - `price_components` PriceComponent[], required
      - `fee` union, required
        - object — Recurring rate fee (e.g., monthly subscription)
          - `fee_type` 'rate', required
          - `rates` TermRate[], required
            - `price` number, double, required
            - `term` 'MONTHLY' | 'QUARTERLY' | 'ANNUAL', required
        - object — Slot-based fee (e.g., per-seat pricing)
          - `fee_type` 'slot', required
          - `minimum_count` integer, nullable
          - `quota` integer, nullable
          - `rates` TermRate[], required
            - `price` number, double, required
            - `term` 'MONTHLY' | 'QUARTERLY' | 'ANNUAL', required
          - `slot_unit_name` string, required
        - object — Capacity-based fee with included committed usage and overage
          - `fee_type` 'capacity', required
          - `metric_id` string, MeteroidId, required
          - `thresholds` CapacityThreshold[], required
            - `included_amount` integer, required
            - `per_unit_overage` number, double, required
            - `price` number, double, required
        - object — Usage-based fee
          - `fee_type` 'usage', required
          - `metric_id` string, MeteroidId, required
          - `pricing` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
        - object — Extra recurring fee
          - `billing_type` 'ADVANCE' | 'ARREARS', required
          - `cadence` 'MONTHLY' | 'QUARTERLY' | 'ANNUAL', required
          - `fee_type` 'extra_recurring', required
          - `quantity` integer, required
          - `unit_price` number, double, required
        - object — One-time fee
          - `fee_type` 'one_time', required
          - `quantity` integer, required
          - `unit_price` number, double, required
      - `id` string, MeteroidId, required
      - `name` string, required
      - `product_id` string, MeteroidId
    - `product_family` ProductFamily, required
      - `id` string, MeteroidId, required
      - `name` string, required
    - `status` 'DRAFT' | 'ACTIVE' | 'INACTIVE' | 'ARCHIVED', required
    - `trial` TrialConfig
      - `duration_days` integer, required
      - `is_free` boolean, required
      - `trialing_plan_id` string, MeteroidId
    - `version` integer, required
    - `version_id` string, MeteroidId, required
  - `pagination_meta` PaginationResponse, required
    - `page` integer, required
    - `per_page` integer, required
    - `total_items` integer, required
    - `total_pages` integer, required

## Other responses

- `401` — Unauthorized
- `500` — Internal error

## Changes

- **2025-10-13** (v1) `167a049d244e` — 3 breaking, 3 warning, 2 info
  - added the new required `query` request parameter `page`
  - added the new required `query` request parameter `per_page`
  - removed the required property `total` from the response with the `200` status
  - deleted the `query` request parameter `limit`
  - …4 more
- **2025-10-13** (v1) `70c1f38948d6` — 3 breaking, 1 warning, 8 info
  - removed the required property `data/items/has_draft_version` from the response with the `200` status
  - removed the required property `data/items/product_family_id` from the response with the `200` status
  - removed the required property `data/items/product_family_name` from the response with the `200` status
  - removed the optional property `data/items/subscription_count` from the response with the `200` status
  - …8 more
- **2025-07-23** (v1) `cad632d024ce` — 7 warning, 7 info
  - added the new `ACTIVE` enum value to the `data/items/status` response property for the response status `200`
  - added the new `ARCHIVED` enum value to the `data/items/status` response property for the response status `200`
  - added the new `CUSTOM` enum value to the `data/items/plan_type` response property for the response status `200`
  - added the new `DRAFT` enum value to the `data/items/status` response property for the response status `200`
  - …10 more
- …earlier changes not shown

[Full history](https://skmtc.dev/meteroid-oss/apis/meteroid/changes/api/v1/plans/get.md)

---

[API](https://skmtc.dev/meteroid-oss/apis/meteroid.md) · [All operations](https://skmtc.dev/meteroid-oss/apis/meteroid/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/meteroid-oss/meteroid/revisions/167a049d244e/schema)
