---
title: "Create addon entitlements"
method: POST
path: "/api/v1/addons/{addonId}/entitlements"
tags: ["Addon Entitlements"]
---

# Create addon entitlements

`POST /api/v1/addons/{addonId}/entitlements`

Creates one or more entitlements (feature or credit) on a draft addon.

## Path parameters

- `addonId` string, required

## Headers

- `X-ACCOUNT-ID` string
- `X-ENVIRONMENT-ID` string

## Request body

- CreateAddonEntitlementsRequestDto — Request to create one or more entitlements on an addon
  - `entitlements` union[], required — Entitlements to create
    - union
      - object — Request to create a feature entitlement
        - `description` string — Description of the entitlement
        - `isGranted` boolean — Whether the entitlement is granted
        - `isCustom` boolean — Whether this is a custom entitlement
        - `order` number — Display order of the entitlement
        - `behavior` 'Increment' | 'Override' — Entitlement behavior (Increment or Override)
        - `hiddenFromWidgets` string[] — Widget types where this entitlement is hidden
        - `displayNameOverride` string — Override display name for the entitlement
        - `type` 'FEATURE', required — CreateFeatureEntitlementRequest
        - `id` string, required — The feature ID to attach the entitlement to
        - `usageLimit` integer, nullable — Maximum allowed usage for the feature
        - `hasUnlimitedUsage` boolean — Whether usage is unlimited
        - `hasSoftLimit` boolean — Whether the usage limit is a soft limit
        - `resetPeriod` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR' — Period at which usage resets
        - `yearlyResetPeriodConfiguration` object, nullable — Configuration for yearly reset period
          - `accordingTo` 'SubscriptionStart', required — Reset anchor (SubscriptionStart)
        - `monthlyResetPeriodConfiguration` object, nullable — Configuration for monthly reset period
          - `accordingTo` 'SubscriptionStart' | 'StartOfTheMonth', required — Reset anchor (SubscriptionStart or StartOfTheMonth)
        - `weeklyResetPeriodConfiguration` object, nullable — Configuration for weekly reset period
          - `accordingTo` 'SubscriptionStart' | 'EverySunday' | 'EveryMonday' | 'EveryTuesday' | 'EveryWednesday' | 'EveryThursday' | 'EveryFriday' | 'EverySaturday', required — Reset anchor (SubscriptionStart or specific day)
        - `enumValues` string[] — Allowed enum values for the feature entitlement
      - object — Request to create a credit entitlement
        - `description` string — Description of the entitlement
        - `isGranted` boolean — Whether the entitlement is granted
        - `isCustom` boolean — Whether this is a custom entitlement
        - `order` number — Display order of the entitlement
        - `behavior` 'Increment' | 'Override' — Entitlement behavior (Increment or Override)
        - `hiddenFromWidgets` string[] — Widget types where this entitlement is hidden
        - `displayNameOverride` string — Override display name for the entitlement
        - `type` 'CREDIT', required — CreateCreditEntitlementRequest
        - `id` string, required — The custom currency ID for the credit entitlement
        - `amount` number, nullable, required — Credit grant amount
        - `cadence` 'MONTH' | 'YEAR', required — Credit grant cadence (MONTH or YEAR)
        - `hasSoftLimit` boolean — Whether the credit wallet is soft-limited. When true, getEntitlement returns hasAccess=true past the limit; vendors decide whether to enforce. Defaults to false.
        - `dependencyFeatureId` string — The feature ID this entitlement depends on. The entitlement value will be calculated as: base amount × dependency feature usage limit

## Response `201`

The newly created addon entitlement objects.

- CreateAddonEntitlementsResponseDto — Response object
  - `data` union[], required
    - union
      - object — Feature entitlement response
        - `id` string, required — Unique identifier of the entitlement
        - `description` string, nullable, required — Optional description of the entitlement
        - `isGranted` boolean, required — Whether the entitlement is granted
        - `isCustom` boolean, nullable, required — Whether this is a custom entitlement
        - `order` number, nullable, required — Display order of the entitlement
        - `behavior` 'Increment' | 'Override', required — Entitlement behavior (Increment or Override)
        - `hiddenFromWidgets` string[], required — Widget types where this entitlement is hidden
        - `displayNameOverride` string, nullable, required — Override display name for the entitlement
        - `createdAt` string, date-time, required — Timestamp of when the record was created
        - `updatedAt` string, date-time, required — Timestamp of when the record was last updated
        - `type` 'FEATURE', required — Entitlement type (FEATURE or CREDIT)
        - `usageLimit` number, nullable, required — Usage limit (for feature entitlements)
        - `hasUnlimitedUsage` boolean, nullable, required — Whether usage is unlimited (for feature entitlements)
        - `hasSoftLimit` boolean, nullable, required — Whether the usage limit is a soft limit (for feature entitlements)
        - `resetPeriod` 'YEAR' | 'MONTH' | 'WEEK' | 'DAY' | 'HOUR', nullable, required — Usage reset period (for feature entitlements)
        - `resetPeriodConfiguration` union, required — Reset period configuration (for feature entitlements)
          - object — Yearly reset configuration
            - `accordingTo` 'SubscriptionStart', required — Reset anchor (SubscriptionStart)
          - object — Monthly reset configuration
            - `accordingTo` 'SubscriptionStart' | 'StartOfTheMonth', required — Reset anchor (SubscriptionStart or StartOfTheMonth)
          - object — Weekly reset configuration
            - `accordingTo` 'SubscriptionStart' | 'EverySunday' | 'EveryMonday' | 'EveryTuesday' | 'EveryWednesday' | 'EveryThursday' | 'EveryFriday' | 'EverySaturday', required — Reset anchor (SubscriptionStart or specific day)
        - `enumValues` string[], nullable, required — Allowed enum values (for feature entitlements)
      - object — Credit entitlement response
        - `id` string, required — Unique identifier of the entitlement
        - `description` string, nullable, required — Optional description of the entitlement
        - `isGranted` boolean, required — Whether the entitlement is granted
        - `isCustom` boolean, nullable, required — Whether this is a custom entitlement
        - `order` number, nullable, required — Display order of the entitlement
        - `behavior` 'Increment' | 'Override', required — Entitlement behavior (Increment or Override)
        - `hiddenFromWidgets` string[], required — Widget types where this entitlement is hidden
        - `displayNameOverride` string, nullable, required — Override display name for the entitlement
        - `createdAt` string, date-time, required — Timestamp of when the record was created
        - `updatedAt` string, date-time, required — Timestamp of when the record was last updated
        - `type` 'CREDIT', required — Entitlement type (FEATURE or CREDIT)
        - `amount` number, nullable, required — Credit amount (for credit entitlements)
        - `cadence` 'MONTH' | 'YEAR', nullable, required — Credit grant cadence (for credit entitlements)
        - `hasSoftLimit` boolean, nullable, required — Whether the credit wallet is soft-limited. When true, getEntitlement returns hasAccess=true past the limit; vendors decide whether to enforce. Defaults to false.
        - `dependencyFeatureId` string, nullable — The feature ID this entitlement depends on (for credit entitlements). The entitlement value will be calculated as: base amount × dependency feature usage limit

## Other responses

- `400` — bad request.
- `401` — User is not authenticated.
- `403` — User is not allowed to access this resource.
- `409` — Addon Entitlement conflict error.
- `429` — Too many requests.

## Changes

- **2026-07-23** `b876edd1a4fc` — 5 warning, 1 info
  - added the new `CreditOveragePriceCurrencyNotFound` enum value to the `code` response property for the response status `400`
  - added the new `InvalidCreditOverageBillingModel` enum value to the `code` response property for the response status `400`
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `400`
  - added the new `OveragePriceNotSupportedOnAddon` enum value to the `code` response property for the response status `400`
  - …2 more
- **2026-07-08** `58bb216ff8ce` — 1 warning
  - added the new `GovernanceNotEnabled` enum value to the `code` response property for the response status `403`
- **2026-06-23** `e1fe746d535d` — 2 info
  - added the new optional request property `entitlements/items/oneOf[subschema #2: CreateCreditEntitlementRequest]/hasSoftLimit`
  - added the required property `data/items/oneOf[subschema #2: CreditEntitlementResponse]/hasSoftLimit` to the response with the `201` status
- **2026-06-15** `7296f9e4b654` — 1 warning
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `409`
- **2026-06-08** `3acd63d6c861` — 2 info
  - added the new optional `header` request parameter `X-ACCOUNT-ID`
  - added the new optional `header` request parameter `X-ENVIRONMENT-ID`

[Full history](https://skmtc.dev/stiggio/apis/stigg-api/changes/api/v1/addons/:addonId/entitlements/post.md)

---

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