---
title: "Update Feature"
method: PUT
path: "/api/v1/features/{id}"
tags: ["Features"]
---

# Update Feature

`PUT /api/v1/features/{id}`

## Path parameters

- `id` string, required

## Request body

- object
  - `feature` union, required
    - object
      - `id` string, required
      - `type` 'toggle', required
      - `slug` string
      - `name` string
      - `description` string
      - `amount` unknown
      - `usageMeterId` unknown
      - `renewalFrequency` unknown
      - `pricingModelId` string
      - `active` boolean
    - object
      - `id` string, required
      - `type` 'usage_credit_grant', required
      - `slug` string
      - `name` string
      - `description` string
      - `amount` integer, required
      - `usageMeterId` string, required
      - `renewalFrequency` 'once' | 'every_billing_period', required
      - `pricingModelId` string
      - `active` boolean

## Response `200`

Successful response

- object
  - `feature` union, required
    - object
      - `id` string, required
      - `createdAt` integer, required — Epoch milliseconds.
      - `updatedAt` integer, required — Epoch milliseconds.
      - `livemode` boolean, required
      - `organizationId` string, required
      - `type` 'toggle', required
      - `slug` string, required
      - `name` string, required
      - `description` string, required
      - `amount` unknown
      - `usageMeterId` unknown
      - `renewalFrequency` unknown
      - `pricingModelId` string, required
      - `active` boolean, required
    - object
      - `id` string, required
      - `createdAt` integer, required — Epoch milliseconds.
      - `updatedAt` integer, required — Epoch milliseconds.
      - `livemode` boolean, required
      - `organizationId` string, required
      - `type` 'usage_credit_grant', required
      - `slug` string, required
      - `name` string, required
      - `description` string, required
      - `amount` integer, required
      - `usageMeterId` string, required
      - `renewalFrequency` 'once' | 'every_billing_period', required
      - `pricingModelId` string, required
      - `active` boolean, required

## Other responses

- `400` — Invalid input data
- `401` — Authorization not provided
- `403` — Insufficient access
- `404` — Not found
- `500` — Internal server error

## Changes

- **2025-10-18** `a1eeb4fac4d6` — 4 breaking, 9 info
  - removed `subschema #1, subschema #2` from the `feature` request property `anyOf` list
  - the `feature` request property type changed from no type to `object`
  - added `#/components/schemas/ToggleFeatureClientSelectSchema, #/components/schemas/UsageCreditGrantFeatureClientSelectSchema` to the `feature` response property `oneOf` list for the response status `200`
  - the `feature` response's property type changed from no type to `object` for status `200`
  - …9 more
- **2025-06-25** `0cf7bce0c17d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/flowglad/apis/flowglad-api/changes/api/v1/features/:id/put.md)

---

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