API reference / Tests and incidents
Get a test run
One test run: its parts, each with what it checked and the QA tester's report as Troopy checked it (each result with its proof, each finding with its steps), and the addresses of its pictures.
/api/v1/test-runs/{id}Other ways to call it
troopy tests run-statustroopy_get_test_runPath parameters
id*stringA 24-character id
Response
200 · application/jsondata*object21 properties
id*stringA 24-character id
kind*enum<string>ticket: a change. review: Troopy's code review of a change. screens: the blind critic's look at the pictures of a change. cases: tests of the library. explore: a look for problems. first_users: the QA tester tries it as 5 kinds of new user. check: whether the place loads
ticketreviewscreenscasesexplorefirst_userscheck
status*enum<string>queuedrunningdonecanceled
waitingFor*enum<string> | nullIn the queue: a QA tester to hire, one of the workspace's 2 places, the computer, a release that reaches Production, or a Claude plan that is out of usage
qaslotcomputerdeployplan
verdict*enum<string> | nullWhen done: fail when a part failed, blocked when a part couldn't be checked, pass only when each part passed
passfailblocked
error*string | nullWhy it ended early: its place didn't load or is gone, or its ticket moved on
environment*object | nullThe place, as it was when the run started: a place to test, or a preview of a ticket's change. Null when it reads only the code of the change
4 properties
id*string | nullNull for the preview of a ticket's change, which is no place of the workspace
name*stringkind*enum<string>productionstagingpreview
url*stringnote*string | nullWhat Troopy noted on the way, like a preview that didn't load
ticket*object | nullThe engineering ticket whose change it tests: its key, its pull request, and the commit tested
5 properties
id*stringA 24-character id
key*stringrepo*stringpr*integersha*stringprogress*objectIts parts: one for each test, or one for a ticket or a look
2 properties
done*integertotal*integertrigger*enum<string> | nullschedule: its place's schedule started it. release: a release started it. null: a person, the API or a ticket
schedulerelease
release*object | nullA check after a release: the tickets that the release took live
1 properties
tickets*array<object>2 properties
id*stringA 24-character id
key*stringreplayed*integerParts that replayed a test's recording whole, with no AI
replaying*booleanTroopy replays a part now, with no AI
createdBy*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringcreatedAt*stringISO 8601 date and time
finishedAt*string | nullparts*array<object>11 properties
title*stringtest*string | nullThe test of the library that it ran
how*enum<string> | nullqa: the QA tester tested it. replay: Troopy replayed the test's recording with no AI. takeover: a replay stopped, and the QA tester went on
qareplaytakeover
from*string | nullA takeover: the step where the replay stopped
stop*string | nullA takeover: why the replay stopped
provider*string | nullA code review of a council: the AI provider of the plan that reads this part
reviewer*string | nullA code review of a council: the agent that reads this part, as Grok or Claude Opus 5.5
status*enum<string>queuedrunningdone
verdict*enum<string> | nullpassfailblocked
checks*array<object>2 properties
id*stringtext*stringreport*object | null6 properties
summary*stringTroopy's line on what was checked
note*stringThe QA tester's own words
results*array<object>5 properties
id*stringstatus*enum<string>passfailskip
observed*stringpictures*array<string>proof*enum<string> | nullHow a pass was proved: the browser saw the words, a picture, or only a read of the code
seenpicturecode
findings*array<object>13 properties
id*stringA problem of the run: f1, f2 and so on across its parts
severity*enum<string>blockermajorminornit
source*enum<string>reviewtestexplore
title*stringexpected*stringobserved*stringsteps*array<string>check*string | nullpath*string | nullline*integer | nullpictures*array<string>status*enum<string>openticketdismissed
ticket*object | nullThe bug ticket that a person made of it
2 properties
id*stringA 24-character id
key*stringby*string | nullat*string | nullpictures*array<object>What the QA tester's browser saw. Never sent to a model
5 properties
n*integerurl*stringServed to callers that read tests
part*integerThe part that took it, by its place in parts; -1 for the first look at the place
step*string | nullby*enum<string>checkscreenshot
ranked*array<object> | nullA run of first users: its problems as one list, the worst first. Problems that read alike are one
2 properties
finding*stringA problem of the run: f1, f2 and so on across its parts
users*array<string>Who hit it
picturesGone*booleanTroopy deleted its pictures. A run that passed keeps them 7 days