# Experiment

> Tracon documentation. Tracon is a .NET package family that adds a control
> plane on Microsoft Agent Framework, published as NuGet packages that run
> inside your own ASP.NET Core application.
>
> Page: https://tracon.dev/http-api/schemas/experiment/
> Summary: OpenAPI request or response schema for Experiment, including required fields, defaults, constraints, and linked nested types.

[← All HTTP schemas](/http-api/schemas/)

Represents an A/B experiment that splits traffic between two or more definition versions of the same agent.

**Shape:** `object`

| Property | Required | Type | Description | Rules |
|---|---|---|---|---|
| `id` | yes | `string (uuid)` | Gets the experiment identifier. | — |
| `tenantId` | yes | `string` | Gets the tenant that owns the experiment. | — |
| `name` | yes | `string` | Gets the experiment name. It is unique within the tenant and is used as an API route key. | — |
| `agentName` | yes | `string` | Gets the name of the agent whose traffic is split. | — |
| `variants` | yes | array of [`ExperimentVariant`](/http-api/schemas/experimentvariant/) | Gets the experiment variants. Their weights must total 100. | — |
| `status` | no | [`ExperimentStatus`](/http-api/schemas/experimentstatus/) | Gets the current experiment status. | — |
| `assignmentKey` | no | `string` | Gets a reserved value. Runtime assignment does <strong>not read</strong> it: the assignment key is always the session identifier, or the run identifier when no session exists. The property is reserved for future strategies that assign outside a session, and setting it today changes nothing. | — |
| `startedAt` | no | `string (date-time)` | Gets the time when the experiment entered ExperimentStatus.Running. Returns `null` while it is a draft. | — |
| `endedAt` | no | `string (date-time)` | Gets the time when the experiment stopped. Returns `null` when it runs or never started. | — |
| `updatedAt` | no | `string (date-time)` | Gets the UTC time of the last update. | — |
| `canary` | no | `null` oneOf [`CanaryPolicy`](/http-api/schemas/canarypolicy/) | — | — |
| `rollbackReason` | no | `string` | Gets the reason for an automatic rollback. Returns `null` when the experiment was stopped manually or was never stopped. | — |
