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

# Create Flag Variants

> Learn how to create and manage flag variants.

export const HowToSchema = ({name, description, steps = []}) => {
  const schema = {
    "@context": "https://schema.org",
    "@type": "HowTo",
    name,
    description
  };
  if (steps.length > 0) {
    schema.step = steps.map((s, i) => ({
      "@type": "HowToStep",
      position: i + 1,
      name: typeof s === "string" ? s : s.name,
      text: typeof s === "string" ? s : s.text || s.name
    }));
  }
  return <script type="application/ld+json" dangerouslySetInnerHTML={{
    __html: JSON.stringify(schema)
  }} />;
};

<HowToSchema
  name="Create Flag Variants"
  description="Learn how to create and manage flag variants."
  steps={[
"Create a Control Variant",
{
  name: "Create a Treatment Variant",
  text: "Variant values don't need to include all schema fields - only set the fields you need.",
},
{
  name: "Create More Variants",
  text: "For multi-variant tests, create as many variants as needed:",
},
{
  name: "Update a Variant",
  text: "Change an existing variant's value or description:",
},
{ name: "List All Variants", text: "Get all variants for a flag:" },
{ name: "Get a Specific Variant", text: "Retrieve a single variant:" },
]}
/>

Create variants to define the different values a flag can return.

## Create a Control Variant

```bash theme={null}
curl -X POST "https://flags.confidence.dev/v1/flags/example-flag/variants" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "flags/example-flag/variants/control",
    "value": {
      "enabled": false,
      "color": "blue",
      "size": 10
    },
    "description": "Control variant"
  }'
```

## Create a Treatment Variant

```bash theme={null}
curl -X POST "https://flags.confidence.dev/v1/flags/example-flag/variants" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "flags/example-flag/variants/treatment",
    "value": {
      "enabled": true,
      "color": "red",
      "size": 20
    },
    "description": "Treatment variant"
  }'
```

<Tip>
  Variant values don't need to include all schema fields - only set the fields you need.
</Tip>

## Create More Variants

For multi-variant tests, create as many variants as needed:

```bash theme={null}
curl -X POST "https://flags.confidence.dev/v1/flags/example-flag/variants" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "flags/example-flag/variants/option-c",
    "value": {
      "enabled": true,
      "color": "green",
      "size": 15
    },
    "description": "Third variant"
  }'
```

## Update a Variant

Change an existing variant's value or description:

```bash theme={null}
curl -X PATCH "https://flags.confidence.dev/v1/flags/example-flag/variants/control?updateMask=value,description" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "value": {
      "enabled": false,
      "color": "navy",
      "size": 12
    },
    "description": "Updated control variant"
  }'
```

## List All Variants

Get all variants for a flag:

```bash theme={null}
curl -X GET "https://flags.confidence.dev/v1/flags/example-flag/variants" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Get a Specific Variant

Retrieve a single variant:

```bash theme={null}
curl -X GET "https://flags.confidence.dev/v1/flags/example-flag/variants/control" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Next Steps

After creating variants:

1. [Create segments](./create-segment) to target audiences
2. [Create rules](./create-flag-rule) to assign variants to segments
3. [Resolve flags](./resolve-flags) to get variant values
