---
title: "Update an annotation config"
method: PATCH
path: "/v2/annotation-configs/{annotation_config_id}"
tags: ["Annotation Configs"]
---

# Update an annotation config

`PATCH /v2/annotation-configs/{annotation_config_id}`

Update an annotation config by its ID.

**Payload Requirements**
- `annotation_config_type` is required and must match the stored config's type. The
  type is immutable and cannot be changed.
- The updatable fields depend on the type:
  - `CATEGORICAL`: `name`, `values`, `optimization_direction`.
  - `CONTINUOUS`: `name`, `minimum_score`, `maximum_score`, `optimization_direction`.
  - `FREEFORM`: `name`.
- All fields other than `annotation_config_type` are optional; omitted fields are left
  unchanged.
- `name`, if provided, must be unique within the space (409 Conflict if duplicate).
- `values` replaces the full label set (2-100 labels).
- System-managed fields (`id`, `space_id`, `created_at`) cannot be modified.

**Valid example** (categorical config)
```json
{
  "annotation_config_type": "CATEGORICAL",
  "name": "quality-v2",
  "values": [
    { "label": "good", "score": 1 },
    { "label": "bad", "score": 0 }
  ],
  "optimization_direction": "MAXIMIZE"
}
```

**Invalid example** (missing `annotation_config_type`)
```json
{
  "name": "quality-v2"
}
```

<Note>This endpoint is in beta, read more [here](https://arize.com/docs/ax/rest-reference#api-version-stages).</Note>

## Path parameters

- `annotation_config_id` string, required — A universally unique identifier (base64-encoded opaque string).

## Request body

- union
  - object
    - `annotation_config_type` 'CONTINUOUS', required — Discriminator value identifying a continuous annotation config. The config `type` is immutable and must match the stored config's type.
    - `name` string — New name for the annotation config. Must be unique within the space.
    - `minimum_score` number, double — New minimum score value.
    - `maximum_score` number, double — New maximum score value.
    - `optimization_direction` 'MAXIMIZE' | 'MINIMIZE' | 'NONE' — The direction for optimization. Defaults to `NONE` when omitted. - MAXIMIZE: higher scores are better - MINIMIZE: lower scores are better - NONE: higher or lower scores are neither better nor worse
  - object
    - `annotation_config_type` 'CATEGORICAL', required — Discriminator value identifying a categorical annotation config. The config `type` is immutable and must match the stored config's type.
    - `name` string — New name for the annotation config. Must be unique within the space.
    - `values` CategoricalAnnotationValueRequest[] — The full replacement set of categorical annotation values (2–100 items).
      - `label` string, required — The label value
      - `score` number, double — A score to associate with the label
    - `optimization_direction` 'MAXIMIZE' | 'MINIMIZE' | 'NONE' — The direction for optimization. Defaults to `NONE` when omitted. - MAXIMIZE: higher scores are better - MINIMIZE: lower scores are better - NONE: higher or lower scores are neither better nor worse
  - object
    - `annotation_config_type` 'FREEFORM', required — Discriminator value identifying a freeform annotation config. The config `type` is immutable and must match the stored config's type.
    - `name` string — New name for the annotation config. Must be unique within the space.

## Response `200`

An annotation config object

- union
  - object
    - `id` string, required — The unique identifier for the annotation config
    - `name` string, required — The name of the annotation config
    - `created_at` string, date-time, required — The timestamp for when the annotation config was created
    - `space_id` string, required — The space id the annotation config belongs to
    - `type` 'CONTINUOUS', required — Discriminator value identifying a continuous annotation config.
    - `minimum_score` number, double, required — The minimum score value
    - `maximum_score` number, double, required — The maximum score value
    - `optimization_direction` 'MAXIMIZE' | 'MINIMIZE' | 'NONE' — The direction for optimization. Defaults to `NONE` when omitted. - MAXIMIZE: higher scores are better - MINIMIZE: lower scores are better - NONE: higher or lower scores are neither better nor worse
  - object
    - `id` string, required — The unique identifier for the annotation config
    - `name` string, required — The name of the annotation config
    - `created_at` string, date-time, required — The timestamp for when the annotation config was created
    - `space_id` string, required — The space id the annotation config belongs to
    - `type` 'CATEGORICAL', required — Discriminator value identifying a categorical annotation config.
    - `values` CategoricalAnnotationValue[], required — An array of categorical annotation values
      - `label` string, required — The label value
      - `score` number, double — A score to associate with the label
    - `optimization_direction` 'MAXIMIZE' | 'MINIMIZE' | 'NONE' — The direction for optimization. Defaults to `NONE` when omitted. - MAXIMIZE: higher scores are better - MINIMIZE: lower scores are better - NONE: higher or lower scores are neither better nor worse
  - object
    - `id` string, required — The unique identifier for the annotation config
    - `name` string, required — The name of the annotation config
    - `created_at` string, date-time, required — The timestamp for when the annotation config was created
    - `space_id` string, required — The space id the annotation config belongs to
    - `type` 'FREEFORM', required — Discriminator value identifying a freeform annotation config.

## Other responses

- `400` — Invalid request
- `401` — Authentication is required
- `403` — Insufficient permissions to access this resource
- `404` — Not found
- `409` — Resource conflict
- `422` — Unprocessable entity
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/arize-ai/apis/arize-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-rest-api/versions/2ce448f1de13/schema)
