---
title: "Replace the set of annotation configurations assigned to a project"
method: PUT
path: "/v1/projects/{project_identifier}/annotation_configs"
tags: ["annotation_configs"]
---

# Replace the set of annotation configurations assigned to a project

`PUT /v1/projects/{project_identifier}/annotation_configs`

Replace the project's entire set of assigned annotation configurations with the provided set. The server diffs the desired set against the current set: configs in the body but not assigned are added, and configs assigned but not in the body are removed. An empty array clears all assignments.

## Path parameters

- `project_identifier` string, required — The project identifier: either project ID or project name.

## Request body

- SetProjectAnnotationConfigsRequestBody
  - `annotation_config_ids` string[], required — The complete set of annotation configuration GlobalIDs that should be assigned to the project. Configs not in this list are unassigned; an empty list clears all assignments.

## Response `200`

The resulting set of annotation configurations assigned to the project

- SetProjectAnnotationConfigsResponseBody
  - `data` union[], required
    - union
      - CategoricalAnnotationConfig
        - `name` string, required
        - `type` 'CATEGORICAL', required
        - `description` string, nullable
        - `optimization_direction` 'MINIMIZE' | 'MAXIMIZE' | 'NONE', required
        - `values` CategoricalAnnotationValue[], required
          - `label` string, required
          - `score` number, nullable
        - `id` string, required
      - ContinuousAnnotationConfig
        - `name` string, required
        - `type` 'CONTINUOUS', required
        - `description` string, nullable
        - `optimization_direction` 'MINIMIZE' | 'MAXIMIZE' | 'NONE', required
        - `lower_bound` number, nullable
        - `upper_bound` number, nullable
        - `id` string, required
      - FreeformAnnotationConfig
        - `name` string, required
        - `type` 'FREEFORM', required
        - `description` string, nullable
        - `optimization_direction` 'MINIMIZE' | 'MAXIMIZE' | 'NONE'
        - `threshold` number, nullable
        - `lower_bound` number, nullable
        - `upper_bound` number, nullable
        - `id` string, required
  - `next_cursor` string, nullable, required

## Other responses

- `403` — Forbidden
- `404` — Not Found
- `422` — Unprocessable Entity

---

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