> For the complete documentation index, see [llms.txt](/llms.txt).
> A full single-fetch corpus is available at [llms-full.txt](/llms-full.txt).
---
title: "Create an experiment"
description: "Create an experiment against a dataset."
method: "POST"
endpoint: "/api/v1/projects/:projectId/experiments"
order: 2
group: "Manage experiments"
last_verified: 2026-07-27
---



`POST /api/v1/projects/:projectId/experiments`

Create an experiment against a dataset.


  #### Body parameters
  - `dataset_id` _string_ **required** — The dataset to run against.
  - `name` _string_ **required** — The experiment's name.
  - `type` _string_ **required** — evaluation, comparison, or ablation.
  - `target_type` _string_ — What's under test: component, deployment, or prompt.
  - `component_name` _string_ — The function, workflow, or agent to invoke, when target_type is component.
  - `deployment_id` _string_ — The deployment to invoke, when target_type is deployment.
  - `prompt_id` _string_ — The prompt to evaluate, when target_type is prompt.
  - `repetitions` _integer_ — How many times to run each dataset item.
  - `scorer_ids` _array_ — Custom scorer UUIDs to apply to every result.
  - `builtin_scorers` _array_ — AGNT5-owned built-in scorers to apply — bare names like exact_match, or name/config objects for scorers that need config, e.g. json_schema, numeric_range, llm_judge. Both forms can be mixed in the same array.



> Specify built-in scorers with `builtin_scorers` or with `config.builtin_scorers` — not both; sending both is a `400`. A builtin that needs config but is sent as a bare name (e.g. `json_schema` without a `schema`) is also a `400`, naming the missing config field.



