---
title: "Delete evaluator versions"
method: DELETE
path: "/v2/evaluators/{evaluator_id}/versions"
tags: ["Evaluators"]
---

# Delete evaluator versions

`DELETE /v2/evaluators/{evaluator_id}/versions`

**Endpoint:** `DELETE /v2/evaluators/{evaluator_id}/versions`

Deletes a batch of versions belonging to the evaluator identified by the
`evaluator_id` path parameter. This operation is irreversible.

The delete is partial-tolerant: versions that exist and belong to
`evaluator_id` are deleted; every requested ID that was not deleted is
reported back in `not_deleted_version_ids` (for example, because a version
was not found or belongs to a different evaluator). This is not an error —
the response is still `200`.

Deleting a version currently pinned to a running online task un-pins that
task; it falls back to resolving the evaluator's latest version.

**Payload Requirements**
- `version_ids` must contain between 1 and 100 IDs. Duplicate IDs are accepted
  and silently collapsed so each version is processed at most once.

**Responses**
- `200` — request processed. Check `deleted_version_ids` /
  `not_deleted_version_ids` for the outcome of each requested ID.
- `400` — malformed request: `evaluator_id` fails ID-format validation
  (`Invalid evaluator ID format`), or `version_ids` is missing/empty
  (`version_ids must contain at least one evaluator version ID`), not an
  array (`version_ids must be an array`), exceeds 100 entries
  (`version_ids cannot contain more than 100 evaluator version IDs`), or
  one entry fails ID-format validation
  (`Invalid evaluator version ID format`).
- `401` — missing or invalid credentials.
- `403` — the evaluator is readable but the caller lacks permission to
  delete its versions.
- `404` — `evaluator_id` does not exist or is not readable by the caller
  (`Evaluator not found`).
- `429` — rate limit exceeded.

**Valid example** — evaluator `RXZhbHVhdG9yOjEyOkI3cmk=` with a single
version `RXZhbHVhdG9yVmVyc2lvbjozMjpBQ0Q2`:
```json
{
  "version_ids": ["RXZhbHVhdG9yVmVyc2lvbjozMjpBQ0Q2"]
}
```
Response `200`:
```json
{
  "completed": true,
  "deleted_version_ids": ["RXZhbHVhdG9yVmVyc2lvbjozMjpBQ0Q2"],
  "not_deleted_version_ids": []
}
```

**Invalid example** (empty `version_ids`)
```json
{
  "version_ids": []
}
```
Response `400`:
```json
{
  "status": 400,
  "title": "Bad Request",
  "type": "https://arize.com/docs/ax/rest-reference/errors#invalid-request",
  "detail": "version_ids must contain at least one evaluator version ID"
}
```

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

## Path parameters

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

## Request body

- DeleteEvaluatorVersionsRequest — Body identifying the versions to delete from the evaluator named by the `evaluator_id` path parameter.
  - `version_ids` string[], required — IDs of the evaluator versions to delete (up to 100 per request). IDs that do not belong to `evaluator_id` are reported as not deleted. Duplicate IDs are accepted and silently collapsed so each version is processed at most once.

## Response `200`

Evaluator versions processed. A successful response includes `completed: true`
because both result lists are complete. This does not indicate whether every
requested version existed or was deleted. The delete is idempotent.

- DeleteEvaluatorVersionsResponse — Result of a DELETE /v2/evaluators/{evaluator_id}/versions request. The delete is partial-tolerant: requested versions that exist and belong to `evaluator_id` are deleted; every requested ID that was not deleted is reported in `not_deleted_version_ids`. An ID may be not-deleted because it does not exist or belongs to a different evaluator. `completed` is `true` when this response is returned because the synchronous delete has fully processed the request. It does not mean every requested version was found and deleted: each requested ID appears in exactly one of `deleted_version_ids` or `not_deleted_version_ids`. The delete operation is idempotent — re-submitting already-deleted IDs is safe and simply reports them as not deleted. Deleting a version that is currently pinned to a running online task un-pins that task, which then falls back to resolving the evaluator's latest version.
  - `completed` boolean, required — Always `true` in a successful response, indicating both result lists are complete. This does not indicate whether all requested versions existed.
  - `deleted_version_ids` string[], required — Evaluator version IDs confirmed deleted in this request.
  - `not_deleted_version_ids` string[], required — Requested evaluator version IDs that were not deleted.

## Other responses

- `400` — Invalid request
- `401` — Authentication is required
- `403` — Insufficient permissions to access this resource
- `404` — Not found
- `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/revisions/3bd12c62a2e4/schema)
