---
title: "Create an eval prompt set"
method: POST
path: "/api/v1/ai/eval/prompt-sets"
tags: ["AI Eval"]
---

# Create an eval prompt set

`POST /api/v1/ai/eval/prompt-sets`

Create a new eval prompt set bound to a shared model. Initial prompts can be supplied; additional prompts can be added later via PATCH.

## Request body

- EvalPromptSetsCreateBody
  - `description` string, nullable — Optional human-readable description of the prompt set. Max 1024 characters.
  - `model_id` string, uuid, required — The shared model this prompt set is bound to.
  - `name` string, required — Human-readable name for the prompt set. 255 characters or fewer.
  - `prompts` object[] — Initial prompts for the set. Defaults to an empty list. At most 25 prompts.
    - `expectation` string, nullable — Optional expectation the analysis judge scores the analysis against. Max 16000 characters.
    - `prompt_text` string, required — The natural language prompt text. Max 8000 characters.
  - `slug` string, required — URL-safe identifier for the prompt set. Must be unique per `model_id` and match `^[a-z][a-z0-9-]*$`. Max 255 characters.

## Response `201`

Prompt set created successfully.

- EvalPromptSetsCreateResponse
  - `prompt_set` EvalPromptSet, required
    - `created_at` string, nullable, required — ISO 8601 timestamp when the prompt set was created.
    - `description` string, nullable, required — Optional human-readable description of the prompt set.
    - `id` string, uuid, required — Unique identifier for the prompt set.
    - `is_archived` boolean, required — Whether the prompt set has been archived.
    - `model_id` string, uuid, required — The shared model this prompt set is bound to.
    - `name` string, required — Human-readable name for the prompt set.
    - `prompts` EvalPrompt[], required — Prompts that make up the set.
      - `created_at` string, nullable, required — ISO 8601 timestamp when the prompt was created.
      - `expectation` string, nullable, required — The expectation the analysis judge scores the analysis against, or null when none was set.
      - `id` string, uuid, required — Unique identifier for the prompt.
      - `prompt_text` string, required — The natural language prompt text the AI is evaluated on.
      - `updated_at` string, nullable, required — ISO 8601 timestamp when the prompt was last updated.
    - `slug` string, required — URL-safe identifier for the prompt set. Unique per `model_id`.
    - `updated_at` string, nullable, required — ISO 8601 timestamp when the prompt set was last updated.

## Other responses

- `400` — Invalid request body.
- `401` — Missing or invalid API key.
- `403` — Insufficient permissions. The caller must have at least the Querier role on the model.
- `422` — Prompt count exceeds the organization's per-set cap (default 25, higher for orgs with the `ai-eval-extra-prompts` flag).

---

[API](https://skmtc.net/omniapp/apis/omni-api.md) · [All operations](https://skmtc.net/omniapp/apis/omni-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/omniapp/omni-api/versions/de7cac8b5983/schema)
