Testerarmy Test Runs API
The Test Runs API from Testerarmy — 5 operation(s) for test runs.
The Test Runs API from Testerarmy — 5 operation(s) for test runs.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/testerarmy-test-runs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: TestArmy Groups Test Runs API
version: 1.0.0
description: AI-powered browser automation API for QA testing. Automate web testing workflows using natural language prompts.
servers:
- url: https://tester.army/api
description: Production API server
tags:
- name: Test Runs
paths:
/v1/runs:
get:
summary: List test runs
description: List test runs for the authenticated team with optional project/status filtering and cursor pagination.
tags:
- Test Runs
security:
- bearerAuth: []
parameters:
- schema:
type: string
pattern: ^(?:[1-9]|[1-9][0-9]|100)$
description: Max results per page (default 20, max 100)
required: false
description: Max results per page (default 20, max 100)
name: limit
in: query
- schema:
type: string
enum:
- queued
- running
- completed
- failed
- cancelled
description: Filter by status
required: false
description: Filter by status
name: status
in: query
- schema:
type: string
format: uuid
description: Filter by project ID
required: false
description: Filter by project ID
name: projectId
in: query
- schema:
type: string
format: uuid
description: Filter by test ID
required: false
description: Filter by test ID
name: testId
in: query
- schema:
type: string
description: Cursor for pagination
required: false
description: Cursor for pagination
name: cursor
in: query
responses:
'200':
description: List of runs
content:
application/json:
schema:
$ref: '#/components/schemas/RunListResponse'
'400':
description: Bad Request - Invalid input parameters
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'401':
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'429':
description: Too Many Requests - Usage limit exceeded
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'504':
description: Gateway Timeout - Test execution exceeded time limit
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
/v1/runs/{id}:
get:
summary: Get test run status
description: Retrieve the current status and result of a test run. Poll this endpoint to check for completion.
tags:
- Test Runs
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
description: Test run ID
required: true
description: Test run ID
name: id
in: path
responses:
'200':
description: Run details
content:
application/json:
schema:
$ref: '#/components/schemas/RunResponse'
'400':
description: Bad Request - Invalid input parameters
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'401':
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'404':
description: Run not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'429':
description: Too Many Requests - Usage limit exceeded
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'504':
description: Gateway Timeout - Test execution exceeded time limit
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
/v1/runs/{id}/cancel:
post:
summary: Cancel a queued or running run
description: Cancel a queued or running test run.
tags:
- Test Runs
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
description: Test run ID
required: true
description: Test run ID
name: id
in: path
responses:
'200':
description: Run cancelled
content:
application/json:
schema:
type: object
properties:
id:
type: string
format: uuid
status:
type: string
enum:
- cancelled
required:
- id
- status
'400':
description: Bad Request - Invalid input parameters
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'401':
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'409':
description: Conflict - Run is already terminal or cannot be cancelled
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'429':
description: Too Many Requests - Usage limit exceeded
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'504':
description: Gateway Timeout - Test execution exceeded time limit
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
/v1/batches/{batchId}/cancel:
post:
summary: Cancel a queued or running batch
description: Cancel all queued or running runs in a prior group-run batch. Finished runs are left unchanged, making the endpoint idempotent when the batch has already completed.
tags:
- Test Runs
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
description: Batch ID
required: true
description: Batch ID
name: batchId
in: path
responses:
'200':
description: Batch cancellation summary
content:
application/json:
schema:
type: object
properties:
batchId:
type: string
format: uuid
cancelled:
type: integer
minimum: 0
alreadyFinished:
type: integer
minimum: 0
cancelledRunIds:
type: array
items:
type: string
format: uuid
alreadyFinishedRunIds:
type: array
items:
type: string
format: uuid
required:
- batchId
- cancelled
- alreadyFinished
- cancelledRunIds
- alreadyFinishedRunIds
'400':
description: Bad Request - Invalid input parameters
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'401':
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'404':
description: Batch not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'409':
description: Conflict - Some runs could not be cancelled
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
batchId:
type: string
format: uuid
cancelled:
type: integer
minimum: 0
alreadyFinished:
type: integer
minimum: 0
cancelledRunIds:
type: array
items:
type: string
format: uuid
alreadyFinishedRunIds:
type: array
items:
type: string
format: uuid
failedRunIds:
type: array
items:
type: string
format: uuid
required:
- error
- message
- batchId
- cancelled
- alreadyFinished
- cancelledRunIds
- alreadyFinishedRunIds
- failedRunIds
'429':
description: Too Many Requests - Usage limit exceeded
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'504':
description: Gateway Timeout - Test execution exceeded time limit
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
/v1/batches/{batchId}/rerun:
post:
summary: Re-run a batch
description: Create a new group-run batch from the runnable tests in a prior batch. Deleted, disabled, or malformed tests are skipped and returned as `skippedTestIds`.
tags:
- Test Runs
security:
- bearerAuth: []
parameters:
- schema:
type: string
format: uuid
description: Source batch ID
required: true
description: Source batch ID
name: batchId
in: path
responses:
'202':
description: Batch re-run queued successfully
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum:
- queued
- cancelled
groupId:
type: string
format: uuid
batchId:
type: string
format: uuid
sourceBatchId:
type: string
format: uuid
runIds:
type: array
items:
type: string
format: uuid
queuedRunIds:
type: array
items:
type: string
format: uuid
cancelledRunIds:
type: array
items:
type: string
format: uuid
skippedTestIds:
type: array
items:
type: string
format: uuid
count:
type: integer
required:
- status
- groupId
- batchId
- sourceBatchId
- runIds
- queuedRunIds
- cancelledRunIds
- skippedTestIds
- count
'400':
description: Bad Request - Invalid input parameters
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'401':
description: Unauthorized - Invalid or missing API key
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'404':
description: Batch not found
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'409':
description: Conflict - Batch cannot be re-run
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'429':
description: Too Many Requests - Usage limit exceeded
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
'504':
description: Gateway Timeout - Test execution exceeded time limit
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error code or type
message:
type: string
description: Human-readable error message
required:
- error
- message
components:
schemas:
TestOutput:
type: object
properties:
featureName:
type: string
description: Name of the feature being tested
result:
type: string
enum:
- PASS
- FAILED
description: Test result - PASS if no issues found, FAILED if any issues were reported
description:
type: string
description: Short summary of what was tested and the final result; include a compact grouped issue summary only when the user explicitly asks for one
issues:
type: array
items:
$ref: '#/components/schemas/Issue'
default: []
description: Issues reported during the session via the report_issue tool
screenshots:
type: array
items:
type: string
description: Array of screenshot URLs captured during testing
steps:
type: array
items:
$ref: '#/components/schemas/TestOutputStep'
description: Per-step summaries with timing information
required:
- featureName
- result
- description
- screenshots
Issue:
type: object
properties:
type:
type: string
enum:
- issue
- warning
default: issue
description: issue = confirmed bug, warning = non-blocking observation
name:
type: string
description: Short name of the issue (e.g. 'Login form rejects valid email')
description:
type: string
description: What was tested, what happened, and what was expected
url:
type: string
format: uri
description: URL where the issue happened
severity:
type: integer
minimum: 1
maximum: 5
description: Issue severity from 1 (minor) to 5 (critical)
reproductionSteps:
type: array
items:
type: string
description: Short reproduction steps in execution order
expectedBehavior:
type: string
description: What should have happened
actualBehavior:
type: string
description: What actually happened
screenshotUrl:
type: string
description: Screenshot URL showing the issue
tMs:
type: integer
description: Milliseconds elapsed since the recording reference time when the issue was reported
required:
- name
- description
- url
TestOutputStep:
type: object
properties:
stepIndex:
type: integer
title:
type: string
type:
type: string
enum:
- act
- assert
- login
- files
- screenshot
- javascript
status:
type: string
enum:
- passed
- failed
summary:
type: string
error:
type:
- string
- 'null'
errorCode:
type: string
enum:
- AUTH_CREDENTIAL_UNAVAILABLE
- AUTH_CREDENTIAL_INVALID
- AUTH_BASIC_REQUIRED
- VERCEL_BYPASS_REQUIRED
- MOBILE_RELEASE_BUILD_REQUIRED
- VIEWPORT_RESIZE_UNSUPPORTED
- STEP_TOOL_LIMIT_EXHAUSTED
- STEP_DEADLINE_EXHAUSTED
- STEP_NO_CONCLUSION
startedAtMs:
type: integer
description: Milliseconds elapsed since recording reference when the step started
completedAtMs:
type: integer
description: Milliseconds elapsed since recording reference when the step completed
reusableActionTrace:
$ref: '#/components/schemas/ReusableActionTrace'
required:
- stepIndex
- title
- status
RunResponse:
type: object
properties:
id:
type: string
format: uuid
description: Unique run identifier
type:
type: string
enum:
- ci
- test
description: Run type
status:
type: string
enum:
- queued
- running
- completed
- failed
- cancelled
description: Current run status
platform:
type:
- string
- 'null'
enum:
- web
- ios
- android
- null
description: Target platform
deviceModel:
type:
- string
- 'null'
enum:
- iphone
- ipad
- null
description: Non-default mobile device variant within the run platform (e.g. ipad on iOS). Null means the platform default phone-sized device; explicitly requested defaults are stored as null.
source:
type:
- string
- 'null'
enum:
- api
- github_action
- github_app
- scheduled
- webhook
- structured_test
- null
description: Run source
projectId:
type:
- string
- 'null'
format: uuid
description: Linked project ID
input:
type: object
additionalProperties: {}
description: Original request input
output:
anyOf:
- $ref: '#/components/schemas/TestOutput'
- $ref: '#/components/schemas/PlannerSkippedOutput'
- {}
description: Run output when completed or skipped
testPlan:
type:
- object
- 'null'
properties:
instructions:
type: string
description: Natural language instructions for the QA agent
focusAreas:
type: array
items:
type: string
description: Focus areas derived from changed files
complexity:
type: string
enum:
- simple
- moderate
- complex
description: Estimated test complexity (affects timeout)
changeType:
type: string
enum:
- frontend
- backend
- mixed
- infra
description: 'Classify this PR: frontend = UI/component changes, backend = API/DB/service changes with no visible UI effect, mixed = both, infra = CI/config/docs only'
steps:
type: array
items:
oneOf:
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 500
description: Concise description of what to do or verify
type:
type: string
enum:
- act
description: Perform an action
required:
- title
- type
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 500
description: Concise description of what to do or verify
type:
type: string
enum:
- assert
description: Verify a condition
required:
- title
- type
- type: object
properties:
title:
type: string
minLength: 1
maxLength: 500
description: Concise description of the login step
type:
type: string
enum:
- login
description: Authenticate using a credential
credentialId:
type: string
description: ID of the credential to use
temporaryEmail:
type: boolean
description: Set to true to create a temporary email inbox at run time
required:
- title
- type
- type: object
properties:
title:
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/testerarmy/refs/heads/main/openapi/testerarmy-test-runs-api-openapi.yml