Every run in the key’s organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.
Format (services/api-keys.ts): the literal prefix tst_live_
followed by 24 random bytes rendered as 32 base64url characters.
Only the SHA-256 hash is stored server-side. The shape check that
routes a token down the API-key path rather than the Clerk JWT path
requires the tst_live_ prefix and a total length of at least 25
characters.
Keys are minted in the dashboard at /settings/api-keys, in any
workspace, personal included. The same header also accepts a Clerk
session JWT, which is how the web app authenticates, but the JWT path
is out of scope for this document.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Testorim","description":"Documentation for Testorim: plain-English browser QA tests that run in a real browser.","colors":{"primary":"#059669","light":"#10b981","dark":"#047857"},"logo":{"light":"https://mintcdn.com/fulgic/ZOzvtyg298rAaunK/logo/wordmark.png?fit=max\u0026auto=format\u0026n=ZOzvtyg298rAaunK\u0026q=85\u0026s=c49b84c50b62f2ccafcc2660391619e7","dark":"https://mintcdn.com/fulgic/ZOzvtyg298rAaunK/logo/wordmark-dark.png?fit=max\u0026auto=format\u0026n=ZOzvtyg298rAaunK\u0026q=85\u0026s=d74e70ecf0f91872956e46385b5665e1","href":"https://testorim.com"},"favicon":"https://mintcdn.com/fulgic/MOzJBi6Mn9MbYgbw/favicon.png?fit=max\u0026auto=format\u0026n=MOzJBi6Mn9MbYgbw\u0026q=85\u0026s=783a1618974414f0ee72cf911352ab64","appearance":{"default":"system"},"navbar":{"links":[{"href":"https://status.testorim.com","label":"Status"},{"href":"mailto:info@fulgic.com","label":"Support"}],"primary":{"type":"button","label":"Open Testorim","href":"https://app.testorim.com"}},"footer":{"links":[{"header":"Product","items":[{"label":"Testorim","href":"https://testorim.com"},{"label":"Pricing","href":"https://testorim.com/pricing"},{"label":"Open the app","href":"https://app.testorim.com"},{"label":"Status","href":"https://status.testorim.com"}]},{"header":"Documentation","items":[{"label":"Quickstart","href":"https://docs.testorim.com/getting-started/quickstart"},{"label":"Plans and limits","href":"https://docs.testorim.com/resources/plans-and-limits"},{"label":"API reference","href":"https://docs.testorim.com/api-reference/introduction"},{"label":"CLI","href":"https://docs.testorim.com/developers/cli"}]},{"header":"Legal","items":[{"label":"Terms","href":"https://testorim.com/terms"},{"label":"Privacy","href":"https://testorim.com/privacy"}]}]},"search":{"prompt":"Search the Testorim docs"},"icons":{"library":"lucide"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Testorim app","icon":"monitor","href":"https://app.testorim.com"},{"anchor":"Website","icon":"globe","href":"https://testorim.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fulgic","hasAudioNarration":false,"actualSubdomain":"fulgic","customDomains":["docs.testorim.com"],"gitSource":{"type":"github","owner":"sallar-ba","repo":"testorim-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6abb3a2d9ae82eb23a513b7a","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Documentation","count":29},{"language":"default","tag":"API reference","count":19},{"language":"default","tag":"Endpoints","count":17},{"language":"default","tag":"Runs","count":7},{"language":"default","tag":"Developers","count":6},{"language":"default","tag":"Developer documentation","count":6},{"language":"default","tag":"Getting started","count":4},{"language":"default","tag":"Integrations","count":4},{"language":"default","tag":"Resources","count":4},{"language":"default","tag":"Test creation","count":4}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@fulgic.com"}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/runs/list-runs-across-the-organization","slug":"/api-reference/runs/list-runs-across-the-organization","pageMetadata":{"title":"List runs across the organization","description":"Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (`stepsJson`, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/runs","href":"/api-reference/runs/list-runs-across-the-organization","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Every run in the key’s organization, newest first, in the slim summary shape. Heavy JSONB columns (\", _jsx(_components.code, {\n children: \"stepsJson\"\n }), \", network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"List runs across the organization","description":"Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (`stepsJson`, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/runs","href":"/api-reference/runs/list-runs-across-the-organization","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Runs"],"operationId":"listRuns","summary":"List runs across the organization","description":"Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (`stepsJson`, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.","security":["bdb6ece2-0a93-4b45-bfb6-f62fbcbaa460"],"parameters":["dd469dfb-7523-4b0d-a7a3-1504ad7e69c7"],"responses":{"200":"1d7d3702-afeb-4e5b-8258-43abb732d26a","401":"53536664-1f1d-46f8-b3be-4d19ffdfa7c3","429":"b79e287e-4e3a-4292-9c63-c4d1ede46a6e"},"method":"get","type":"path","servers":["d4db3c55-f4bc-46f2-9432-5f123e333c25","7ea51c90-14cf-4c02-9601-e57633a5e03f"],"path":"/api/runs","baseUrlOptions":["https://app.testorim.com","http://localhost:3001"],"title":"List runs across the organization","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"dd469dfb-7523-4b0d-a7a3-1504ad7e69c7":{"name":"limit","in":"query","required":false,"description":"Maximum rows. Default 100, clamped to 1..500. Parsed with `parseInt`; a non-numeric value silently falls back to 100 rather than erroring.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100,"isRequired":false,"description":"Maximum rows. Default 100, clamped to 1..500. Parsed with `parseInt`; a non-numeric value silently falls back to 100 rather than erroring.","uniqueKey":"","typeLabel":"integer"}}},"responses":{"1d7d3702-afeb-4e5b-8258-43abb732d26a":{"description":"OK","content":{"application/json":{"schema":{"type":"object","required":["runs"],"properties":{"runs":{"type":"array","items":{"type":"object","title":"RunSummary","description":"The slim run shape used by both list endpoints (`SUMMARY_COLUMNS` plus `augmentSummary`). Heavy JSONB columns are omitted on purpose: they can reach megabytes per run.","required":["id","projectId","instruction","status","passedCount","failedCount","skippedCount","totalDurationMs","createdAt","hasVideo","hasTrace"],"properties":{"id":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"runs.items.[INDEX].id","typeLabel":"string\u003cuuid>"},"projectId":{"type":"string","format":"uuid","isRequired":true,"uniqueKey":"runs.items.[INDEX].projectId","typeLabel":"string\u003cuuid>"},"instruction":{"type":"string","description":"The prompt for an ad-hoc run, or `Procedure: \u003cname>` for a replay. Truncated to 2000 characters at write time.","isRequired":true,"uniqueKey":"runs.items.[INDEX].instruction","typeLabel":"string"},"status":{"type":"string","title":"RunStatus","enum":["pending","running","completed","failed","cancelled"],"description":"Lifecycle state. `completed`, `failed` and `cancelled` are terminal; `pending` and `running` mean keep polling. A run waiting in line for a browser is `pending`. Note `completed` means the run finished, not that it passed. Read `overallStatus` for that.","isRequired":true,"uniqueKey":"runs.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"passedCount":{"type":"integer","isRequired":true,"uniqueKey":"runs.items.[INDEX].passedCount","typeLabel":"integer"},"failedCount":{"type":"integer","isRequired":true,"uniqueKey":"runs.items.[INDEX].failedCount","typeLabel":"integer"},"skippedCount":{"type":"integer","isRequired":true,"uniqueKey":"runs.items.[INDEX].skippedCount","typeLabel":"integer"},"totalDurationMs":{"type":"integer","isRequired":true,"uniqueKey":"runs.items.[INDEX].totalDurationMs","typeLabel":"integer"},"hasVideo":{"type":"boolean","description":"Presence flag; the summary shape does not presign the video.","isRequired":true,"uniqueKey":"runs.items.[INDEX].hasVideo","typeLabel":"boolean"},"hasTrace":{"type":"boolean","description":"Presence flag; the summary shape does not presign the trace.","isRequired":true,"uniqueKey":"runs.items.[INDEX].hasTrace","typeLabel":"boolean"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"runs.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"procedureId":{"oneOf":[{"type":"string","format":"uuid","description":"Null for ad-hoc runs; also nulled if the procedure is later deleted.","uniqueKey":"runs.items.[INDEX].procedureId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"Null for ad-hoc runs; also nulled if the procedure is later deleted.","uniqueKey":"runs.items.[INDEX].procedureId.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].procedureId","typeLabel":"string\u003cuuid> | null"},"userExpectation":{"oneOf":[{"type":"string","title":"UserExpectation","description":"Null on legacy rows.","default":"pass","enum":["pass","fail","unknown"],"uniqueKey":"runs.items.[INDEX].userExpectation.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Null on legacy rows.","uniqueKey":"runs.items.[INDEX].userExpectation.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].userExpectation","typeLabel":"enum\u003cstring> | null"},"overallStatus":{"oneOf":[{"type":"string","title":"OverallStatus","description":"Null until the run finalizes.","enum":["passed","failed","needs_review"],"uniqueKey":"runs.items.[INDEX].overallStatus.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Null until the run finalizes.","uniqueKey":"runs.items.[INDEX].overallStatus.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].overallStatus","typeLabel":"enum\u003cstring> | null"},"initialUrl":{"oneOf":[{"type":"string","uniqueKey":"runs.items.[INDEX].initialUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"runs.items.[INDEX].initialUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].initialUrl","typeLabel":"string | null"},"finalUrl":{"oneOf":[{"type":"string","uniqueKey":"runs.items.[INDEX].finalUrl.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"runs.items.[INDEX].finalUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].finalUrl","typeLabel":"string | null"},"reportMarkdown":{"oneOf":[{"type":"string","description":"The generated Markdown report. Included even in the summary shape, so a list response can be large. Null until finalization.","uniqueKey":"runs.items.[INDEX].reportMarkdown.oneOf.0","typeLabel":"string"},{"type":"null","description":"The generated Markdown report. Included even in the summary shape, so a list response can be large. Null until finalization.","uniqueKey":"runs.items.[INDEX].reportMarkdown.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].reportMarkdown","typeLabel":"string | null"},"confidenceScore":{"oneOf":[{"type":"integer","description":"0-100 confidence heuristic. Frequently null.","uniqueKey":"runs.items.[INDEX].confidenceScore.oneOf.0","typeLabel":"integer"},{"type":"null","description":"0-100 confidence heuristic. Frequently null.","uniqueKey":"runs.items.[INDEX].confidenceScore.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].confidenceScore","typeLabel":"integer | null"},"finalScreenshotR2Key":{"oneOf":[{"type":"string","description":"Raw R2 object key. Prefer `finalScreenshotUrl`.","uniqueKey":"runs.items.[INDEX].finalScreenshotR2Key.oneOf.0","typeLabel":"string"},{"type":"null","description":"Raw R2 object key. Prefer `finalScreenshotUrl`.","uniqueKey":"runs.items.[INDEX].finalScreenshotR2Key.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].finalScreenshotR2Key","typeLabel":"string | null"},"finalScreenshotUrl":{"oneOf":[{"type":"string","description":"Presigned URL, valid for one hour. Null when no screenshot was captured.","uniqueKey":"runs.items.[INDEX].finalScreenshotUrl.oneOf.0","typeLabel":"string"},{"type":"null","description":"Presigned URL, valid for one hour. Null when no screenshot was captured.","uniqueKey":"runs.items.[INDEX].finalScreenshotUrl.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].finalScreenshotUrl","typeLabel":"string | null"},"videoR2Key":{"oneOf":[{"type":"string","uniqueKey":"runs.items.[INDEX].videoR2Key.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"runs.items.[INDEX].videoR2Key.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].videoR2Key","typeLabel":"string | null"},"traceR2Key":{"oneOf":[{"type":"string","uniqueKey":"runs.items.[INDEX].traceR2Key.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"runs.items.[INDEX].traceR2Key.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].traceR2Key","typeLabel":"string | null"},"videoUrl":{"type":"null","description":"Always literally `null` in list responses, because presigning video for a whole page of runs is too expensive. Fetch the single run to get a real URL.","uniqueKey":"runs.items.[INDEX].videoUrl","typeLabel":"null"},"traceUrl":{"type":"null","description":"Always literally `null` in list responses. See `videoUrl`.","uniqueKey":"runs.items.[INDEX].traceUrl","typeLabel":"null"},"viewportPreset":{"oneOf":[{"type":"string","description":"`desktop` (1280x720) or `mobile` (390x844). Null on runs that predate multi-viewport; treat as desktop. Stored as free text, not a DB enum.","uniqueKey":"runs.items.[INDEX].viewportPreset.oneOf.0","typeLabel":"string"},{"type":"null","description":"`desktop` (1280x720) or `mobile` (390x844). Null on runs that predate multi-viewport; treat as desktop. Stored as free text, not a DB enum.","uniqueKey":"runs.items.[INDEX].viewportPreset.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].viewportPreset","typeLabel":"string | null"},"batchId":{"oneOf":[{"type":"string","format":"uuid","uniqueKey":"runs.items.[INDEX].batchId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","uniqueKey":"runs.items.[INDEX].batchId.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].batchId","typeLabel":"string\u003cuuid> | null"},"browser":{"oneOf":[{"type":"string","description":"`chromium`, `firefox` or `webkit`. Null on legacy runs; treat as chromium. Stored as free text, not a DB enum.","uniqueKey":"runs.items.[INDEX].browser.oneOf.0","typeLabel":"string"},{"type":"null","description":"`chromium`, `firefox` or `webkit`. Null on legacy runs; treat as chromium. Stored as free text, not a DB enum.","uniqueKey":"runs.items.[INDEX].browser.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].browser","typeLabel":"string | null"},"attemptIndex":{"oneOf":[{"type":"integer","description":"1-indexed leg within a flaky-detection batch; null otherwise.","uniqueKey":"runs.items.[INDEX].attemptIndex.oneOf.0","typeLabel":"integer"},{"type":"null","description":"1-indexed leg within a flaky-detection batch; null otherwise.","uniqueKey":"runs.items.[INDEX].attemptIndex.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].attemptIndex","typeLabel":"integer | null"},"parentRunId":{"oneOf":[{"type":"string","format":"uuid","description":"For a fuzz variant, the normal run that anchored the batch.","uniqueKey":"runs.items.[INDEX].parentRunId.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"For a fuzz variant, the normal run that anchored the batch.","uniqueKey":"runs.items.[INDEX].parentRunId.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].parentRunId","typeLabel":"string\u003cuuid> | null"},"runKind":{"oneOf":[{"type":"string","description":"`api` (triggered through this API), `scheduled`, `fuzz_control`, `fuzz_variant` or `role_probe_session` today; null for a run from the app. Free text in the DB, so new kinds can appear.","uniqueKey":"runs.items.[INDEX].runKind.oneOf.0","typeLabel":"string"},{"type":"null","description":"`api` (triggered through this API), `scheduled`, `fuzz_control`, `fuzz_variant` or `role_probe_session` today; null for a run from the app. Free text in the DB, so new kinds can appear.","uniqueKey":"runs.items.[INDEX].runKind.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].runKind","typeLabel":"string | null"},"startedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"runs.items.[INDEX].startedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"runs.items.[INDEX].startedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].startedAt","typeLabel":"string\u003cdate-time> | null"},"completedAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"runs.items.[INDEX].completedAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"runs.items.[INDEX].completedAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"runs.items.[INDEX].completedAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"runs.items.[INDEX]","typeLabel":"RunSummary · object"},"isRequired":true,"uniqueKey":"runs","typeLabel":"RunSummary · object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"runs":[{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","projectId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","instruction":"\u003cstring>","status":"pending","passedCount":123,"failedCount":123,"skippedCount":123,"totalDurationMs":123,"hasVideo":true,"hasTrace":true,"createdAt":"2023-11-07T05:31:56Z","procedureId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","userExpectation":"pass","overallStatus":"passed","initialUrl":"\u003cstring>","finalUrl":"\u003cstring>","reportMarkdown":"\u003cstring>","confidenceScore":123,"finalScreenshotR2Key":"\u003cstring>","finalScreenshotUrl":"\u003cstring>","videoR2Key":"\u003cstring>","traceR2Key":"\u003cstring>","videoUrl":null,"traceUrl":null,"viewportPreset":"\u003cstring>","batchId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","browser":"\u003cstring>","attemptIndex":123,"parentRunId":"3c90c3cc-0d44-4b50-8888-8dd25736052a","runKind":"\u003cstring>","startedAt":"2023-11-07T05:31:56Z","completedAt":"2023-11-07T05:31:56Z"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"53536664-1f1d-46f8-b3be-4d19ffdfa7c3":{"description":"No `Authorization: Bearer …` header, or the credential did not\nverify. Distinct messages the code can return:\n\n* `Missing or invalid Authorization header`\n* `Invalid or revoked API key`\n* `API key owner not found`\n* `API key's organization is no longer accessible`. The key's user\n has been removed from the org it is bound to\n* `Invalid token` / `Token missing sub claim`. Clerk JWT path\n\nRepeated failures burn the `auth:strict` bucket (5 per 15 minutes\nper IP) and then return `429` instead.\n","content":{"application/json":{"schema":{"type":"object","title":"Error","description":"The universal error envelope. Every failing handler in this surface responds with a JSON object carrying a human-readable `error` string; some add extra fields (see the other error schemas).","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable message. Not a stable machine-readable code.","isRequired":true,"uniqueKey":"error","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"Error · object"},"example":{"error":"Invalid or revoked API key"},"examples":{"Example":{"title":"Example","value":{"error":"Invalid or revoked API key"}}},"exampleType":"examples"}},"exampleType":"examples"},"b79e287e-4e3a-4292-9c63-c4d1ede46a6e":{"description":"Throttled. Every `/api/*` route sits behind `api:global` (600 / minute per IP); some routes add a tighter per-user limiter.","headers":{"Retry-After":{"description":"Seconds until the window frees up.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","title":"RateLimitError","description":"Emitted by the rate-limit middleware alongside a `Retry-After` header.","required":["error"],"properties":{"error":{"type":"string","description":"The limiter's reason, e.g. `Rate limit exceeded. Try again in 42s.`","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"retryAfter":{"oneOf":[{"type":"integer","description":"Seconds until the window frees. Mirrors `Retry-After`. May be absent/null when the limiter did not report a reset time, in which case the header defaults to 60.","uniqueKey":"retryAfter.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Seconds until the window frees. Mirrors `Retry-After`. May be absent/null when the limiter did not report a reset time, in which case the header defaults to 60.","uniqueKey":"retryAfter.oneOf.1","typeLabel":"null"}],"uniqueKey":"retryAfter","typeLabel":"integer | null"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"RateLimitError · object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","retryAfter":123}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"bdb6ece2-0a93-4b45-bfb6-f62fbcbaa460":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"tst_live_\u003c32 url-safe base64 chars>","description":"Send `Authorization: Bearer tst_live_…`.\n\nFormat (`services/api-keys.ts`): the literal prefix `tst_live_`\nfollowed by 24 random bytes rendered as 32 base64url characters.\nOnly the SHA-256 hash is stored server-side. The shape check that\nroutes a token down the API-key path rather than the Clerk JWT path\nrequires the `tst_live_` prefix and a total length of at least 25\ncharacters.\n\nKeys are minted in the dashboard at `/settings/api-keys`, in any\nworkspace, personal included. The same header also accepts a Clerk\nsession JWT, which is how the web app authenticates, but the JWT path\nis out of scope for this document.\n","scopes":[]}}},"servers":{"d4db3c55-f4bc-46f2-9432-5f123e333c25":{"url":"https://app.testorim.com","description":"Production. Single-origin deployment: Caddy on one GCP VM serves the SPA at `/` and reverse-proxies `/api/*` and `/ws` to the backend. This is also the default API base URL used by the Testorim CLI."},"7ea51c90-14cf-4c02-9601-e57633a5e03f":{"url":"http://localhost:3001","description":"A locally running Testorim backend, for self-hosted or development use. The default port is 3001."}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"tst_live_\u003c32 url-safe base64 chars>","description":"Send `Authorization: Bearer tst_live_…`.\n\nFormat (`services/api-keys.ts`): the literal prefix `tst_live_`\nfollowed by 24 random bytes rendered as 32 base64url characters.\nOnly the SHA-256 hash is stored server-side. The shape check that\nroutes a token down the API-key path rather than the Clerk JWT path\nrequires the `tst_live_` prefix and a total length of at least 25\ncharacters.\n\nKeys are minted in the dashboard at `/settings/api-keys`, in any\nworkspace, personal included. The same header also accepts a Clerk\nsession JWT, which is how the web app authenticates, but the JWT path\nis out of scope for this document.\n","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Send `Authorization: Bearer tst_live_…`.\n\nFormat (`services/api-keys.ts`): the literal prefix `tst_live_`\nfollowed by 24 random bytes rendered as 32 base64url characters.\nOnly the SHA-256 hash is stored server-side. The shape check that\nroutes a token down the API-key path rather than the Clerk JWT path\nrequires the `tst_live_` prefix and a total length of at least 25\ncharacters.\n\nKeys are minted in the dashboard at `/settings/api-keys`, in any\nworkspace, personal included. The same header also accepts a Clerk\nsession JWT, which is how the web app authenticates, but the JWT path\nis out of scope for this document.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"fulgic","siteName":"Testorim","title":"List runs across the organization - Testorim","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-25T12:52:51.661Z","originalFileLocation":"api-reference/runs/list-runs-across-the-organization.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Every run in the key\u0026#x27;s organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Testorim\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List runs across the organization - Testorim\">\u003cmeta data-mint-head property=\"og:description\" content=\"Every run in the key\u0026#x27;s organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Testorim\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fulgic.mintlify.site/_mintlify/api/og/v2?division=Runs\u0026amp;title=List+runs+across+the+organization\u0026amp;description=Every+run+in+the+key%27s+organization%2C+newest+first%2C+in+the+slim+summary+shape.+Heavy+JSONB+columns+%28%60stepsJson%60%2C+network%2Fconsole+events%2C+screenshot+refs%29+are+omi\u0026amp;theme=21e417d08933df01149b8e86\u0026amp;signature=54e1ef7f416bef00db3506dbb7e1e49650803256e8aa0527ccdc0c2e6f10925d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List runs across the organization - Testorim\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Every run in the key\u0026#x27;s organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fulgic.mintlify.site/_mintlify/api/og/v2?division=Runs\u0026amp;title=List+runs+across+the+organization\u0026amp;description=Every+run+in+the+key%27s+organization%2C+newest+first%2C+in+the+slim+summary+shape.+Heavy+JSONB+columns+%28%60stepsJson%60%2C+network%2Fconsole+events%2C+screenshot+refs%29+are+omi\u0026amp;theme=21e417d08933df01149b8e86\u0026amp;signature=54e1ef7f416bef00db3506dbb7e1e49650803256e8aa0527ccdc0c2e6f10925d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/fulgic/HlhB1s7g4HMZVSXy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Testorim\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#059669\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/runs/list-runs-across-the-organization.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.testorim.com/#organization\",\"name\":\"Testorim\",\"url\":\"https://docs.testorim.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fulgic/ZOzvtyg298rAaunK/logo/wordmark.png?fit=max\u0026auto=format\u0026n=ZOzvtyg298rAaunK\u0026q=85\u0026s=c49b84c50b62f2ccafcc2660391619e7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.testorim.com#website\",\"name\":\"Testorim\",\"url\":\"https://docs.testorim.com\",\"publisher\":{\"@id\":\"https://docs.testorim.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization#webpage\",\"url\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization\",\"name\":\"List runs across the organization\",\"description\":\"Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\",\"dateModified\":\"2026-09-25T12:52:51.661Z\",\"isPartOf\":{\"@id\":\"https://docs.testorim.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.testorim.com/api-reference/runs/start-a-test-run-headlessly\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Runs\",\"item\":\"https://docs.testorim.com/api-reference/runs/start-a-test-run-headlessly\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"List runs across the organization\",\"item\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization#apireference\",\"headline\":\"List runs across the organization\",\"name\":\"List runs across the organization\",\"description\":\"Every run in the key's organization, newest first, in the slim summary shape. Heavy JSONB columns (stepsJson, network/console events, screenshot refs) are omitted. Fetch a single run for those. Runs of deleted projects are left out.\",\"url\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization\",\"mainEntityOfPage\":{\"@id\":\"https://docs.testorim.com/api-reference/runs/list-runs-across-the-organization#webpage\"},\"dateModified\":\"2026-09-25T12:52:51.661Z\",\"publisher\":{\"@id\":\"https://docs.testorim.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.testorim.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Testorim\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Testorim","nav":{"global":{"anchors":[{"anchor":"Testorim app","icon":"monitor","href":"https://app.testorim.com"},{"anchor":"Website","icon":"globe","href":"https://testorim.com"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/developers/platform-overview"}]},{"tab":"API reference","groups":[{"group":"Overview","pages":[{"title":"API reference","href":"/api-reference/introduction"},{"title":"Errors","href":"/api-reference/errors"}]},{"group":"Endpoints","pages":[{"group":"Runs","pages":[{"title":"Start a test run headlessly","description":"The primary CI endpoint. Starts a run **in the background** and\nreturns immediately with a run id. The HTTP request does not block\non test completion, because typical runs take 30-120 s (and may be\nallowed up to 120 minutes) while CI providers time out sooner. Poll\n`GET /api/runs/{runId}` until `status` is terminal.\n\n### Two mutually exclusive modes\n\nThe body must carry **exactly one** of `procedureId` or\n`description`; the Zod schema has one `.refine` that rejects neither\nand another that rejects both.\n\n* **Replay mode** (`procedureId`) re-executes a saved procedure's\n stored steps. No LLM planning call. The procedure is looked up\n scoped to `projectId`, so a procedure from another project 404s.\n A replay keeps the procedure's own intent (`fail` when a saved\n click, type or assert step expects failure); `expectation` in the\n body is ignored for it.\n* **Ad-hoc mode** (`description`) plans steps from the\n prompt, then executes them. The description is truncated to the\n first 2000 characters when it is stored as the run's `instruction`\n (the schema itself allows up to 4000).\n\n### Base URL resolution\n\nThe browser opens, in priority order: the named environment's base\nURL (`environmentId`) → `baseUrl` (this request) → the project's\ndefault environment, if it has one → `project.baseUrl`. The default\nenvironment is skipped when `baseUrl` is given, so its headers never\nreach an overridden host. The resolved URL is then run through the\nSSRF guard; private, loopback, link-local and metadata hosts are\nrejected with `400`.\n\nA procedure holding a sealed password is replayed only on the\nproject's own host or one of its environments' hosts. A `baseUrl` on\nany other host is refused with `400` before the browser starts.\n\n### Duration\n\n`maxDurationMinutes` overrides the procedure's saved cap. When\nomitted the run inherits `procedure.maxDurationMinutes`, and failing\nthat the platform default of 10 minutes. The effective value is\nalways clamped to 5..120.\n\n### Refusals\n\nThe plan's concurrent-run cap is checked first: when every slot is\nin use the answer is `429` with `code: \"concurrency_limit\"`, and no\nrun is created. Otherwise a pre-allocated `runs` row is created\nbefore setup. If setup then fails (quota, unsafe URL, secret host),\nthat row is closed with a reason rather than left dangling.\n\n### After `202`\n\nWhen every test browser in the service is busy, the run waits in\nline. If no browser frees up within 3 minutes of reaching the front,\nor 10 minutes in line, the run ends with `status: \"cancelled\"` and\nthe reason in `reportMarkdown`. The same happens if the plan's cap is\nreached by another run meanwhile. Runs created here carry\n`runKind: \"api\"`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/runs/trigger","href":"/api-reference/runs/start-a-test-run-headlessly"},{"title":"List runs across the organization","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/runs","href":"/api-reference/runs/list-runs-across-the-organization"},{"title":"List in-flight runs, grouped by batch","description":"Runs currently `pending` or `running` in the key's organization,\ngrouped by `batchId` so a fan-out (fuzz batch, flaky 3× detection,\nrole probe, desktop+mobile pair) reads as one entry with progress\ncounters. Standalone runs come back as single-item groups.\n\nRuns created more than 30 minutes ago are filtered out, because at\nthat age they are assumed to be orphans the stale-runs sweeper has not\nreaped yet.\nAt most 100 active rows and 500 batch siblings are considered.\n\nIntended for polling. Subject to the `api:read` limiter\n(120 / minute per user).\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/runs/active","href":"/api-reference/runs/list-in-flight-runs-grouped-by-batch"},{"title":"Get one run with all artifacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/runs/{id}","href":"/api-reference/runs/get-one-run-with-all-artifacts"},{"title":"Cancel a single run","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/runs/{id}/cancel","href":"/api-reference/runs/cancel-a-single-run"},{"title":"Cancel every run in a batch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/runs/batch/{batchId}/cancel","href":"/api-reference/runs/cancel-every-run-in-a-batch"},{"title":"List runs for one project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/projects/{projectId}/runs","href":"/api-reference/runs/list-runs-for-one-project"}]},{"group":"Procedures","pages":[{"title":"List a project's saved procedures","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/projects/{projectId}/procedures","href":"/api-reference/procedures/list-a-projects-saved-procedures"},{"title":"Get one procedure by id","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/procedures/{id}","href":"/api-reference/procedures/get-one-procedure-by-id"},{"title":"Export a procedure as a standalone Playwright spec","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/procedures/{id}/export","href":"/api-reference/procedures/export-a-procedure-as-a-standalone-playwright-spec"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/projects","href":"/api-reference/projects/list-projects"},{"title":"Create (or re-use) a project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/projects","href":"/api-reference/projects/create-or-re-use-a-project"},{"title":"Get one project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/projects/{id}","href":"/api-reference/projects/get-one-project"}]},{"group":"API keys","pages":[{"title":"List active API keys","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/keys","href":"/api-reference/api-keys/list-active-api-keys"},{"title":"Mint a new API key (browser session only)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/keys","href":"/api-reference/api-keys/mint-a-new-api-key-browser-session-only"},{"title":"Revoke an API key","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /api/keys/{id}","href":"/api-reference/api-keys/revoke-an-api-key"}]},{"group":"Identity","pages":[{"title":"Identify the presented credential","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/me","href":"/api-reference/identity/identify-the-presented-credential"}]}]}]}]},"basePath":"","title":"List runs across the organization - Testorim","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}