---
title: "Replace a testset"
method: PUT
path: "/api/testsets/{testset_id}/"
tags: ["testsets"]
---

# Replace a testset

`PUT /api/testsets/{testset_id}/`

Replace a testset metadata payload.

## Path parameters

- `testset_id` string, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `name` string, required — Testset name.
  - `description` string — Optional description stored with the testset.
  - `starred` boolean — Whether to star the testset in the UI.
  - `column_definitions` ApiTestsetsTestsetIdPutRequestBodyContentApplicationJsonSchemaColumnDefinitionsItems[] — Column definitions for the testset rows.
    - `field` string, required — Canonical field name stored in each row.
    - `mapped_name` string — Optional display or import name for this field.
    - `width` number, double — Optional UI width in pixels.
    - `is_hidden` boolean — Whether this column should be hidden in the UI.
    - `type` 'text' | 'image_url' | 'note' | 'object' — Column value type.

## Response `200`

Updated testset.

- TestsetsReplaceTestsetResponse200
  - `id` string, required — Public testset ID.
  - `name` string, required — Testset name.
  - `created_at` string, date-time, required — When the testset was created.
  - `updated_at` string, date-time, required — When the testset was last updated.
  - `current_max_row_index` number, double, required — Highest row index currently present in the testset.
  - `project` string, nullable — Project identifier when the testset is associated with a project.
  - `column_definitions` ApiTestsetsTestsetIdPutResponsesContentApplicationJsonSchemaColumnDefinitionsItems[] — Configured columns for testset rows.
    - `field` string, required — Canonical field name stored in each row.
    - `mapped_name` string — Optional display or import name for this field.
    - `width` number, double — Optional UI width in pixels.
    - `is_hidden` boolean — Whether this column should be hidden in the UI.
    - `type` 'text' | 'image_url' | 'note' | 'object' — Column value type.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized - Missing/invalid authentication
- `404` — Not Found

## Changes

> 6 revisions in range; 3 could not be searched.

- **2026-07-31** `c26d550029f8` — 3 breaking, 9 warning, 17 info
  - the `column_definitions/items/` request property type/format changed from `object`/`` to ``/``
  - the `column_definitions/items/` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - removed the required property `column_definitions/items/field` from the response with the `200` status
  - removed the request property `column_definitions/items/field`
  - …25 more

[Change history](https://skmtc.dev/keywordsai/apis/api-reference/changes/api/testsets/:testset_id/put.md)

---

[API](https://skmtc.dev/keywordsai/apis/api-reference.md) · [All operations](https://skmtc.dev/keywordsai/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/keywordsai/api-reference/revisions/c61efaf24756/schema)
