---
title: "Update an entitlement"
method: PATCH
path: "/api/v1/entitlements/{entitlement_id}"
tags: ["Entitlements"]
---

# Update an entitlement

`PATCH /api/v1/entitlements/{entitlement_id}`

## Path parameters

- `entitlement_id` string, MeteroidId, required

## Request body

- UpdateEntitlementRequest
  - `value` union
    - object
      - `enabled` boolean, required
      - `type` 'BOOLEAN', required
    - object
      - `enabled` boolean — Per-entitlement kill switch. `false` means disabled.
      - `limit` string, nullable — Cap on usage. Null means unlimited.
      - `overage_behavior` union, required — What happens past the limit.
        - object — Deny access once usage reaches the limit. Meteroid does not enforce this — your integration must check and act.
          - `grace_period_pct` integer, nullable
          - `type` 'BLOCK', required
        - object — Keep serving usage past the limit; overage is billed or handled out-of-band.
          - `type` 'ALLOW', required
      - `reset_period` union
        - object — Resets at the start of each subscription billing period.
          - `type` 'BILLING_CYCLE', required
        - object — Buckets aligned to the calendar (e.g. every 1st of the month), shared across customers.
          - `interval` integer, required
          - `type` 'CALENDAR', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Fixed-length buckets anchored on the subscription activation date. Resets at every boundary.
          - `interval` integer, required
          - `type` 'FIXED_WINDOW', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Continuous rolling window — usage older than the window edge drops out, no fixed reset.
          - `interval` integer, required
          - `type` 'SLIDING_WINDOW', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Usage accumulates for the life of the subscription — no reset.
          - `type` 'NEVER', required
      - `type` 'METERED', required
      - `warning_threshold_pct` integer, nullable — Percentage of the Cap at which a warning triggers (0–100).

## Response `200`

Entitlement updated

- 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
    - object
      - `enabled` boolean, required
      - `type` 'BOOLEAN', required
    - object
      - `enabled` boolean — Per-entitlement kill switch. `false` means disabled.
      - `limit` string, nullable — Cap on usage. Null means unlimited.
      - `overage_behavior` union, required — What happens past the limit.
        - object — Deny access once usage reaches the limit. Meteroid does not enforce this — your integration must check and act.
          - `grace_period_pct` integer, nullable
          - `type` 'BLOCK', required
        - object — Keep serving usage past the limit; overage is billed or handled out-of-band.
          - `type` 'ALLOW', required
      - `reset_period` union
        - object — Resets at the start of each subscription billing period.
          - `type` 'BILLING_CYCLE', required
        - object — Buckets aligned to the calendar (e.g. every 1st of the month), shared across customers.
          - `interval` integer, required
          - `type` 'CALENDAR', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Fixed-length buckets anchored on the subscription activation date. Resets at every boundary.
          - `interval` integer, required
          - `type` 'FIXED_WINDOW', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Continuous rolling window — usage older than the window edge drops out, no fixed reset.
          - `interval` integer, required
          - `type` 'SLIDING_WINDOW', required
          - `unit` 'HOUR' | 'DAY' | 'WEEK' | 'MONTH' | 'YEAR', required
        - object — Usage accumulates for the life of the subscription — no reset.
          - `type` 'NEVER', required
      - `type` 'METERED', required
      - `warning_threshold_pct` integer, nullable — Percentage of the Cap at which a warning triggers (0–100).

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `404` — Entitlement not found
- `429` — Too many requests

## Changes

- **2026-05-18** (v1) `0cdc37620ffb` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/meteroid-oss/apis/meteroid/changes/api/v1/entitlements/:entitlement_id/patch.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/0cdc37620ffb/schema)
