---
title: "Create an add-on"
method: POST
path: "/api/v1/addons"
tags: ["Add-ons"]
---

# Create an add-on

`POST /api/v1/addons`

## Request body

- CreateAddOnRequest
  - `description` string, nullable
  - `max_instances_per_subscription` integer, nullable
  - `name` string, required
  - `price_id` string, MeteroidId, required
  - `product_id` string, MeteroidId, required
  - `self_serviceable` boolean

## Response `201`

Add-on created

- AddOn
  - `archived_at` string, date-time, nullable
  - `created_at` string, date-time, required
  - `description` string, nullable
  - `entitlements` Entitlement[]
    - `created_at` string, date-time, required
    - `feature_id` string, MeteroidId, required
    - `id` string, MeteroidId, required
    - `updated_at` string, date-time, required
    - `value` union, required
      - BooleanEntitlementValue
        - `enabled` boolean, required
      - MeteredEntitlementValue
        - `enabled` boolean — Per-entitlement kill switch. `false` means disabled.
        - `limit` string, decimal, nullable — Cap on usage. Null means unlimited.
        - `reset_period` union
          - BillingCycleResetPeriod — Resets each time your subscription renews — anchored to your billing cycle.
          - CalendarResetPeriod — Resets on calendar boundaries (e.g. the 1st of every month) — not tied to subscription start date.
            - `interval` integer, required
            - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
          - FixedWindowResetPeriod — Resets at regular intervals — anchored to your subscription's exact activation time.
            - `interval` integer, required
            - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
          - SlidingWindowResetPeriod — Always ends at now — e.g. 30 days means the last 30 days, old usage drops off automatically.
            - `interval` integer, required
            - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
          - NeverResetPeriod — Never resets — counts all usage since the subscription was activated.
  - `fee_type` 'RATE' | 'SLOT' | 'CAPACITY' | 'USAGE' | 'EXTRA_RECURRING' | 'ONE_TIME'
  - `id` string, MeteroidId, required
  - `max_instances_per_subscription` integer, nullable
  - `name` string, required
  - `price_id` string, MeteroidId, required
  - `product_id` string, MeteroidId, required
  - `self_serviceable` boolean, required

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `429` — Too many requests

## Changes

- **2026-06-01** (v1) `07a61fe347a5` — 1 breaking, 1 warning
  - removed the required property `entitlements/items/value/oneOf[#/components/schemas/MeteredEntitlementValue]/overage_behavior` from the response with the `201` status
  - removed the optional property `entitlements/items/value/oneOf[#/components/schemas/MeteredEntitlementValue]/warning_threshold_pct` from the response with the `201` status
- **2026-05-28** (v1) `ed86d893d43e` — 1 breaking, 1 warning, 2 info
  - added `#/components/schemas/BooleanEntitlementValue, #/components/schemas/MeteredEntitlementValue` to the `entitlements/items/value` response property `oneOf` list for the response status `201`
  - removed the request property `entitlements`
  - added discriminator to `entitlements/items/value` response property for the response status `201`
  - removed `subschema #1, subschema #2` from the `entitlements/items/value` response property `oneOf` list for the response status `201`
- **2026-05-18** (v1) `0cdc37620ffb` — 2 info
  - added the new optional request property `entitlements`
  - added the optional property `entitlements` to the response with the `201` status
- **2026-03-27** (v1) `de35c02bb0d2` — 2 warning, 1 info
  - added the new `TOO_MANY_REQUESTS` enum value to the `code` response property for the response status `400`
  - added the new `TOO_MANY_REQUESTS` enum value to the `code` response property for the response status `401`
  - added the non-success response with the status `429`
- …earlier changes not shown

[Full history](https://skmtc.dev/meteroid-oss/apis/meteroid/changes/api/v1/addons/post.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/03f9d8ae5c5e/schema)
