The automation API lets CI pipelines create test runs and executions and report results
programmatically. All endpoints live under /api/v1 and return JSON. The full, interactive
endpoint reference — with request/response schemas and a Try It console — is the
API Reference.
Base URL
Section titled “Base URL”Every project-scoped path is …/workspace/{workspace_id}/project/{project_id}/….
Authentication
Section titled “Authentication”Send a robot token as a bearer header on every request:
Create a project-scoped token in the app under Access Tokens. The token carries a role
per project; each endpoint states the permission it needs (e.g. create_execution,
execute_test, view_execution). A token can only act on the workspace/project it is
scoped to.
The run-to-results flow
Section titled “The run-to-results flow”-
Create a test run (
POST …/create_testrun) or an execution under a release (POST …/releases/{release_id}/create_execution). Seed it fromtestcase_codes,testsuite_ids, and/orrequirement_codes. You get back anexecution_id. -
(Optional) Add more test cases to the run (
POST …/testruns/{execution_id}/add_testcases). -
Submit results (
POST …/executions/{execution_id}/update_results) — single or bulk, by humantestcase_code. -
Read back the run (
GET …/testruns/{execution_id}) forstatus_counts, or list per-case results (GET …/executions/{execution_id}/results).
Full schemas and a Try-It console for each of these are in the API Reference.
Browsing test cases
Section titled “Browsing test cases”Discover and inspect test cases by their human testcase_code:
GET …/testcases— list the project’s test cases (filterable, see below).GET …/testcase/{testcase_code}— a single test case (steps, preconditions, requirements, attachments).GET …/testcase/{testcase_code}/defects— its linked defects.GET …/testcase/{testcase_code}/comments— comments on the test case.GET …/testcase/{testcase_code}/execution_history— how it has been executed across runs and releases.
The list endpoints are paginated like every other list endpoint.
GET …/testcases also accepts filters (combined with AND):
| Filter | Meaning |
|---|---|
folder | Folder name the test case lives in. |
label | Label name; repeat or comma-separate for multiple — a case must carry all given labels. |
requirement_code | A linked requirement’s code (e.g. REQ-12). |
priority · severity · automation_status | Match the test case’s corresponding field. |
Discovery & reference data
Section titled “Discovery & reference data”Browse the project’s other entities — including the ids you need to seed runs and executions:
GET …/releases·GET …/releases/{release_id}— releases (use arelease_idwithcreate_execution).GET …/testsuites·GET …/testsuites/{suite_id}— suites (usesuite_ids withcreate_testrun); the detail returns the suite’s membertestcase_codes.GET …/requirements·GET …/requirement/{requirement_code}·…/requirement/{requirement_code}/testcases— requirements (filter the list bytype/label) and the test cases linked to one.GET …/defects·GET …/defect/{defect_code}— project defects (filter the list bystatus/severity).GET …/labels·GET …/folders·GET …/custom-fields— reference data: the label/folder names usable in the testcases filters, and custom-field definitions to interpretcustom_fields.
Releases and suites are addressed by their internal id (release_id / suite_id); requirements and
defects by their human code. All lists are paginated.
Pagination
Section titled “Pagination”Every list endpoint accepts limit (1–200, default 50) and offset (default 0) and wraps results
in a uniform envelope:
Result status values
Section titled “Result status values”A test case result is always one of:
Not Executed · Passed · Failed · Blocked · Skipped
Errors
Section titled “Errors”Failures return a uniform envelope. Validation failures (422) include a details array.
| Status | Meaning |
|---|---|
400 | A referenced id is unknown or not part of the run (unknown_testcase, testcase_not_in_run, …). |
401 | Missing or invalid token. |
403 | The token’s role lacks the endpoint’s permission. |
404 | The run, execution, or release doesn’t exist in this project. |
422 | The request body failed validation; see details. |