---
title: "List tests"
method: GET
path: "/v1/tests"
tags: ["tests"]
---

# List tests

`GET /v1/tests`

List tests for a project, optionally scoped to a test group. Use `cursor` for pagination; the response includes `nextCursor` when more pages exist.

## Query parameters

- `projectId` string, required
- `groupId` string, uuid
- `limit` string
- `cursor` string

## Headers

- `Authorization` string, required

## Response `200`

List of tests

- TestsListTestsResponse200
  - `projectUrl` string, uri, nullable, required
  - `projectName` string, required
  - `tests` TestDefinition[], required
    - `id` string, uuid, required
    - `title` string, required
    - `description` string, nullable
    - `enabled` boolean
    - `platform` 'web' | 'mobile'
    - `steps` TestStep[], required
      - union
        - TestStep0
          - `title` string, required
          - `type` 'act', required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
        - TestStep1
          - `title` string, required
          - `type` 'assert', required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
        - TestStep2
          - `title` string, required
          - `type` 'login', required
          - `credentialId` string, uuid
          - `temporaryEmail` boolean
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
        - TestStep3
          - `title` string, required
          - `type` 'files', required
          - `fileIds` string[], required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
        - TestStep4
          - `title` string
          - `type` 'screenshot', required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
        - TestStep5
          - `title` string
          - `type` 'javascript', required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
          - `code` string, required — JavaScript run in the browser page. Runs as an awaited function body; passes if it completes without throwing (returns nothing or { success: true }) and fails if it returns { success: false, reason } or throws. Web tests only.
        - TestStep6
          - `title` string
          - `type` 'microphone', required
          - `disabled` boolean — When true, the step stays saved on the test but is skipped during runs.
          - `fileId` string, required — Project file ID (UUID) of the audio file (e.g. MP3) to play through the microphone. Empty string marks an unconfigured draft that must have a file attached before the test runs.
          - `mode` 'blocking' | 'loop', required — blocking: the agent waits for playback to finish before continuing. loop: playback repeats until the run ends and the agent continues immediately. Web tests only.
    - `projectId` string, uuid
    - `projectUrl` string, uri, nullable
    - `projectName` string
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `nextCursor` string, nullable, required

## Other responses

- `400` — Bad Request - Invalid input parameters
- `401` — Unauthorized - Invalid or missing API key
- `404` — Not Found - Resource does not exist or is not accessible
- `429` — Too Many Requests - Usage limit exceeded
- `500` — Internal Server Error
- `504` — Gateway Timeout - Test execution exceeded time limit

---

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