---
title: "Add an environment to a project."
method: POST
path: "/api/admin/projects/{projectId}/environments"
tags: ["Projects"]
---

# Add an environment to a project.

`POST /api/admin/projects/{projectId}/environments`

This endpoint adds the provided environment to the specified project, with optional support for enabling and disabling change requests for the environment and project.

## Path parameters

- `projectId` string, required

## Request body

- ProjectEnvironmentSchema — Add an environment to a project, optionally also sets if change requests are enabled for this environment on the project
  - `environment` string, required — The environment to add to the project
  - `changeRequestsEnabled` boolean — Whether change requests should be enabled or for this environment on the project or not
  - `defaultStrategy` CreateFeatureStrategySchema — Create a strategy configuration in a feature
    - `name` string, required — The name of the strategy type
    - `title` string, nullable — A descriptive title for the strategy
    - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
    - `sortOrder` number — The order of the strategy in the list
    - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
      - `contextName` string, required — The name of the context field that this constraint should apply to.
      - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
      - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
      - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
      - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
      - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
    - `variants` CreateStrategyVariantSchema[] — Strategy level variants
      - `name` string, required — The variant name. Must be unique for this feature flag
      - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
      - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
      - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
      - `payload` object — Extra data configured for this variant
        - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
        - `value` string, required — The actual value of payload
    - `parameters` ParametersSchema — A list of parameters for a strategy
    - `segments` number[] — Ids of segments to use for this strategy

## Response `200`

This response has no body.

## Other responses

- `401` — Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
- `403` — The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
- `409` — The provided resource can not be created or updated because it would conflict with the current state of the resource or with an already existing resource, respectively.

---

[API](https://skmtc.net/unleash/apis/unleash-api-3.md) · [All operations](https://skmtc.net/unleash/apis/unleash-api-3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/unleash/unleash-api-3/versions/b2c3116e633e/schema)
