> ## Documentation Index
> Fetch the complete documentation index at: https://www.voiceflow.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# QA overview

> Replay scripted conversations against your agent and assert what it does, so a change that breaks a scenario fails loudly instead of silently.

A test is a conversation you have written down, together with the assertions
that must hold when it runs. Execute it after a change and a broken scenario
fails immediately, instead of surfacing later in production.

## Endpoints

### Test

| Endpoint | Description |
| - | - |
| GET [List tests](https://www.voiceflow.com/docs/api-reference/test/list-tests.md) | List all tests by project ID. |
| POST [Create test](https://www.voiceflow.com/docs/api-reference/test/create-test.md) | Create a new test. |
| POST [Create many tests](https://www.voiceflow.com/docs/api-reference/test/create-many-tests.md) | Create multiple new tests. |
| GET [Get test](https://www.voiceflow.com/docs/api-reference/test/get-test.md) | Get a test by ID. |
| PATCH [Update test](https://www.voiceflow.com/docs/api-reference/test/update-test.md) | Update a test by ID. |
| DELETE [Delete test](https://www.voiceflow.com/docs/api-reference/test/delete-test.md) | Delete a test by ID. |

### Test turn

| Endpoint | Description |
| - | - |
| GET [List turns](https://www.voiceflow.com/docs/api-reference/test-turn/list-turns.md) | List all turns by test ID. |
| POST [Create turn](https://www.voiceflow.com/docs/api-reference/test-turn/create-turn.md) | Create a new turn. |
| POST [Create many turns](https://www.voiceflow.com/docs/api-reference/test-turn/create-many-turns.md) | Create multiple new turns. |
| GET [Get turn](https://www.voiceflow.com/docs/api-reference/test-turn/get-turn.md) | Get a turn by ID. |
| PATCH [Update turn](https://www.voiceflow.com/docs/api-reference/test-turn/update-turn.md) | Update a turn by ID. |
| DELETE [Delete turn](https://www.voiceflow.com/docs/api-reference/test-turn/delete-turn.md) | Delete a turn by ID. |

### Test check

| Endpoint | Description |
| - | - |
| GET [List checks](https://www.voiceflow.com/docs/api-reference/test-check/list-checks.md) | List all checks by turn ID. |
| POST [Create check](https://www.voiceflow.com/docs/api-reference/test-check/create-check.md) | Create a new check. |
| POST [Create many checks](https://www.voiceflow.com/docs/api-reference/test-check/create-many-checks.md) | Create multiple new checks. |
| GET [Get check](https://www.voiceflow.com/docs/api-reference/test-check/get-check.md) | Get a check by ID. |
| PATCH [Update check](https://www.voiceflow.com/docs/api-reference/test-check/update-check.md) | Update a check by ID. |
| DELETE [Delete check](https://www.voiceflow.com/docs/api-reference/test-check/delete-check.md) | Delete a check by ID. |

### Test run

| Endpoint | Description |
| - | - |
| POST [Search runs](https://www.voiceflow.com/docs/api-reference/test-run/search-runs.md) | Search runs by project ID. |
| POST [Create run](https://www.voiceflow.com/docs/api-reference/test-run/create-run.md) | Create a new run. |
| POST [Create many runs](https://www.voiceflow.com/docs/api-reference/test-run/create-many-runs.md) | Create multiple new runs. |
| GET [Get run](https://www.voiceflow.com/docs/api-reference/test-run/get-run.md) | Get a run by ID. |

## Four resources, one idea

| Resource | What it is |
| - | - |
| **Test** | the scenario: a named conversation you want to keep working |
| **Test turn** | one exchange inside it, in order |
| **Test check** | an assertion about what the agent should do |
| **Test run** | one execution of a test, and its result |

A test is the container. Turns are the script. Checks are what must be true.
Runs are what happened each time you executed it.

Turns and checks are managed independently of the test, so you can add a check
to an existing scenario without rewriting the conversation, or extend the
conversation without touching the assertions.

## Creating a suite

Each resource has a `batch` endpoint, which is what you want when defining a
suite from a file rather than clicking through it:

```bash theme={null}
curl -X POST "https://realtime-api.voiceflow.com/v1/stable/test/batch?projectID=$VF_PROJECT_ID&environmentAlias=main" \
  -H "Authorization: Bearer $VF_PAT" \
  -H "Content-Type: application/json" \
  -d '{ "data": [ ... ] }'
```

## Reading results

Runs are searchable rather than merely listable, so the useful question is not
"what ran" but "what failed, and since when". Search runs, then fetch the ones
you care about.

## How this differs from evaluations

These are different jobs and it is worth keeping them apart.
QA replays conversations *you* wrote and fails when the agent stops behaving as
decided. [Insights](https://www.voiceflow.com/docs/api-reference/sections/insights.md) scores conversations *real
users* had, and tells you how it is going. One protects against regressions; the
other finds things you did not think to test.

## Where to go next

Run tests against a cloned [environment](https://www.voiceflow.com/docs/api-reference/sections/publishing.md)
before merging into `main`, so a failing check blocks the change rather than
reporting on it afterwards.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.