---
title: "Create Feature"
method: POST
path: "/api/v1/features"
tags: ["Features"]
---

# Create Feature

`POST /api/v1/features`

## Request body

- object
  - `feature` union, required
    - object
      - `type` 'toggle', required
      - `slug` string, required
      - `name` string, required
      - `description` string, required
      - `amount` unknown
      - `usageMeterId` unknown
      - `renewalFrequency` unknown
      - `pricingModelId` string, required
      - `active` boolean
    - object
      - `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

## 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
- `500` — Internal server error

## Changes

- **2025-10-18** `a1eeb4fac4d6` — 4 breaking, 8 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`
  - …8 more
- **2025-06-25** `0cf7bce0c17d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/flowglad/apis/flowglad-api/changes/api/v1/features/post.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)
