---
title: "Get feature details"
method: GET
path: "/api/v1/features/{id_or_code}"
tags: ["Features"]
---

# Get feature details

`GET /api/v1/features/{id_or_code}`

## Path parameters

- `id_or_code` string, required

## Response `200`

Feature details

- Feature
  - `code` string, required — Unique key used to reference this feature in your code. Cannot be changed after creation.
  - `created_at` string, date-time, required
  - `description` string, nullable
  - `entitlement` Entitlement — A raw entitlement row attached to one entity (feature, plan version, add-on, or subscription).
    - `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.
  - `feature_type` union, required
    - BooleanFeatureType
    - MeteredFeatureType
      - `metric_id` string, MeteroidId, required
  - `id` string, MeteroidId, required
  - `name` string, required
  - `product` union
    - ExistingProductRef
      - `id` string, MeteroidId, required
    - NewProductRef
      - `fee_structure` union, required
        - RateFeeStructure
        - SlotFeeStructure
          - `downgrade_policy` 'REMOVE_AT_END_OF_PERIOD', required
          - `slot_unit_name` string, required
          - `upgrade_policy` 'PRORATED', required
        - CapacityFeeStructure
          - `metric_id` string, MeteroidId, required
        - UsageFeeStructure
          - `metric_id` string, MeteroidId, required
          - `model` 'PER_UNIT' | 'TIERED' | 'VOLUME' | 'PACKAGE' | 'MATRIX', required
        - ExtraRecurringFeeStructure
          - `billing_type` 'ADVANCE' | 'ARREARS', required
        - OneTimeFeeStructure
      - `fee_type` 'RATE' | 'SLOT' | 'CAPACITY' | 'USAGE' | 'EXTRA_RECURRING' | 'ONE_TIME', required
      - `name` string, required
  - `status` 'ACTIVE' | 'DISABLED' | 'ARCHIVED', required — Lifecycle status of a feature.

## Other responses

- `401` — Unauthorized
- `404` — Feature not found
- `429` — Too many requests

## Changes

- **2025-07-09** (v1) `dece17f86f99` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/meteroid-oss/apis/meteroid/changes/api/v1/features/:id_or_code/get.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/cf74b98b2838/schema)
