---
title: "Trigger test suite execution"
method: POST
path: "/ai/assistants/tests/test-suites/{suite_name}/runs"
tags: ["Assistants"]
---

# Trigger test suite execution

`POST /ai/assistants/tests/test-suites/{suite_name}/runs`

Executes all tests within a specific test suite as a batch operation

## Path parameters

- `suite_name` string, required

## Headers

- `Idempotency-Key` string

## Request body

- TriggerTestSuiteRunsRequest — Request model for triggering test suite runs. Optional request body for the trigger test suite runs endpoint.
  - `destination_version_id` string — Optional assistant version ID to use for all test runs in this suite. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version

## Response `201`

Returns array of created test runs for all tests in the suite

- TestRunResponse[]
  - `run_id` string, uuid, required — Unique identifier for this specific test run execution.
  - `test_id` string, uuid, required — Identifier of the assistant test that was executed.
  - `status` 'pending' | 'starting' | 'running' | 'passed' | 'failed' | 'error', required — Represents the lifecycle of a test: - 'pending': Test is waiting to be executed. - 'starting': Test execution is initializing. - 'running': Test is currently executing. - 'passed': Test completed successfully. - 'failed': Test executed but did not pass. - 'error': An error occurred during test execution.
  - `triggered_by` string, required — How this test run was initiated (manual, scheduled, or API).
  - `completed_at` string, date-time — Timestamp when the test run finished execution.
  - `logs` string — Detailed execution logs and debug information.
  - `conversation_id` string — Identifier of the conversation created during test execution.
  - `conversation_insights_id` string — Identifier for conversation analysis and insights data.
  - `test_suite_run_id` string, uuid — Identifier linking this run to a test suite execution batch.
  - `created_at` string, date-time, required — Timestamp when the test run was created and queued.
  - `updated_at` string, date-time — Timestamp of the last update to this test run.
  - `detail_status` TestRunDetailResult[] — Detailed evaluation results for each rubric criteria. Name is name of the criteria from the rubric and status is the result of the evaluation. This list will have a result for every criteria in the rubric section.
    - `name` string, required
    - `status` 'pending' | 'starting' | 'running' | 'passed' | 'failed' | 'error', required — Represents the lifecycle of a test: - 'pending': Test is waiting to be executed. - 'starting': Test execution is initializing. - 'running': Test is currently executing. - 'passed': Test completed successfully. - 'failed': Test executed but did not pass. - 'error': An error occurred during test execution.

## Other responses

- `400` — Bad Request / Validation Failed (10015). Invalid, duplicate, empty, malformed, or overlong Idempotency-Key headers are rejected by Edge with HTTP 400 and error code 10015.
- `409` — A request with the same Idempotency-Key is still being processed (10036). Retry later with the same key and request.
- `413` — Payload Too Large. A request sent with an Idempotency-Key whose body exceeds the endpoint's Edge replay-protection limit (256 KB) is rejected before it reaches the service. Requests sent without the header are not subject to this limit.
- `422` — Validation Error. Reusing an Idempotency-Key with a different request body also returns 422 with error code 10027.
- `503` — Service unavailable (10016), including unavailable Edge idempotency protection for a keyed request.

## Changes

> 93 revisions in range; 1 not diffed.

- **2026-09-22** `9621f6123ebc` — 2 warning
  - added the new `10011` enum value to the `errors/items/code` response property for the response status `409`
  - added the new `domain_graduation_limit_exceeded` enum value to the `errors/items/code` response property for the response status `409`
- **2026-09-16** `a6a61a29ecdd` — 1 breaking, 1 warning, 6 info
  - the response's body type changed from `object` to no type for status `422`
  - removed the optional property `detail` from the response with the `422` status
  - added the new optional `header` request parameter `Idempotency-Key`
  - added `#/components/schemas/HTTPValidationError, #/components/schemas/inference-embedding_ErrorResponse` to the response body `anyOf` list for the response status `422`
  - …4 more

[Change history](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/changes/ai/assistants/tests/test-suites/:suite_name/runs/post.md)

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api-2/revisions/88481995b4ca?raw)
