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

# Replace a testset row

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

Replace the payload for a single row.

## Path parameters

- `testset_id` string, required
- `row_index` string, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `row_data` ApiTestsetsTestsetIdRowsRowIndexPutRequestBodyContentApplicationJsonSchemaRowData, required — Updated row payload keyed by testset column field.

## Response `200`

Updated row.

- TestsetsReplaceTestsetRowResponse200
  - `row_index` number, double, required — Row index. Decimal values can be returned after reordering.
  - `testset_id` string, required — Parent testset ID.
  - `row_data` ApiTestsetsTestsetIdRowsRowIndexPutResponsesContentApplicationJsonSchemaRowData, required — Row payload keyed by testset column field.

## 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` — 4 breaking, 8 info
  - the `row_data` request property type/format changed from `object`/`` to ``/``
  - the response property `row_data` became optional for the status `200`
  - the `row_data` response's property type/format changed from `object`/`` to ``/`` for status `200`
  - removed the required property `testset_id` from the response with the `200` status
  - …8 more

[Change history](https://skmtc.dev/keywordsai/apis/api-reference/changes/api/testsets/:testset_id/rows/:row_index/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)
