---
title: "Update plan"
method: PUT
path: "/plans/{id}"
tags: ["Plans"]
---

# Update plan

`PUT /plans/{id}`

Use when changing plan details (e.g. name, interval, or metadata). Partial update supported.

## Path parameters

- `id` string, required

## Request body

- UpdatePlanRequest
  - `description` string
  - `display_order` integer
  - `lookup_key` string
  - `metadata` TypesMetadata
  - `name` string

## Response `200`

OK

- PlanResponse
  - `created_at` string, date-time
  - `created_by` string
  - `credit_grants` CreditGrantResponse[]
    - `addon_id` string
    - `cadence` 'ONETIME' | 'RECURRING'
    - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
    - `created_at` string, date-time
    - `created_by` string
    - `credit_grant_anchor` string, date-time
    - `credits` string
    - `end_date` string, date-time
    - `environment_id` string
    - `expiration_duration` integer
    - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
    - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
    - `id` string
    - `metadata` TypesMetadata
    - `name` string
    - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
    - `period_count` integer
    - `plan_id` string
    - `priority` integer
    - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
    - `start_date` string, date-time
    - `status` 'published' | 'deleted' | 'archived'
    - `subscription_id` string
    - `tenant_id` string
    - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
    - `updated_at` string, date-time
    - `updated_by` string
  - `description` string
  - `display_order` integer
  - `entitlements` EntitlementResponse[]
    - `addon` AddonResponse
      - `created_at` string, date-time
      - `created_by` string
      - `credit_grants` CreditGrantResponse[]
        - `addon_id` string
        - `cadence` 'ONETIME' | 'RECURRING'
        - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grant_anchor` string, date-time
        - `credits` string
        - `end_date` string, date-time
        - `environment_id` string
        - `expiration_duration` integer
        - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
        - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
        - `id` string
        - `metadata` TypesMetadata
        - `name` string
        - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
        - `period_count` integer
        - `plan_id` string
        - `priority` integer
        - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
        - `start_date` string, date-time
        - `status` 'published' | 'deleted' | 'archived'
        - `subscription_id` string
        - `tenant_id` string
        - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
        - `updated_at` string, date-time
        - `updated_by` string
      - `description` string
      - `entitlements` EntitlementResponse[]
      - `environment_id` string
      - `id` string
      - `lookup_key` string
      - `metadata` object
      - `name` string
      - `prices` PriceResponse[] — Optional expanded fields
        - `addon` AddonResponse — recursive
        - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
        - `billing_cadence` 'RECURRING'
        - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
        - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
        - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
        - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
        - `created_at` string, date-time
        - `created_by` string
        - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
        - `description` string — Description of the price
        - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
        - `display_name` string — DisplayName is the name of the price
        - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
        - `end_date` string, date-time — EndDate is the end date of the price
        - `entity_id` string — EntityID holds the value of the "entity_id" field.
        - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
        - `environment_id` string — EnvironmentID is the environment identifier for the price
        - `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 — GroupID references the group this price belongs to
        - `id` string — ID uuid identifier for the price
        - `invoice_cadence` 'ARREAR' | 'ADVANCE'
        - `lookup_key` string — LookupKey used for looking up the price in the database
        - `metadata` PriceJSONBMetadata
        - `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 — MeterID is the id of the meter for usage based pricing
        - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
        - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
        - `plan` PlanResponse — recursive
        - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
        - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
        - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
        - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
          - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
          - `unit_amount` string — unit_amount is the amount per unit for the given tier
          - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
        - `price_unit_type` 'FIAT' | 'CUSTOM'
        - `pricing_unit` PriceUnitResponse
          - `base_currency` string
          - `code` string
          - `conversion_rate` string
          - `created_at` string, date-time
          - `created_by` string
          - `environment_id` string
          - `id` string
          - `metadata` TypesMetadata
          - `name` string
          - `status` 'published' | 'deleted' | 'archived'
          - `symbol` string
          - `tenant_id` string
          - `updated_at` string, date-time
          - `updated_by` string
        - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
        - `start_date` string, date-time — StartDate is the start date of the price
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `tier_mode` 'VOLUME' | 'SLAB'
        - `tiers` PricePriceTier[]
          - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
          - `unit_amount` string — unit_amount is the amount per unit for the given tier
          - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
        - `transform_quantity` PriceJSONBTransformQuantity
          - `divide_by` integer — Divide quantity by this number
          - `round` 'up' | 'down'
        - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
        - `type` 'USAGE' | 'FIXED'
        - `updated_at` string, date-time
        - `updated_by` string
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `aggregation_mode` 'additive' | 'parallel'
    - `config_value` object
    - `created_at` string, date-time
    - `created_by` string
    - `display_order` integer
    - `end_date` string, date-time
    - `entity_id` string
    - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
    - `environment_id` string
    - `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
    - `feature_id` string
    - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
    - `grant_duration_unit` 'hour' | 'day' | 'week'
    - `grant_duration_value` integer
    - `grant_measure` 'quantity' | 'amount'
    - `grant_quota` number
    - `id` string
    - `is_enabled` boolean
    - `is_soft_limit` boolean
    - `parent_entitlement_id` string
    - `plan` PlanResponse — recursive
    - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
    - `start_date` string, date-time
    - `static_value` string
    - `status` 'published' | 'deleted' | 'archived'
    - `tenant_id` string
    - `updated_at` string, date-time
    - `updated_by` string
    - `usage_limit` integer
    - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
  - `environment_id` string
  - `id` string
  - `lookup_key` string
  - `metadata` TypesMetadata
  - `name` string
  - `prices` PriceResponse[] — TODO: Add inline addons
    - `addon` AddonResponse
      - `created_at` string, date-time
      - `created_by` string
      - `credit_grants` CreditGrantResponse[]
        - `addon_id` string
        - `cadence` 'ONETIME' | 'RECURRING'
        - `conversion_rate` string — amount in the currency = number of credits * conversion_rate ex if conversion_rate is 1, then 1 USD = 1 credit ex if conversion_rate is 2, then 1 USD = 0.5 credits ex if conversion_rate is 0.5, then 1 USD = 2 credits
        - `created_at` string, date-time
        - `created_by` string
        - `credit_grant_anchor` string, date-time
        - `credits` string
        - `end_date` string, date-time
        - `environment_id` string
        - `expiration_duration` integer
        - `expiration_duration_unit` 'DAY' | 'WEEK' | 'MONTH' | 'YEAR'
        - `expiration_type` 'NEVER' | 'DURATION' | 'BILLING_CYCLE'
        - `id` string
        - `metadata` TypesMetadata
        - `name` string
        - `period` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'ANNUAL' | 'QUARTERLY' | 'HALF_YEARLY'
        - `period_count` integer
        - `plan_id` string
        - `priority` integer
        - `scope` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
        - `start_date` string, date-time
        - `status` 'published' | 'deleted' | 'archived'
        - `subscription_id` string
        - `tenant_id` string
        - `topup_conversion_rate` string — topup_conversion_rate is the conversion rate for the topup to the currency ex if topup_conversion_rate is 1, then 1 USD = 1 credit ex if topup_conversion_rate is 2, then 1 USD = 0.5 credits ex if topup_conversion_rate is 0.5, then 1 USD = 2 credits
        - `updated_at` string, date-time
        - `updated_by` string
      - `description` string
      - `entitlements` EntitlementResponse[]
        - `addon` AddonResponse — recursive
        - `aggregation_mode` 'additive' | 'parallel'
        - `config_value` object
        - `created_at` string, date-time
        - `created_by` string
        - `display_order` integer
        - `end_date` string, date-time
        - `entity_id` string
        - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON'
        - `environment_id` string
        - `feature` FeatureResponse
          - `alert_settings` TypesAlertSettings
            - `alert_enabled` boolean
            - `critical` TypesAlertThreshold
              - …
            - `info` TypesAlertThreshold
              - …
            - `warning` TypesAlertThreshold
              - …
          - `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
              - …
            - `created_at` string, date-time
            - `event_name` string
            - `filters` MeterFilter[]
              - …
            - `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
        - `feature_id` string
        - `feature_type` 'metered' | 'boolean' | 'static' | 'config'
        - `grant_duration_unit` 'hour' | 'day' | 'week'
        - `grant_duration_value` integer
        - `grant_measure` 'quantity' | 'amount'
        - `grant_quota` number
        - `id` string
        - `is_enabled` boolean
        - `is_soft_limit` boolean
        - `parent_entitlement_id` string
        - `plan` PlanResponse — recursive
        - `plan_id` string — TODO: Remove this once we have a proper entitlement entity type
        - `start_date` string, date-time
        - `static_value` string
        - `status` 'published' | 'deleted' | 'archived'
        - `tenant_id` string
        - `updated_at` string, date-time
        - `updated_by` string
        - `usage_limit` integer
        - `usage_reset_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'NEVER'
      - `environment_id` string
      - `id` string
      - `lookup_key` string
      - `metadata` object
      - `name` string
      - `prices` PriceResponse[] — Optional expanded fields
      - `status` 'published' | 'deleted' | 'archived'
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `amount` string — Amount stored in main currency units (e.g., dollars, not cents) For USD: 12.50 means $12.50
    - `billing_cadence` 'RECURRING'
    - `billing_model` 'FLAT_FEE' | 'PACKAGE' | 'TIERED'
    - `billing_period` 'MONTHLY' | 'ANNUAL' | 'WEEKLY' | 'DAILY' | 'QUARTERLY' | 'HALF_YEARLY' | 'ONETIME'
    - `billing_period_count` integer — BillingPeriodCount is the count of the billing period ex 1, 3, 6, 12
    - `conversion_rate` string — ConversionRate is the conversion rate of the price unit to the fiat currency
    - `created_at` string, date-time
    - `created_by` string
    - `currency` string — Currency 3 digit ISO currency code in lowercase ex usd, eur, gbp
    - `description` string — Description of the price
    - `display_amount` string — DisplayAmount is the formatted amount with currency symbol For USD: $12.50
    - `display_name` string — DisplayName is the name of the price
    - `display_price_unit_amount` string — DisplayPriceUnitAmount is the formatted amount of the price unit
    - `end_date` string, date-time — EndDate is the end date of the price
    - `entity_id` string — EntityID holds the value of the "entity_id" field.
    - `entity_type` 'PLAN' | 'SUBSCRIPTION' | 'ADDON' | 'PRICE' | 'COSTSHEET'
    - `environment_id` string — EnvironmentID is the environment identifier for the price
    - `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 — GroupID references the group this price belongs to
    - `id` string — ID uuid identifier for the price
    - `invoice_cadence` 'ARREAR' | 'ADVANCE'
    - `lookup_key` string — LookupKey used for looking up the price in the database
    - `metadata` PriceJSONBMetadata
    - `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 — MeterID is the id of the meter for usage based pricing
    - `min_quantity` string, nullable — MinQuantity is the minimum quantity of the price
    - `parent_price_id` string — ParentPriceID references the root price (always set for price lineage tracking)
    - `plan` PlanResponse — recursive
    - `price_unit` string — PriceUnit is the code of the price unit (e.g., 'btc', 'eth')
    - `price_unit_amount` string — PriceUnitAmount is the amount of the price unit
    - `price_unit_id` string — PriceUnitID is the id of the price unit (for CUSTOM type)
    - `price_unit_tiers` PricePriceTier[] — PriceUnitTiers are the tiers for the price unit when BillingModel is TIERED
      - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
      - `unit_amount` string — unit_amount is the amount per unit for the given tier
      - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
    - `price_unit_type` 'FIAT' | 'CUSTOM'
    - `pricing_unit` PriceUnitResponse
      - `base_currency` string
      - `code` string
      - `conversion_rate` string
      - `created_at` string, date-time
      - `created_by` string
      - `environment_id` string
      - `id` string
      - `metadata` TypesMetadata
      - `name` string
      - `status` 'published' | 'deleted' | 'archived'
      - `symbol` string
      - `tenant_id` string
      - `updated_at` string, date-time
      - `updated_by` string
    - `sequence` integer — Sequence is the monotonic stamp bumped on every state change that subscription line items need to react to. Read by the plan-price sync; set by the database (DEFAULT nextval) on create and by the price repository on termination / compatibility-affecting edits.
    - `start_date` string, date-time — StartDate is the start date of the price
    - `status` 'published' | 'deleted' | 'archived'
    - `tenant_id` string
    - `tier_mode` 'VOLUME' | 'SLAB'
    - `tiers` PricePriceTier[]
      - `flat_amount` string — flat_amount is the flat amount for the given tier (optional) Applied on top of unit_amount*quantity. Useful for cases like "2.7$ + 5c"
      - `unit_amount` string — unit_amount is the amount per unit for the given tier
      - `up_to` integer — up_to is the quantity up to which this tier applies. It is null for the last tier. IMPORTANT: Tier boundaries are INCLUSIVE. - If up_to is 1000, then quantity less than or equal to 1000 belongs to this tier - This behavior is consistent across both VOLUME and SLAB tier modes
    - `transform_quantity` PriceJSONBTransformQuantity
      - `divide_by` integer — Divide quantity by this number
      - `round` 'up' | 'down'
    - `trial_period_days` integer — TrialPeriodDays is the number of days for the trial period Note: This is only applicable for recurring prices (BILLING_CADENCE_RECURRING)
    - `type` 'USAGE' | 'FIXED'
    - `updated_at` string, date-time
    - `updated_by` string
  - `status` 'published' | 'deleted' | 'archived'
  - `tenant_id` string
  - `updated_at` string, date-time
  - `updated_by` 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)
