---
title: "Get subscription entitlements"
method: GET
path: "/subscriptions/{id}/entitlements"
tags: ["Subscriptions"]
---

# Get subscription entitlements

`GET /subscriptions/{id}/entitlements`

Use when checking what features or limits a subscription has (e.g. entitlement checks or feature gating). Optional feature_ids to filter.

## Path parameters

- `id` string, required

## Query parameters

- `feature_ids` string[]

## Response `200`

OK

- SubscriptionEntitlementsResponse
  - `features` AggregatedFeature[]
    - `entitlement` AggregatedEntitlement
      - `aggregation_mode` 'additive' | 'parallel'
      - `buckets` AggregatedEntitlementBucket[]
        - `entitlement_id` string
        - `grant_duration_unit` 'hour' | 'day' | 'week'
        - `grant_duration_value` integer
        - `grant_measure` 'quantity' | 'amount'
        - `grant_quota` string
        - `source_entity_id` string
        - `usage_limit` integer
      - `config_values` object[]
      - `is_enabled` boolean
      - `is_soft_limit` boolean
      - `static_values` string[]
      - `usage_limit` integer
      - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
    - `feature` FeatureResponse
      - `alert_settings` TypesAlertSettings
        - `alert_enabled` boolean
        - `critical` TypesAlertThreshold
          - `condition` 'above' | 'below'
          - `threshold` string
        - `info` TypesAlertThreshold
          - `condition` 'above' | 'below'
          - `threshold` string
        - `warning` TypesAlertThreshold
          - `condition` 'above' | 'below'
          - `threshold` string
      - `created_at` string, date-time
      - `created_by` string
      - `description` string
      - `environment_id` string
      - `group` GroupResponse
        - `created_at` string, date-time
        - `entity_ids` string[]
        - `entity_type` string
        - `id` string
        - `lookup_key` string
        - `metadata` object
        - `name` string
        - `status` string
        - `updated_at` string, date-time
      - `group_id` string
      - `id` string
      - `lookup_key` string
      - `metadata` TypesMetadata
      - `meter` MeterResponse
        - `aggregation` MeterAggregation
          - `bucket_size` 'MINUTE' | '15MIN' | '30MIN' | 'HOUR' | '3HOUR' | '6HOUR' | '12HOUR' | 'DAY' | 'WEEK' | 'MONTH'
          - `expression` string — Expression is an optional CEL expression to compute per-event quantity from event.properties. When set, it replaces Field-based extraction. Property names are used directly (e.g., token * duration * pixel).
          - `field` string — Field is the key in $event.properties on which the aggregation is to be applied For ex if the aggregation type is sum for API usage, the field could be "duration_ms" Ignored when Expression is set.
          - `group_by` string — GroupBy is the property name in event.properties to group by before aggregating. Currently only supported for MAX aggregation with bucket_size. When set, aggregation is applied per unique value of this property within each bucket, then the per-group results are summed to produce the bucket total.
          - `multiplier` string — Multiplier is the multiplier for the aggregation For ex if the aggregation type is sum_with_multiplier for API usage, the multiplier could be 1000 to scale up by a factor of 1000. If not provided, it will be null.
          - `type` 'COUNT' | 'SUM' | 'AVG' | 'COUNT_UNIQUE' | 'LATEST' | 'SUM_WITH_MULTIPLIER' | 'MAX' | 'WEIGHTED_SUM'
        - `created_at` string, date-time
        - `event_name` string
        - `filters` MeterFilter[]
          - `key` string — Key is the key for the filter from $event.properties Currently we support only first level keys in the properties and not nested keys
          - `values` string[] — Values are the possible values for the filter to be considered for the meter For ex "model_name" could have values "o1-mini", "gpt-4o" etc
        - `id` string
        - `name` string
        - `reset_usage` 'BILLING_PERIOD' | 'NEVER'
        - `status` string
        - `tenant_id` string
        - `updated_at` string, date-time
      - `meter_id` string
      - `name` string
      - `reporting_unit` TypesReportingUnit
        - `conversion_rate` number — Multiplier: reporting_unit_value = unit_value * conversion_rate; must be > 0
        - `unit_plural` string — Display unit label, plural (e.g. "seconds")
        - `unit_singular` string — Display unit label, singular (e.g. "second")
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `type` 'metered' | 'boolean' | 'static' | 'config'
      - `unit_plural` string
      - `unit_singular` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `sources` EntitlementSource[]
      - `config_value` object
      - `entitlement_id` string
      - `entity_id` string
      - `entity_name` string
      - `entity_type` 'plan' | 'addon' | 'subscription'
      - `is_enabled` boolean
      - `quantity` integer
      - `static_value` string
      - `subscription_id` string
      - `usage_limit` integer
      - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
  - `plan_id` string
  - `subscription_id` string

## Other responses

- `400` — Invalid request
- `404` — Resource not found
- `500` — Server error

---

[API](https://skmtc.net/flexprice/apis/flexprice-api.md) · [All operations](https://skmtc.net/flexprice/apis/flexprice-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/flexprice/flexprice-api/versions/f0601ed97bd3/schema)
