---
title: "Create a testset"
method: POST
path: "/api/testsets/"
tags: ["testsets"]
---

# Create a testset

`POST /api/testsets/`

Create a new testset for evaluation. Public API responses return the external testset ID and column metadata only.

## 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` ApiTestsetsPostRequestBodyContentApplicationJsonSchemaColumnDefinitionsItems[] — 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 `201`

Created testset.

- TestsetsCreateTestsetResponse201
  - `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` ApiTestsetsPostResponsesContentApplicationJsonSchemaColumnDefinitionsItems[] — 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

---

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