> ## Documentation Index
> Fetch the complete documentation index at: https://docs.developers.optimizely.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create flag variables

Variables let you remotely configure your flag. Instead of hard-coding and updating your variables by re-deploying, you can group them in a flag variation and update them remotely in the Optimizely Feature Experimentation application.

See [Create flag variables](https://support.optimizely.com/hc/en-us/articles/38655200299789) in the user documentation to see the available variable types, detailed examples, and step-by-step instructions for creating variables using the Feature Experimentation UI.

For a specific use-case example using an image carousel iOS, see [Flag variable example with an image carousel](https://docs.developers.optimizely.com/feature-experimentation/docs/flag-variable-example-with-an-image-carousel).

## Create flag variable

### Use the Feature Experimentation REST API

Use the [Create Variable Definition](https://docs.developers.optimizely.com/feature-experimentation/reference/create_variable_definition) endpoint.

**Endpoint** – `POST https://api.optimizely.com/flags/v1/projects/PROJECT_ID/flags/FLAG_KEY/variable_definitions`

**Authentication** – Include your API key in the `Authorization` header as a Bearer token. See [Generate tokens and use the REST APIs](https://docs.developers.optimizely.com/feature-experimentation/reference/generate-tokens-and-use-the-rest-apis).

**Request example**

```curl
curl --request POST \
     --url https://api.optimizely.com/flags/v1/projects/PROJECT_ID/flags/FLAG_KEY/variable_definitions \
     --header 'accept: application/json' \
     --header 'authorization: Bearer TOKEN' \
     --header 'content-type: application/json' \
     --data '
{
  "type": "TYPE",
  "default_value": "DEFAULT_VALUE",
  "description": "VARIABLE_DESCRIPTION",
  "key": "VARIABLE_KEY"
}
'
```

**Response example**

```json
{
  "key": "show_amounts",
  "description": "If inventory is shown, this variable controls what is displayed: available/unavailable vs the actual inventory amount.",
  "type": "boolean",
  "default_value": "false",
  "created_time": "2025-09-12T16:23:14.258485Z",
  "updated_time": "2025-09-12T16:23:14.258487Z",
  "role": "admin"
}
```

See the [Create Variable Definition](https://docs.developers.optimizely.com/feature-experimentation/reference/create_variable_definition) endpoint reference for the full list of parameters. You can also follow the [REST API cookbook](https://docs.developers.optimizely.com/feature-experimentation/reference/set-up-visual-basic-to-run-rest-api-calls) and see [step three to create events](https://docs.developers.optimizely.com/feature-experimentation/recipes/3-create-events#/).

### Use the Feature Experimentation UI

See [Create flag variables](https://support.optimizely.com/hc/en-us/articles/38655200299789) in the user documentation.

## Implement variables

After you have created your variables, the next step is to [create flag variations](https://docs.developers.optimizely.com/feature-experimentation/docs/create-flag-variations). Variations let you avoid hard-coding variables in your application and let you group and reuse variable values using flag rules.