---
title: "List add-ons for plan"
method: GET
path: "/openmeter/plans/{planId}/addons"
tags: ["OpenMeter Product Catalog"]
---

# List add-ons for plan

`GET /openmeter/plans/{planId}/addons`

List add-ons associated with a plan.

## Path parameters

- `planId` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).

## Query parameters

- `page` object
  - `size` integer — The number of items to include per page.
  - `number` integer — The page number.
- `sort` string — The `asc` suffix is optional as the default sort order is ascending. The `desc` suffix is used to specify a descending order. Multiple sort attributes may be provided via a comma separated list. JSONPath notation may be used to specify a sub-attribute (eg: 'foo.bar desc').
- `filter` ListPlanAddonsParamsFilter — Filter options for listing plan add-ons.
  - `id` union — Filters on the given ULID field value by exact match. All properties are optional; provide exactly one to specify the comparison.
    - string — ULID (Universally Unique Lexicographically Sortable Identifier).
    - object
      - `eq` string — ULID (Universally Unique Lexicographically Sortable Identifier).
      - `oeq` string — Returns entities that exact match any of the comma-delimited ULIDs in the filter string.
      - `neq` string — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `plan_key` union — Filters on the given string field value by either exact or fuzzy match. All properties are optional; provide exactly one to specify the comparison.
    - string
    - object
      - `eq` string — Value strictly equals the given string value.
      - `neq` string — Value does not equal the given string value.
      - `contains` string — Value contains the given string value (fuzzy match).
      - `ocontains` string — Returns entities that fuzzy-match any of the comma-delimited phrases in the filter string.
      - `oeq` string — Returns entities that exact match any of the comma-delimited phrases in the filter string.
      - `gt` string — Value is greater than the given string value (lexicographic compare).
      - `gte` string — Value is greater than or equal to the given string value (lexicographic compare).
      - `lt` string — Value is less than the given string value (lexicographic compare).
      - `lte` string — Value is less than or equal to the given string value (lexicographic compare).
      - `exists` boolean — When true, the field must be present (non-null); when false, the field must be absent (null).
  - `addon_id` union — Filters on the given ULID field value by exact match. All properties are optional; provide exactly one to specify the comparison.
    - string — ULID (Universally Unique Lexicographically Sortable Identifier).
    - object
      - `eq` string — ULID (Universally Unique Lexicographically Sortable Identifier).
      - `oeq` string — Returns entities that exact match any of the comma-delimited ULIDs in the filter string.
      - `neq` string — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `addon_key` union — Filters on the given string field value by either exact or fuzzy match. All properties are optional; provide exactly one to specify the comparison.
    - string
    - object
      - `eq` string — Value strictly equals the given string value.
      - `neq` string — Value does not equal the given string value.
      - `contains` string — Value contains the given string value (fuzzy match).
      - `ocontains` string — Returns entities that fuzzy-match any of the comma-delimited phrases in the filter string.
      - `oeq` string — Returns entities that exact match any of the comma-delimited phrases in the filter string.
      - `gt` string — Value is greater than the given string value (lexicographic compare).
      - `gte` string — Value is greater than or equal to the given string value (lexicographic compare).
      - `lt` string — Value is less than the given string value (lexicographic compare).
      - `lte` string — Value is less than or equal to the given string value (lexicographic compare).
      - `exists` boolean — When true, the field must be present (non-null); when false, the field must be absent (null).
  - `addon_name` union — Filters on the given string field value by either exact or fuzzy match. All properties are optional; provide exactly one to specify the comparison.
    - string
    - object
      - `eq` string — Value strictly equals the given string value.
      - `neq` string — Value does not equal the given string value.
      - `contains` string — Value contains the given string value (fuzzy match).
      - `ocontains` string — Returns entities that fuzzy-match any of the comma-delimited phrases in the filter string.
      - `oeq` string — Returns entities that exact match any of the comma-delimited phrases in the filter string.
      - `gt` string — Value is greater than the given string value (lexicographic compare).
      - `gte` string — Value is greater than or equal to the given string value (lexicographic compare).
      - `lt` string — Value is less than the given string value (lexicographic compare).
      - `lte` string — Value is less than or equal to the given string value (lexicographic compare).
      - `exists` boolean — When true, the field must be present (non-null); when false, the field must be absent (null).
  - `plan_currency` union — Filters on the given string field value by either exact or fuzzy match. All properties are optional; provide exactly one to specify the comparison.
    - string
    - object
      - `eq` string — Value strictly equals the given string value.
      - `neq` string — Value does not equal the given string value.
      - `contains` string — Value contains the given string value (fuzzy match).
      - `ocontains` string — Returns entities that fuzzy-match any of the comma-delimited phrases in the filter string.
      - `oeq` string — Returns entities that exact match any of the comma-delimited phrases in the filter string.
      - `gt` string — Value is greater than the given string value (lexicographic compare).
      - `gte` string — Value is greater than or equal to the given string value (lexicographic compare).
      - `lt` string — Value is less than the given string value (lexicographic compare).
      - `lte` string — Value is less than or equal to the given string value (lexicographic compare).
      - `exists` boolean — When true, the field must be present (non-null); when false, the field must be absent (null).

## Response `200`

Page paginated response.

- PlanAddonPagePaginatedResponse — Page paginated response.
  - `data` PlanAddon[], required
    - `id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
    - `name` string, required — Display name of the resource. Between 1 and 256 characters.
    - `description` string — Optional description of the resource. Maximum 1024 characters.
    - `labels` Labels — Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_".
    - `created_at` string, date-time, required — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
    - `updated_at` string, date-time, required — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
    - `deleted_at` string, date-time — [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in UTC.
    - `addon` AddonReference, required — Addon reference.
      - `id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
    - `from_plan_phase` string, required — A key is a unique string that is used to identify a resource.
    - `max_quantity` integer — The maximum number of times the add-on can be purchased for the plan. For single-instance add-ons this field must be omitted. For multi-instance add-ons when omitted, unlimited quantity can be purchased.
    - `validation_errors` ProductCatalogValidationError[] — List of validation errors.
      - `code` string, required — Machine-readable error code.
      - `message` string, required — Human-readable description of the error.
      - `attributes` object — Additional structured context.
      - `field` string, required — The path to the field.
  - `meta` PaginatedMeta, required — returns the pagination information
    - `page` PageMeta, required — Contains pagination query parameters and the total number of objects returned.
      - `number` number, required
      - `size` number, required
      - `total` number, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

> 61 revisions in range; 8 could not be searched.

- **2026-07-03** (v3) `3be06f269447` — 2 info
  - added `#/components/schemas/AddonReference` to the `data/items/addon` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/AddonReferenceItem` from the `data/items/addon` response property `allOf` list for the response status `200`
- **2026-05-11** (v3) `9d0042cb3815` — 2 info
  - added `#/components/schemas/AddonReferenceItem` to the `data/items/addon` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/AddonReference` from the `data/items/addon` response property `allOf` list for the response status `200`

[Change history](https://skmtc.dev/openmeterio/apis/openmeter-api/changes/openmeter/plans/:planId/addons/get.md)

---

[API](https://skmtc.dev/openmeterio/apis/openmeter-api.md) · [All operations](https://skmtc.dev/openmeterio/apis/openmeter-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openmeterio/openmeter-api/revisions/3e66c224fc9b/schema)
