# Create a segment

`POST /v1/segments`

Requires an API key with the `segments:write` scope. [About keys and scopes](/docs/api/authentication)

Segments are rule-based audiences, evaluated when they are used rather than stored as a fixed membership list. Names must be unique within the organization.

## Request body

- `name` (string, required, 1–255 characters) — Unique within the workspace.
- `rules` (object, required)
  - One of: **Match all**
    - `all` (object[], required, at least 1 item, at most 20 items) — Every rule or nested group must match.
  - One of: **Match any**
    - `any` (object[], required, at least 1 item, at most 20 items) — At least one rule or nested group must match.

## Returns

Returns `201 Created` with a `Segment` in `data`. Otherwise returns an error; [Errors](/docs/api/errors) lists every code and which to retry.

- `id` (string, required, uuid)
- `name` (string, required)
- `rules` (object, required)
  - One of: **Match all**
    - `all` (object[], required, at least 1 item, at most 20 items) — Every rule or nested group must match.
  - One of: **Match any**
    - `any` (object[], required, at least 1 item, at most 20 items) — At least one rule or nested group must match.
- `lastCount` (integer | null, required, min 0, max 9007199254740991) — Audience size from the background count; null until first counted.
- `countedAt` (string | null, required, date-time) — When `lastCount` was taken.
- `createdAt` (string, required, date-time)
- `updatedAt` (string, required, date-time)

## Example

```bash
curl -X POST https://api.kirora.io/v1/segments \
  -H "Authorization: Bearer $KIRORA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Weekend specials",
    "rules": {
      "all": [
        {
          "type": "attribute",
          "field": "field_example",
          "operator": "equals"
        }
      ]
    }
  }'
```

Response `201`:

```json
{
  "data": {
    "id": "018f2a4e-6b1c-7d3e-9f40-37386ae05a6b",
    "name": "Weekend specials",
    "rules": {
      "all": [
        {
          "type": "attribute",
          "field": "field_example",
          "operator": "equals"
        }
      ]
    },
    "lastCount": 0,
    "countedAt": "2030-03-14T09:30:00Z",
    "createdAt": "2030-03-14T09:30:00Z",
    "updatedAt": "2030-03-14T09:30:00Z"
  }
}
```
