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

# Create a feature

`POST /api/v1/features`

Creates a new feature with the specified type, metering, and configuration.

## Headers

- `X-ACCOUNT-ID` string
- `X-ENVIRONMENT-ID` string

## Request body

- CreateFeatureRequestDto — Create a new feature with type, optional metering, and configuration.
  - `id` string, required — The unique identifier for the feature
  - `displayName` string, required — The display name for the feature
  - `description` string — The description for the feature
  - `featureType` 'BOOLEAN' | 'NUMBER' | 'ENUM', required — The type of the feature
  - `meterType` 'None' | 'FLUCTUATING' | 'INCREMENTAL' — The meter type for the feature
  - `featureStatus` 'NEW' | 'SUSPENDED' | 'ACTIVE' — The status of the feature
  - `featureUnits` string — The units for the feature
  - `featureUnitsPlural` string — The plural units for the feature
  - `metadata` object — The additional metadata for the feature
  - `unitTransformation` object, nullable — Unit transformation to be applied to the reported usage
    - `divide` integer, required — Divide usage by this number
    - `round` 'UP' | 'DOWN' — After division, either round the result up or down
    - `featureUnits` string — Singular feature units after the transformation
    - `featureUnitsPlural` string — Plural feature units after the transformation
  - `enumConfiguration` object[] — The configuration data for the feature
    - `value` string, required — The unique value identifier for the enum configuration entity
    - `displayName` string, required — The display name for the enum configuration entity

## Response `201`

The newly created feature object.

- FeatureResponseDto — Response object
  - `data` object, required — Feature configuration object
    - `id` string, required — The unique identifier for the feature
    - `displayName` string, required — The display name for the feature
    - `description` string, nullable, required — The description for the feature
    - `featureType` 'BOOLEAN' | 'NUMBER' | 'ENUM', required — The type of the feature
    - `meterType` 'None' | 'FLUCTUATING' | 'INCREMENTAL', required — The meter type for the feature
    - `featureUnits` string, nullable, required — The units for the feature
    - `featureUnitsPlural` string, nullable, required — The plural units for the feature
    - `featureStatus` 'NEW' | 'SUSPENDED' | 'ACTIVE', required — The status of the feature
    - `unitTransformation` object, nullable, required — Unit transformation to be applied to the reported usage
      - `divide` number, required — Divide usage by this number
      - `round` 'UP' | 'DOWN', required — After division, either round the result up or down
      - `featureUnits` string, nullable, required — Singular feature units after the transformation
      - `featureUnitsPlural` string, nullable, required — Plural feature units after the transformation
    - `enumConfiguration` object[], nullable, required — The configuration data for the feature
      - `value` string, required — The unique value identifier for the enum configuration entity
      - `displayName` string, required — The display name for the enum configuration entity
    - `metadata` object, required — The additional metadata for the feature
    - `createdAt` string, date-time, required — Timestamp of when the record was created
    - `updatedAt` string, date-time, required — Timestamp of when the record was last updated

## Other responses

- `400` — bad request.
- `401` — User is not authenticated.
- `403` — User is not allowed to access this resource.
- `409` — Feature conflict error.
- `429` — Too many requests.

## Changes

- **2026-07-23** `b876edd1a4fc` — 5 warning, 1 info
  - added the new `CreditOveragePriceCurrencyNotFound` enum value to the `code` response property for the response status `400`
  - added the new `InvalidCreditOverageBillingModel` enum value to the `code` response property for the response status `400`
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `400`
  - added the new `OveragePriceNotSupportedOnAddon` enum value to the `code` response property for the response status `400`
  - …2 more
- **2026-07-08** `58bb216ff8ce` — 1 warning
  - added the new `GovernanceNotEnabled` enum value to the `code` response property for the response status `403`
- **2026-06-15** `7296f9e4b654` — 1 warning
  - added the new `InvoicePreviewNotAvailableForDraftContract` enum value to the `code` response property for the response status `409`
- **2026-06-08** `3acd63d6c861` — 2 info
  - added the new optional `header` request parameter `X-ACCOUNT-ID`
  - added the new optional `header` request parameter `X-ENVIRONMENT-ID`
- **2026-06-04** `4fa87d66426d` — 1 warning
  - added the new `PricingModelNotSupportedByBillingIntegration` enum value to the `code` response property for the response status `400`

[Full history](https://skmtc.dev/stiggio/apis/stigg-api/changes/api/v1/features/post.md)

---

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