---
title: "Update add-on association for plan"
method: PUT
path: "/v3/openmeter/plans/{planId}/addons/{planAddonId}"
tags: ["OpenMeter Product Catalog"]
---

# Update add-on association for plan

`PUT /v3/openmeter/plans/{planId}/addons/{planAddonId}`

**Pre-release Endpoint**
This endpoint is currently in beta and is subject to change.

Update an add-on association for a plan.

## Path parameters

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

## Request body

- UpsertPlanAddonRequest — PlanAddon upsert request.
  - `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 "_".
  - `from_plan_phase` string, required — The key of the plan phase from which the add-on becomes available for purchase.
  - `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.

## Response `200`

PlanAddon upsert response.

- PlanAddon — PlanAddon represents an association between a plan and an add-on, controlling which add-ons are available for purchase within a plan.
  - `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 — An ISO-8601 timestamp representation of entity creation date.
  - `updated_at` string, date-time, required — An ISO-8601 timestamp representation of entity last update date.
  - `deleted_at` string, date-time — An ISO-8601 timestamp representation of entity deletion date.
  - `addon` object, required — The add-on associated with the plan.
    - `id` string, required — ULID (Universally Unique Lexicographically Sortable Identifier).
  - `from_plan_phase` string, required — The key of the plan phase from which the add-on becomes available for purchase.
  - `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.

## Other responses

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

---

[API](https://skmtc.net/kong/apis/konnect-api-go-sdk.md) · [All operations](https://skmtc.net/kong/apis/konnect-api-go-sdk/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kong/konnect-api-go-sdk/versions/0261aef4b1e2/schema)
