Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.
Request body for triggering a test run. Supports GitHub and GitLab trigger fields, application overrides, and optional parameters for config overrides (merged into the blueprint).
Per-run application overrides. On environment, optional customHeaders and basicAuth persist auth or protection-bypass rules. Omit either field to leave stored rules unchanged; pass an empty list to clear them.
Optional run-time parameter overrides merged into the blueprint (after test plan defaults). Use configs to replace full config payloads by config short id (map keys are strings such as cfg_... or human-readable slugs); use configsByEnvironment for environment-specific overrides (outer key is environment UUID).
Set to true to run every test in this run without the agent cache, so the agent works out each step fresh instead of reusing cached outputs. Applies to this run only. Omitted or false keeps each test's own Agent Cache setting.
Target a specific project by its prefixed short ID (proj-slug_shortId or proj_shortId), as returned by the projects API. Required for organization-scoped API keys; project-scoped keys may only pass their own project's short ID.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"QA.tech Docs","colors":{"primary":"#4F46E5","light":"#F672AB","dark":"#4F46E5"},"logo":{"light":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/logo.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=2f0e3745a8079e74e66e0a904232888f","dark":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/dark.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=8c39f071bcebaa8ec3c9b73c4e34faac","href":"https://docs.qa.tech"},"favicon":"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/favicon.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=b34d80ecef9cd5e082545308e406134f","navbar":{"links":[{"href":"https://qa.tech/contact","label":"Support"}],"primary":{"type":"button","label":"Get Started","href":"https://qa.tech/demo"}},"footer":{"socials":{"x":"https://x.com/getqatech","github":"https://github.com/qAdottech","linkedin":"https://www.linkedin.com/company/qa-tech-ai"}},"seo":{"metatags":{"canonical":"https://docs.qa.tech"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://qa.tech/blog/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"qatech","hasAudioNarration":false,"actualSubdomain":"qatech","customDomains":["docs.qa.tech"],"gitSource":{"type":"github","owner":"qadottech","repo":"qatech","deployBranch":"live","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4aa5c4ebd7542833e2f90","collectionId":"1c56eecb-0cc4-4a0b-bcb3-ea934cd94f69","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4aa5c4ebd7542833e2f90"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae8435ba0f23322a3d76ff7","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"API and CLI","count":75},{"language":"default","tag":"Endpoints","count":59},{"language":"default","tag":"Build Tests","count":30},{"language":"default","tag":"Get Started","count":26},{"language":"default","tag":"Regression Testing","count":26},{"language":"default","tag":"Agents","count":15},{"language":"default","tag":"Integrations","count":15},{"language":"default","tag":"PR Testing","count":13},{"language":"default","tag":"Runs","count":12},{"language":"default","tag":"Choose your CI","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableAskAiSearchBar":false},"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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"a[href='/integrations/mcp']>svg{-webkit-mask-image:url(/images/mcp-logo.svg)!important;mask-image:url(/images/mcp-logo.svg)!important}"}],"page":{"pagePath":"api-reference/runs/start-test-run","slug":"/api-reference/runs/start-test-run","pageMetadata":{"title":"Start test run","description":"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/run","href":"/api-reference/runs/start-test-run","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\"\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":"Start test run","description":"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/run","href":"/api-reference/runs/start-test-run","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"RunProject","summary":"Start test run","description":"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.","parameters":[],"responses":{"200":"051f542d-e62e-4fe5-a6ed-6ec6d0588982"},"tags":["Runs"],"requestBody":"04c41ee8-f90f-4669-9a80-2e0bc93cf258","method":"post","type":"path","servers":["22ff5f3f-72bd-4a65-bfa7-4a82b065f66f"],"security":["c6c66bf2-9edf-420c-a536-cedec9b6c459"],"path":"/v1/run","baseUrlOptions":["https://api.qa.tech"],"title":"Start test run","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"trigger":{"type":"string","enum":["API","GITHUB","GITLAB"],"uniqueKey":"trigger","typeLabel":"enum\u003cstring>"},"actor":{"type":"string","description":"Username that triggered the CI job. Example: `octocat`.","uniqueKey":"actor","typeLabel":"string"},"branch":{"type":"string","description":"Branch the run was triggered from. Example: `main` or `refs/heads/main`.","uniqueKey":"branch","typeLabel":"string"},"commitHash":{"type":"string","description":"Full commit SHA the run was triggered for. Used to link the run back to the commit.","uniqueKey":"commitHash","typeLabel":"string"},"commitMessage":{"type":"string","description":"Commit message subject for the triggering commit.","uniqueKey":"commitMessage","typeLabel":"string"},"repository":{"type":"string","description":"Repository the run was triggered from, as `owner/name`. Example: `QAdottech/qatech`.","uniqueKey":"repository","typeLabel":"string"},"repositoryUrl":{"type":"string","format":"uri","pattern":"^https?:\\x2f\\x2f","description":"Base repository URL for GitLab, including the origin and project path. Supports self-hosted GitLab instances.","uniqueKey":"repositoryUrl","typeLabel":"string\u003curi>"},"testPlanShortId":{"type":"string","pattern":"^pln(-.+_.+|_.+)$","uniqueKey":"testPlanShortId","typeLabel":"string"},"testCaseIds":{"type":"array","items":{"type":"string","uniqueKey":"testCaseIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"testCaseIds","typeLabel":"string[]"},"applications":{"type":"array","items":{"type":"object","required":["applicationShortId"],"properties":{"applicationShortId":{"type":"string","pattern":"^app(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"applications.items.[INDEX].applicationShortId","typeLabel":"string"},"devicePresetShortId":{"type":"string","pattern":"^preset(-.+_.+|_.+)$","uniqueKey":"applications.items.[INDEX].devicePresetShortId","typeLabel":"string"},"environment":{"oneOf":[{"type":"object","description":"Environment to use for this application. Optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment.","required":["url"],"properties":{"url":{"type":"string","format":"uri","pattern":"^https?:\\x2f\\x2f","description":"Base URL of the environment. Must use http or https.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.url","typeLabel":"string\u003curi>"},"name":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.name","typeLabel":"string"},"customHeaders":{"type":"array","items":{"type":"object","required":["domains","headers"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these headers. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"description":"Header name to value. Applied by the platform on matching requests; generated test code cannot read the values.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX].headers","typeLabel":"object"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the headers to attach to matching requests. Used for auth, deployment-protection bypass, and similar platform access. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX]","typeLabel":"object"},"description":"Custom headers for this environment. Persisted on create and on reuse. Omit to leave stored headers unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.customHeaders","typeLabel":"object[]"},"basicAuth":{"type":"array","items":{"type":"object","required":["domains","username","password"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these credentials. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth.items.[INDEX].domains","typeLabel":"string[]"},"username":{"type":"string","pattern":"^[^:]+$","description":"Basic auth username. May not contain `:`.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","description":"Basic auth password. Applied by the platform on matching requests; generated test code cannot read it.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth.items.[INDEX].password","typeLabel":"string"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the HTTP Basic Auth credentials to send to matching hosts. Browser, crawler, and API tests send `Authorization: Basic` to matching hosts only. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth.items.[INDEX]","typeLabel":"object"},"description":"Basic auth rules for this environment. Persisted on create and on reuse. Omit to leave stored rules unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.0.basicAuth","typeLabel":"object[]"}},"uniqueKey":"applications.items.[INDEX].environment.oneOf.0","typeLabel":"object"},{"type":"object","description":"Environment to use for this application. Optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment.","required":["shortId"],"properties":{"shortId":{"type":"string","pattern":"^env(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.shortId","typeLabel":"string"},"customHeaders":{"type":"array","items":{"type":"object","required":["domains","headers"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these headers. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"description":"Header name to value. Applied by the platform on matching requests; generated test code cannot read the values.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX].headers","typeLabel":"object"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the headers to attach to matching requests. Used for auth, deployment-protection bypass, and similar platform access. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX]","typeLabel":"object"},"description":"Replace custom headers on the existing environment. Omit to leave stored headers unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.customHeaders","typeLabel":"object[]"},"basicAuth":{"type":"array","items":{"type":"object","required":["domains","username","password"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these credentials. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth.items.[INDEX].domains","typeLabel":"string[]"},"username":{"type":"string","pattern":"^[^:]+$","description":"Basic auth username. May not contain `:`.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","description":"Basic auth password. Applied by the platform on matching requests; generated test code cannot read it.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth.items.[INDEX].password","typeLabel":"string"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the HTTP Basic Auth credentials to send to matching hosts. Browser, crawler, and API tests send `Authorization: Basic` to matching hosts only. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth.items.[INDEX]","typeLabel":"object"},"description":"Replace basic auth rules on the existing environment. Omit to leave stored rules unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.1.basicAuth","typeLabel":"object[]"}},"uniqueKey":"applications.items.[INDEX].environment.oneOf.1","typeLabel":"object"},{"type":"object","description":"Environment to use for this application. Optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment.","required":["applicationBuildShortId"],"properties":{"applicationBuildShortId":{"type":"string","pattern":"^build(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.applicationBuildShortId","typeLabel":"string"},"otherApplicationBuildShortIds":{"type":"array","items":{"type":"string","pattern":"^build(-.+_.+|_.+)$","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.otherApplicationBuildShortIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.otherApplicationBuildShortIds","typeLabel":"string[]"},"customHeaders":{"type":"array","items":{"type":"object","required":["domains","headers"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these headers. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX].headers.additionalProperties","typeLabel":"string"},"description":"Header name to value. Applied by the platform on matching requests; generated test code cannot read the values.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX].headers","typeLabel":"object"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the headers to attach to matching requests. Used for auth, deployment-protection bypass, and similar platform access. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX]","typeLabel":"object"},"description":"Custom headers for the preview environment created or reused for this build. Omit to leave stored headers unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.customHeaders","typeLabel":"object[]"},"basicAuth":{"type":"array","items":{"type":"object","required":["domains","username","password"],"properties":{"domains":{"type":"array","items":{"type":"string","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth.items.[INDEX].domains.items.[INDEX]","typeLabel":"string"},"description":"Host patterns that receive these credentials. `*.preview.example.com` matches the apex and any subdomain.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth.items.[INDEX].domains","typeLabel":"string[]"},"username":{"type":"string","pattern":"^[^:]+$","description":"Basic auth username. May not contain `:`.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","description":"Basic auth password. Applied by the platform on matching requests; generated test code cannot read it.","isRequired":true,"uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth.items.[INDEX].password","typeLabel":"string"}},"description":"Host patterns (`*.preview.example.com` or an exact host) and the HTTP Basic Auth credentials to send to matching hosts. Browser, crawler, and API tests send `Authorization: Basic` to matching hosts only. When provided on an environment override, the rules are persisted on the environment.","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth.items.[INDEX]","typeLabel":"object"},"description":"Basic auth rules for the preview environment created or reused for this build. Omit to leave stored rules unchanged; pass an empty list to clear them.","uniqueKey":"applications.items.[INDEX].environment.oneOf.2.basicAuth","typeLabel":"object[]"}},"uniqueKey":"applications.items.[INDEX].environment.oneOf.2","typeLabel":"object"}],"uniqueKey":"applications.items.[INDEX].environment","typeLabel":"object"}},"description":"Override application, environment, or device preset for a specific run","uniqueKey":"applications.items.[INDEX]","typeLabel":"object"},"description":"Per-run application overrides. On environment, optional customHeaders and basicAuth persist auth or protection-bypass rules. Omit either field to leave stored rules unchanged; pass an empty list to clear them.","uniqueKey":"applications","typeLabel":"object[]"},"notifications":{"type":"array","items":{"oneOf":[{"type":"object","description":"Per-run notification override. Use type none to suppress all notifications for the run, including project defaults.","required":["type"],"properties":{"type":{"type":"string","enum":["slack"],"isRequired":true,"uniqueKey":"notifications.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"channel":{"type":"string","description":"Slack channel ID (e.g. `C0478ABCDEF`). Required unless `enabled` is `false`. The QA.tech Slack bot must have access to the channel.","uniqueKey":"notifications.items.[INDEX].oneOf.0.channel","typeLabel":"string"},"notifyOn":{"type":"string","enum":["failure","always"],"description":"`always` (default) sends run-started and final-result messages; `failure` sends only the final summary when the result is not PASSED.","uniqueKey":"notifications.items.[INDEX].oneOf.0.notifyOn","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","description":"Set to `false` to suppress Slack for this run, including project defaults.","uniqueKey":"notifications.items.[INDEX].oneOf.0.enabled","typeLabel":"boolean"}},"uniqueKey":"notifications.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"Per-run notification override. Use type none to suppress all notifications for the run, including project defaults.","required":["type","recipients"],"properties":{"type":{"type":"string","enum":["email"],"isRequired":true,"uniqueKey":"notifications.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"recipients":{"type":"array","items":{"type":"string","uniqueKey":"notifications.items.[INDEX].oneOf.1.recipients.items.[INDEX]","typeLabel":"string"},"description":"Email addresses to notify for this run. Replaces test-plan email recipients when provided.","isRequired":true,"uniqueKey":"notifications.items.[INDEX].oneOf.1.recipients","typeLabel":"string[]"},"notifyOn":{"type":"string","enum":["failure","always"],"description":"`always` (default) sends on every completion; `failure` sends only when the result is not PASSED.","uniqueKey":"notifications.items.[INDEX].oneOf.1.notifyOn","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","description":"Set to `false` to suppress email for this run. Defaults to `true` when `recipients` is non-empty.","uniqueKey":"notifications.items.[INDEX].oneOf.1.enabled","typeLabel":"boolean"}},"uniqueKey":"notifications.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"Per-run notification override. Use type none to suppress all notifications for the run, including project defaults.","required":["type"],"properties":{"type":{"type":"string","enum":["teams"],"isRequired":true,"uniqueKey":"notifications.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"notifyOn":{"type":"string","enum":["failure","always"],"description":"`always` (default) or `failure`. Uses the project Microsoft Teams integration webhook.","uniqueKey":"notifications.items.[INDEX].oneOf.2.notifyOn","typeLabel":"enum\u003cstring>"},"enabled":{"type":"boolean","description":"Set to `false` to suppress Teams for this run, including project defaults. Defaults to `true`.","uniqueKey":"notifications.items.[INDEX].oneOf.2.enabled","typeLabel":"boolean"}},"uniqueKey":"notifications.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"Per-run notification override. Use type none to suppress all notifications for the run, including project defaults.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"notifications.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"notifications.items.[INDEX].oneOf.3","typeLabel":"object"}],"uniqueKey":"notifications.items.[INDEX]","typeLabel":"object"},"uniqueKey":"notifications","typeLabel":"object[]"},"parameters":{"type":"object","properties":{"configs":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.configs.additionalProperties","typeLabel":"any"},"description":"Config identifier → full config object (replaces stored config data when present).","uniqueKey":"parameters.configs","typeLabel":"object"},"configsByEnvironment":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"parameters.configsByEnvironment.additionalProperties.additionalProperties","typeLabel":"any"},"uniqueKey":"parameters.configsByEnvironment.additionalProperties","typeLabel":"object"},"description":"Environment id → config identifier → full config object.","uniqueKey":"parameters.configsByEnvironment","typeLabel":"object"}},"description":"Optional run-time parameter overrides merged into the blueprint (after test plan defaults). Use `configs` to replace full config payloads by config short id (map keys are strings such as `cfg_...` or human-readable slugs); use `configsByEnvironment` for environment-specific overrides (outer key is environment UUID).","uniqueKey":"parameters","typeLabel":"object"},"skipAgentCache":{"type":"boolean","description":"Set to `true` to run every test in this run without the agent cache, so the agent works out each step fresh instead of reusing cached outputs. Applies to this run only. Omitted or `false` keeps each test's own Agent Cache setting.","uniqueKey":"skipAgentCache","typeLabel":"boolean"},"projectShortId":{"type":"string","description":"Target a specific project by its prefixed short ID (proj-slug_shortId or proj_shortId), as returned by the projects API. Required for organization-scoped API keys; project-scoped keys may only pass their own project's short ID.","pattern":"^proj(-.+_.+|_.+)$","uniqueKey":"projectShortId","typeLabel":"string"}},"description":"Request body for triggering a test run. Supports GitHub and GitLab trigger fields, application overrides, and optional `parameters` for config overrides (merged into the blueprint).","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"actor":"\u003cstring>","branch":"\u003cstring>","commitHash":"\u003cstring>","commitMessage":"\u003cstring>","repository":"\u003cstring>","repositoryUrl":"\u003cstring>","testPlanShortId":"\u003cstring>","testCaseIds":["\u003cstring>"],"applications":[{"applicationShortId":"\u003cstring>","devicePresetShortId":"\u003cstring>","environment":{"url":"\u003cstring>","name":"\u003cstring>","customHeaders":[{"domains":["\u003cstring>"],"headers":{}}],"basicAuth":[{"domains":["\u003cstring>"],"username":"\u003cstring>","password":"\u003cstring>"}]}}],"notifications":[{"type":"slack","channel":"\u003cstring>","enabled":true}],"parameters":{"configs":{},"configsByEnvironment":{}},"skipAgentCache":true,"projectShortId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"051f542d-e62e-4fe5-a6ed-6ec6d0588982":{"description":"The request has succeeded.","content":{"application/json":{"schema":{"type":"object","required":["success","run"],"properties":{"success":{"type":"boolean","isRequired":true,"uniqueKey":"success","typeLabel":"boolean"},"run":{"type":"object","required":["id","shortId","url","testCount","testPlan"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"run.id","typeLabel":"string"},"shortId":{"type":"string","isRequired":true,"uniqueKey":"run.shortId","typeLabel":"string"},"url":{"type":"string","isRequired":true,"uniqueKey":"run.url","typeLabel":"string"},"testCount":{"type":"integer","format":"int32","isRequired":true,"uniqueKey":"run.testCount","typeLabel":"integer\u003cint32>"},"testPlan":{"type":"object","required":["name","shortId"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"run.testPlan.name","typeLabel":"string"},"shortId":{"type":"string","pattern":"^pln(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"run.testPlan.shortId","typeLabel":"string"}},"isRequired":true,"uniqueKey":"run.testPlan","typeLabel":"object"}},"isRequired":true,"uniqueKey":"run","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"run":{"id":"\u003cstring>","shortId":"\u003cstring>","url":"\u003cstring>","testCount":123,"testPlan":{"name":"\u003cstring>","shortId":"\u003cstring>"}}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c6c66bf2-9edf-420c-a536-cedec9b6c459":{"BearerAuth":{"type":"http","scheme":"Bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"22ff5f3f-72bd-4a65-bfa7-4a82b065f66f":{"url":"https://api.qa.tech","description":"Production","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"Bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/api.json"},"subdomain":"qatech","siteName":"QA.tech Docs","title":"Start test run - QA.tech Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T14:32:06.398Z","originalFileLocation":"api-reference/runs/start-test-run.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=\"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\">\u003cmeta data-mint-head name=\"application-name\" content=\"QA.tech Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Start test run - QA.tech Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"QA.tech Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.qa.tech/api-reference/runs/start-test-run\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://qatech.mintlify.app/_mintlify/api/og/v2?division=Runs\u0026amp;title=Start+test+run\u0026amp;description=Execute+a+run+for+a+given+project.+Supports+API%2C+GITHUB%2C+or+GITLAB+trigger.+For+version-control+triggers%2C+provide+actor%2C+branch%2C+commitHash%2C+commitMessage%2C+and+\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=e4b25fc79db0cfc9b8222ce7396ce52afd26a190701d274e72833bb06a60d181\">\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=\"Start test run - QA.tech Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qatech.mintlify.app/_mintlify/api/og/v2?division=Runs\u0026amp;title=Start+test+run\u0026amp;description=Execute+a+run+for+a+given+project.+Supports+API%2C+GITHUB%2C+or+GITLAB+trigger.+For+version-control+triggers%2C+provide+actor%2C+branch%2C+commitHash%2C+commitMessage%2C+and+\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=e4b25fc79db0cfc9b8222ce7396ce52afd26a190701d274e72833bb06a60d181\">\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/qatech/iMlZaRlMvi7xyIQO/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"QA.tech Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#4F46E5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.qa.tech/api-reference/runs/start-test-run\">\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/start-test-run.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.qa.tech/#organization\",\"name\":\"QA.tech Docs\",\"url\":\"https://docs.qa.tech\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/qatech/tn7srSYA67gRWgfI/logo/logo.svg?fit=max\u0026auto=format\u0026n=tn7srSYA67gRWgfI\u0026q=85\u0026s=2f0e3745a8079e74e66e0a904232888f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.qa.tech#website\",\"name\":\"QA.tech Docs\",\"url\":\"https://docs.qa.tech\",\"publisher\":{\"@id\":\"https://docs.qa.tech/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.qa.tech/api-reference/runs/start-test-run#webpage\",\"url\":\"https://docs.qa.tech/api-reference/runs/start-test-run\",\"name\":\"Start test run\",\"description\":\"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\",\"dateModified\":\"2026-10-30T14:32:06.398Z\",\"isPartOf\":{\"@id\":\"https://docs.qa.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qa.tech/api-reference/runs/start-test-run#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qa.tech/api-reference/runs/start-test-run#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.qa.tech/api-reference/applications/list-applications\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Runs\",\"item\":\"https://docs.qa.tech/api-reference/runs/list-runs\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Start test run\",\"item\":\"https://docs.qa.tech/api-reference/runs/start-test-run\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.qa.tech/api-reference/runs/start-test-run#apireference\",\"headline\":\"Start test run\",\"name\":\"Start test run\",\"description\":\"Execute a run for a given project. Supports API, GITHUB, or GITLAB trigger. For version-control triggers, provide actor, branch, commitHash, commitMessage, and repository. For GITLAB, also provide repositoryUrl so links work with GitLab.com and self-hosted instances. Use applications to override environment or device preset per run. On applications[].environment, optional customHeaders and basicAuth persist auth or protection-bypass rules on the environment; omit a field to leave stored rules unchanged, or pass an empty list to clear them.\",\"url\":\"https://docs.qa.tech/api-reference/runs/start-test-run\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qa.tech/api-reference/runs/start-test-run#webpage\"},\"dateModified\":\"2026-10-30T14:32:06.398Z\",\"publisher\":{\"@id\":\"https://docs.qa.tech/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.qa.tech#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"QA.tech Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"QA.tech Docs","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://qa.tech/blog/"}]},"tabs":[{"tab":"Get Started","icon":"book-open","pages":[{"title":"Get Started","href":"/core-concepts/ai-agent-testing"}]},{"tab":"AI Assistant","icon":"message-bot","pages":[{"title":"AI Assistant","href":"/core-concepts/ai-chat-assistant"}]},{"tab":"Build Tests","icon":"list-check","pages":[{"title":"Build Tests","href":"/best-practices/creating-tests"}]},{"tab":"PR Testing","icon":"code-pull-request","pages":[{"title":"PR Testing","href":"/pr-testing/overview"}]},{"tab":"Regression Testing","icon":"clipboard-list","pages":[{"title":"Regression Testing","href":"/regression-testing/overview"}]},{"tab":"Integrations","icon":"plug","pages":[{"title":"Integrations","href":"/configuration/github-app"}]},{"tab":"API and CLI","icon":"square-terminal","groups":[{"group":"Overview","pages":[{"title":"API Introduction","icon":"code","href":"/api-reference/introduction"},{"title":"Applications API","icon":"browser","href":"/api-reference/applications"},{"title":"Application Builds API","icon":"mobile","href":"/api-reference/application-builds"},{"title":"Chat API","icon":"message-bot","href":"/api-reference/chat"},{"title":"Remote Tunnels API","icon":"link","href":"/api-reference/remote-tunnels"},{"title":"Exporting Test Cases","icon":"file-export","href":"/api-reference/exporting-test-cases"}]},{"group":"Endpoints","pages":[{"group":"Applications","pages":[{"title":"List applications","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/applications","href":"/api-reference/applications/list-applications"},{"title":"List application environments","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/applications/{applicationShortId}/environments","href":"/api-reference/applications/list-application-environments"}]},{"group":"Application Builds","pages":[{"title":"List application builds","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/applications/{applicationShortId}/builds","href":"/api-reference/application-builds/list-application-builds"},{"title":"Create application build","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/applications/{applicationShortId}/builds","href":"/api-reference/application-builds/create-application-build"},{"title":"Get build upload URL","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/applications/{applicationShortId}/builds/upload-url","href":"/api-reference/application-builds/get-build-upload-url"}]},{"group":"Automations","pages":[{"title":"List automations","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/automations","href":"/api-reference/automations/list-automations"},{"title":"Create automation","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/automations","href":"/api-reference/automations/create-automation"},{"title":"Delete automation","deprecated":null,"version":null,"openapi":"/api-reference/api.json delete /v1/automations/{automationId}","href":"/api-reference/automations/delete-automation"},{"title":"Update automation","deprecated":null,"version":null,"openapi":"/api-reference/api.json patch /v1/automations/{automationId}","href":"/api-reference/automations/update-automation"},{"title":"Trigger automation","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/automations/{automationId}/trigger","href":"/api-reference/automations/trigger-automation"}]},{"group":"Status badge","pages":[{"title":"Get example status badge","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/badge-example.svg","href":"/api-reference/status-badge/get-example-status-badge"},{"title":"Get status badge","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/badge.svg","href":"/api-reference/status-badge/get-status-badge"}]},{"group":"Chat","pages":[{"title":"Start chat conversation","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat","href":"/api-reference/chat/start-chat-conversation"},{"title":"Start change review chat","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat/change-review","href":"/api-reference/chat/start-change-review-chat"},{"title":"Prepare change review","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat/change-review/prepare","href":"/api-reference/chat/prepare-change-review"},{"title":"Get chat conversation","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/chat/{chatConversationShortId}","href":"/api-reference/chat/get-chat-conversation"},{"title":"Send chat message","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat/{chatConversationShortId}","href":"/api-reference/chat/send-chat-message"}]},{"group":"Features","pages":[{"title":"List features","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/features","href":"/api-reference/features/list-features"},{"title":"Get feature","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/features/{featureId}","href":"/api-reference/features/get-feature"}]},{"group":"Issues","pages":[{"title":"List issues","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/issues","href":"/api-reference/issues/list-issues"},{"title":"Get issue","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/issues/{shortId}","href":"/api-reference/issues/get-issue"}]},{"group":"Knowledge","pages":[{"title":"List knowledge items","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/knowledge","href":"/api-reference/knowledge/list-knowledge-items"},{"title":"Create knowledge item","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/knowledge","href":"/api-reference/knowledge/create-knowledge-item"},{"title":"Get knowledge item","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/knowledge/{knowledgeItemId}","href":"/api-reference/knowledge/get-knowledge-item"},{"title":"Delete knowledge item","deprecated":null,"version":null,"openapi":"/api-reference/api.json delete /v1/knowledge/{knowledgeItemId}","href":"/api-reference/knowledge/delete-knowledge-item"},{"title":"Update knowledge item","deprecated":null,"version":null,"openapi":"/api-reference/api.json patch /v1/knowledge/{knowledgeItemId}","href":"/api-reference/knowledge/update-knowledge-item"}]},{"group":"Metrics","pages":[{"title":"Get project metrics","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/metrics","href":"/api-reference/metrics/get-project-metrics"}]},{"group":"Infrastructure","pages":[{"title":"Get outbound IPs","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/outbound-ips","href":"/api-reference/infrastructure/get-outbound-ips"}]},{"group":"Projects","pages":[{"title":"List projects","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/projects","href":"/api-reference/projects/list-projects"},{"title":"Create project","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/projects","href":"/api-reference/projects/create-project"}]},{"group":"Remote Tunnels","pages":[{"title":"List remote tunnels","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/remote-tunnels","href":"/api-reference/remote-tunnels/list-remote-tunnels"},{"title":"Create remote tunnel","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/remote-tunnels","href":"/api-reference/remote-tunnels/create-remote-tunnel"},{"title":"Get remote tunnel","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/remote-tunnels/{runnerId}","href":"/api-reference/remote-tunnels/get-remote-tunnel"},{"title":"Delete remote tunnel","deprecated":null,"version":null,"openapi":"/api-reference/api.json delete /v1/remote-tunnels/{runnerId}","href":"/api-reference/remote-tunnels/delete-remote-tunnel"},{"title":"Get remote tunnel status","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/remote-tunnels/{runnerId}/status","href":"/api-reference/remote-tunnels/get-remote-tunnel-status"}]},{"group":"Rules","pages":[{"title":"List rules","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/rules","href":"/api-reference/rules/list-rules"},{"title":"Create rule","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/rules","href":"/api-reference/rules/create-rule"},{"title":"Delete rule","deprecated":null,"version":null,"openapi":"/api-reference/api.json delete /v1/rules/{ruleId}","href":"/api-reference/rules/delete-rule"},{"title":"Update rule","deprecated":null,"version":null,"openapi":"/api-reference/api.json patch /v1/rules/{ruleId}","href":"/api-reference/rules/update-rule"}]},{"group":"Runs","pages":[{"title":"List runs","description":"Lists runs for the project, newest first. With no filters it returns the 20 most recent runs across all time; pass `since`/`until` (ISO 8601) to scope to a window such as the last 24 hours. Returned `shortId`s work directly with `get_run` and `rerun_run`.","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run","href":"/api-reference/runs/list-runs"},{"title":"Start test run","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/run","href":"/api-reference/runs/start-test-run"},{"title":"Get run test case","description":"Fetches a single run test case (one test's execution within a run) by its short ID — the `\u003cshortId>` in a `/results/test/\u003cshortId>` URL. Returns the goal and success criteria, the result and error classification, the evaluator's full assessment (verdict summary, expected vs actual behavior, root-cause hypotheses, step-anchored key observations and raised issues), durations, and a deep link plus best-effort media URLs. Use `get_run_test_case_screenshots` to see the steps the assessment cites, `get_run_test_case_logs` for network/console evidence, `get_run_test_case_trace` for the step-by-step action trace, and `get_test_case_history` for the pass/fail trend.","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run-test-case/{shortId}","href":"/api-reference/runs/get-run-test-case"},{"title":"Get test case history","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run-test-case/{shortId}/history","href":"/api-reference/runs/get-test-case-history"},{"title":"Get run test case logs","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run-test-case/{shortId}/logs","href":"/api-reference/runs/get-run-test-case-logs"},{"title":"Get run test case screenshots","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run-test-case/{shortId}/screenshots","href":"/api-reference/runs/get-run-test-case-screenshots"},{"title":"Get run test case trace","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run-test-case/{shortId}/trace","href":"/api-reference/runs/get-run-test-case-trace"},{"title":"Get run","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run/{shortId}","href":"/api-reference/runs/get-run"},{"title":"Rerun run","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/run/{shortId}","href":"/api-reference/runs/rerun-run"},{"title":"Get run issues","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/run/{shortId}/issues","href":"/api-reference/runs/get-run-issues"},{"title":"Export run test record","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/runs/{runShortId}/exports","href":"/api-reference/runs/export-run-test-record"},{"title":"Get run export","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/runs/{runShortId}/exports/{exportId}","href":"/api-reference/runs/get-run-export"}]},{"group":"Test Cases","pages":[{"title":"List test cases","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/test-cases","href":"/api-reference/test-cases/list-test-cases"},{"title":"Create test case","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/test-cases","href":"/api-reference/test-cases/create-test-case"},{"title":"Get test case","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/test-cases/{id}","href":"/api-reference/test-cases/get-test-case"},{"title":"Update test case","deprecated":null,"version":null,"openapi":"/api-reference/api.json patch /v1/test-cases/{id}","href":"/api-reference/test-cases/update-test-case"}]},{"group":"Todos","pages":[{"title":"List todos","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/todos","href":"/api-reference/todos/list-todos"},{"title":"Create todo","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/todos","href":"/api-reference/todos/create-todo"},{"title":"Get todo","deprecated":null,"version":null,"openapi":"/api-reference/api.json get /v1/todos/{shortId}","href":"/api-reference/todos/get-todo"},{"title":"Update todo","deprecated":null,"version":null,"openapi":"/api-reference/api.json patch /v1/todos/{shortId}","href":"/api-reference/todos/update-todo"}]}]},{"group":"CLI","pages":[{"title":"CLI Overview","icon":"terminal","href":"/cli/overview"},{"group":"Commands","expanded":true,"pages":[{"title":"qatech configure","icon":"gear","href":"/cli/commands/configure"},{"title":"qatech test-cases","icon":"list-check","href":"/cli/commands/test-cases"},{"title":"qatech applications","icon":"cube","href":"/cli/commands/applications"},{"title":"qatech environments","icon":"cubes","href":"/cli/commands/environments"},{"title":"qatech run","icon":"play","href":"/cli/commands/run"},{"title":"qatech status","icon":"circle-check","href":"/cli/commands/status"},{"title":"qatech chat","icon":"comment","href":"/cli/commands/chat"},{"title":"qatech tunnel","icon":"link","href":"/cli/commands/tunnel"},{"title":"qatech init","icon":"wand-magic-sparkles","href":"/cli/commands/init"}]}]}]}]},"basePath":"","title":"Start test run - QA.tech Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}