---
title: "Trigger a test group run"
method: POST
path: "/v1/groups/{groupId}/runs"
tags: ["groups"]
---

# Trigger a test group run

`POST /v1/groups/{groupId}/runs`

Trigger all runnable tests in a group using API-key authentication. Returns the batch ID plus `queuedRunIds` (runs accepted onto the worker) and `cancelledRunIds` (runs the server immediately cancelled, e.g. duplicates or quota cancellations). `status` is `queued` when at least one run is queued and `cancelled` when every run was rejected.

## Path parameters

- `groupId` string, uuid, required

## Headers

- `Authorization` string, required

## Request body

- object
  - `platform` 'web' | 'ios' | 'android' — Run platform for the batch. Mobile tests default to ios when omitted, so Android runs must set platform: android — including when the mobile app is selected by appId or bundleId.
  - `deviceModel` 'iphone' | 'ipad' — Mobile device variant within the run platform (iOS: iphone | ipad). Omit for the platform default phone-sized device; explicitly requesting the default (e.g. iphone) is equivalent to omitting it.
  - `projectEnvironmentId` string, uuid
  - `targetUrl` string, uri
  - `environment` 'production' | 'staging' | 'preview' | 'custom'
  - `mobile` V1GroupsGroupIdRunsPostRequestBodyContentApplicationJsonSchemaMobile
    - `appId` string, uuid
    - `bundleId` string
    - `artifactUrl` string, uri
    - `artifactFilename` string
    - `buildId` string
  - `commitSha` string
  - `prNumber` integer

## Response `202`

Group run queued successfully

- GroupsTriggerATestGroupRunResponse202
  - `status` 'queued' | 'cancelled', required
  - `groupId` string, uuid, required
  - `batchId` string, uuid, required
  - `runIds` string[], required
  - `queuedRunIds` string[], required
  - `cancelledRunIds` string[], required
  - `count` integer, required
  - `metadata` V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadata
    - `github` V1GroupsGroupIdRunsPostResponsesContentApplicationJsonSchemaMetadataGithub, required
      - `configured` boolean, required
      - `checkRunCreated` boolean, required
      - `commentTargetResolved` boolean, required
      - `status` 'not_configured' | 'check_create_failed' | 'pr_not_found'

## Other responses

- `400` — Bad Request - Invalid input parameters
- `401` — Unauthorized - Invalid or missing API key
- `404` — Group not found
- `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/d0302b4c4e0e/schema)
