Create a new chat conversation and send its first message.
This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires.
Returns 202 immediately with the created conversation. Processing is asynchronous: poll
get_chat_conversation until conversation status is completed, failed, or
cancelled. Assistant message COMPLETED is not enough — starting a test run ends
the current turn while the run continues. Wait at least 1s between polls. When a run
exists, runs[].shortId is the handle for get_run / get_run_test_case.
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(-.+_.+|_.+)$
Response
202 - application/json
The request has been accepted for processing, but processing has not yet completed.
Conversation data with recent messages (newest first).
Overall conversation lifecycle. in_progress while the assistant is working or a background test run / research task is still going. Assistant message COMPLETED is not enough — starting a run ends the current turn. Poll until this is completed, failed, or cancelled.
Test runs started from this conversation, newest first. Empty until a run is created. Use shortId with get_run (testCases = all) or nested test-case short IDs from that call with get_run_test_case.
Where the conversation originated. api for conversations created via this API, ui for the dashboard, github/gitlab for VCS-triggered chats, and system for everything else.
Recent messages, newest first. Empty on creation; poll get_chat_conversation to retrieve. Internal wake messages are omitted.
Show child attributes
Was this page helpful?
{"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":"6aea0e2498ee2cfbfea9491f","collectionId":"13addad9-7863-43cc-bb67-6e1dd0991c5f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea0e2498ee2cfbfea9491f"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aea0e2498ee2cfbfea9491f","clientVersion":"0.0.4054","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},{"name":"rbac-expansion","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/chat/start-chat-conversation","slug":"/api-reference/chat/start-chat-conversation","pageMetadata":{"title":"Start chat conversation","description":"Create a new chat conversation and send its first message.\n\nThis is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over `create_test_case` unless you have already verified the flow exists and gathered the details that tool requires.\n\nReturns 202 immediately with the created conversation. Processing is asynchronous: poll\n`get_chat_conversation` until conversation `status` is `completed`, `failed`, or\n`cancelled`. Assistant message `COMPLETED` is not enough — starting a test run ends\nthe current turn while the run continues. Wait at least 1s between polls. When a run\nexists, `runs[].shortId` is the handle for `get_run` / `get_run_test_case`.","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat","href":"/api-reference/chat/start-chat-conversation","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, 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(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Create a new chat conversation and send its first message.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over \", _jsx(_components.code, {\n children: \"create_test_case\"\n }), \" unless you have already verified the flow exists and gathered the details that tool requires.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Returns 202 immediately with the created conversation. Processing is asynchronous: poll\\n\", _jsx(_components.code, {\n children: \"get_chat_conversation\"\n }), \" until conversation \", _jsx(_components.code, {\n children: \"status\"\n }), \" is \", _jsx(_components.code, {\n children: \"completed\"\n }), \", \", _jsx(_components.code, {\n children: \"failed\"\n }), \", or\\n\", _jsx(_components.code, {\n children: \"cancelled\"\n }), \". Assistant message \", _jsx(_components.code, {\n children: \"COMPLETED\"\n }), \" is not enough — starting a test run ends\\nthe current turn while the run continues. Wait at least 1s between polls. When a run\\nexists, \", _jsx(_components.code, {\n children: \"runs[].shortId\"\n }), \" is the handle for \", _jsx(_components.code, {\n children: \"get_run\"\n }), \" / \", _jsx(_components.code, {\n children: \"get_run_test_case\"\n }), \".\"]\n })]\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 chat conversation","description":"Create a new chat conversation and send its first message.\n\nThis is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over `create_test_case` unless you have already verified the flow exists and gathered the details that tool requires.\n\nReturns 202 immediately with the created conversation. Processing is asynchronous: poll\n`get_chat_conversation` until conversation `status` is `completed`, `failed`, or\n`cancelled`. Assistant message `COMPLETED` is not enough — starting a test run ends\nthe current turn while the run continues. Wait at least 1s between polls. When a run\nexists, `runs[].shortId` is the handle for `get_run` / `get_run_test_case`.","deprecated":null,"version":null,"openapi":"/api-reference/api.json post /v1/chat","href":"/api-reference/chat/start-chat-conversation","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"Chat","summary":"Start chat conversation","description":"Create a new chat conversation and send its first message.\n\nThis is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over `create_test_case` unless you have already verified the flow exists and gathered the details that tool requires.\n\nReturns 202 immediately with the created conversation. Processing is asynchronous: poll\n`get_chat_conversation` until conversation `status` is `completed`, `failed`, or\n`cancelled`. Assistant message `COMPLETED` is not enough — starting a test run ends\nthe current turn while the run continues. Wait at least 1s between polls. When a run\nexists, `runs[].shortId` is the handle for `get_run` / `get_run_test_case`.","parameters":[],"responses":{"202":"39ccaf33-366b-48e2-8b9e-5a37ebd5cbed"},"tags":["Chat"],"requestBody":"578ba989-17a4-4266-a180-757c40a691a9","method":"post","type":"path","servers":["a880be0e-b5c6-411f-a895-570b0d510bb2"],"security":["de0efc7c-c420-4438-ac20-eb06aa8fc434"],"path":"/v1/chat","baseUrlOptions":["https://api.qa.tech"],"title":"Start chat conversation","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":1,"description":"The message text to send. Example: 'Generate a login flow test for staging'.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"applicationOverrides":{"type":"array","items":{"type":"object","required":["applicationShortId","environment"],"properties":{"applicationShortId":{"type":"string","pattern":"^app(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"applicationOverrides.items.[INDEX].applicationShortId","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":"applicationOverrides.items.[INDEX].environment.oneOf.0.url","typeLabel":"string\u003curi>"},"name":{"type":"string","uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.0.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.0.basicAuth","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.1.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.1.basicAuth","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.2.applicationBuildShortId","typeLabel":"string"},"otherApplicationBuildShortIds":{"type":"array","items":{"type":"string","pattern":"^build(-.+_.+|_.+)$","uniqueKey":"applicationOverrides.items.[INDEX].environment.oneOf.2.otherApplicationBuildShortIds.items.[INDEX]","typeLabel":"string"},"uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.2.customHeaders.items.[INDEX].domains","typeLabel":"string[]"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.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":"applicationOverrides.items.[INDEX].environment.oneOf.2.basicAuth","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"applicationOverrides.items.[INDEX].environment.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"applicationOverrides.items.[INDEX].environment","typeLabel":"object"},"devicePresetShortId":{"type":"string","pattern":"^preset(-.+_.+|_.+)$","uniqueKey":"applicationOverrides.items.[INDEX].devicePresetShortId","typeLabel":"string"},"issueReporters":{"type":"object","description":"Which issue reporters run for this application on this run. A partial accessibility object is completed when the run is created.","properties":{"accessibility":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Watch for axe accessibility issues on this application for this run. Omit to use the caller default: on for API runs, off for MCP.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.enabled","typeLabel":"boolean"},"tags":{"type":"array","items":{"type":"string","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.tags.items.[INDEX]","typeLabel":"string"},"description":"axe-core tags to scan, such as wcag2aa. Omit for the default WCAG 2.0, 2.1, and 2.2 set.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.tags","typeLabel":"string[]"},"disabledRules":{"type":"array","items":{"type":"string","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.disabledRules.items.[INDEX]","typeLabel":"string"},"description":"axe-core rule ids to skip. Omit for the default disabled rules. An empty list disables none.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.disabledRules","typeLabel":"string[]"},"includeIncomplete":{"type":"boolean","description":"File axe incomplete results as well as violations. Omit to include them.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.includeIncomplete","typeLabel":"boolean"},"iframes":{"type":"boolean","description":"Scan inside iframes. Omit to skip iframes.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility.iframes","typeLabel":"boolean"}},"description":"Partial accessibility scan override. Omitted fields are filled when the run is created.","uniqueKey":"applicationOverrides.items.[INDEX].issueReporters.accessibility","typeLabel":"object"}},"uniqueKey":"applicationOverrides.items.[INDEX].issueReporters","typeLabel":"object"}},"description":"Application override with a required environment","uniqueKey":"applicationOverrides.items.[INDEX]","typeLabel":"object"},"description":"Optional per-application environment overrides. Optional customHeaders and basicAuth on environment persist auth or protection-bypass rules.","uniqueKey":"applicationOverrides","typeLabel":"object[]"},"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 sending a chat message","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","applicationOverrides":[{"applicationShortId":"\u003cstring>","environment":{"url":"\u003cstring>","name":"\u003cstring>","customHeaders":[{"domains":["\u003cstring>"],"headers":{}}],"basicAuth":[{"domains":["\u003cstring>"],"username":"\u003cstring>","password":"\u003cstring>"}]},"devicePresetShortId":"\u003cstring>","issueReporters":{"accessibility":{"enabled":true,"tags":["\u003cstring>"],"disabledRules":["\u003cstring>"],"includeIncomplete":true,"iframes":true}}}],"projectShortId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"39ccaf33-366b-48e2-8b9e-5a37ebd5cbed":{"description":"The request has been accepted for processing, but processing has not yet completed.","content":{"application/json":{"schema":{"type":"object","required":["shortId","url","createdAt","updatedAt","status","runs"],"properties":{"shortId":{"type":"string","pattern":"^chat(-.+_.+|_.+)$","isRequired":true,"uniqueKey":"shortId","typeLabel":"string"},"url":{"type":"string","description":"Dashboard URL for the conversation.","isRequired":true,"uniqueKey":"url","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"updatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updatedAt","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","enum":["in_progress","completed","failed","cancelled"],"description":"Overall conversation lifecycle. `in_progress` while the assistant is working or a background test run / research task is still going. Assistant message `COMPLETED` is not enough — starting a run ends the current turn. Poll until this is `completed`, `failed`, or `cancelled`.","isRequired":true,"uniqueKey":"status","typeLabel":"enum\u003cstring>"},"runs":{"type":"array","items":{"type":"object","required":["shortId","status","result","url"],"properties":{"shortId":{"type":"string","isRequired":true,"uniqueKey":"runs.items.[INDEX].shortId","typeLabel":"string"},"status":{"type":"string","description":"Run lifecycle status: `INITIATED`, `RUNNING`, `COMPLETED`, `ERROR`, or `CANCELLED`.","isRequired":true,"uniqueKey":"runs.items.[INDEX].status","typeLabel":"string"},"result":{"oneOf":[{"type":"string","description":"Run outcome once complete: `PASSED`, `FAILED`, or `SKIPPED`. `null` while the run is still in progress.","isRequired":true,"uniqueKey":"runs.items.[INDEX].result.oneOf.0","typeLabel":"string"},{"type":"null","description":"Run outcome once complete: `PASSED`, `FAILED`, or `SKIPPED`. `null` while the run is still in progress.","isRequired":true,"uniqueKey":"runs.items.[INDEX].result.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"runs.items.[INDEX].result","typeLabel":"string | null"},"url":{"type":"string","description":"Dashboard URL for the run.","isRequired":true,"uniqueKey":"runs.items.[INDEX].url","typeLabel":"string"}},"description":"A test run started from this conversation. `shortId` works with `get_run` and `rerun_run`.","uniqueKey":"runs.items.[INDEX]","typeLabel":"object"},"description":"Test runs started from this conversation, newest first. Empty until a run is created. Use `shortId` with `get_run` (`testCases` = all) or nested test-case short IDs from that call with `get_run_test_case`.","isRequired":true,"uniqueKey":"runs","typeLabel":"object[]"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"},"source":{"type":"string","enum":["api","ui","github","gitlab","system"],"description":"Where the conversation originated. `api` for conversations created via this API, `ui` for the dashboard, `github`/`gitlab` for VCS-triggered chats, and `system` for everything else.","uniqueKey":"source","typeLabel":"enum\u003cstring>"},"messages":{"type":"array","items":{"type":"object","required":["id","role","createdAt","text"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"messages.items.[INDEX].id","typeLabel":"string"},"role":{"type":"string","enum":["user","assistant"],"isRequired":true,"uniqueKey":"messages.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"createdAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"messages.items.[INDEX].createdAt","typeLabel":"string\u003cdate-time>"},"text":{"type":"string","description":"The plain-text body of the message.","isRequired":true,"uniqueKey":"messages.items.[INDEX].text","typeLabel":"string"},"status":{"type":"string","enum":["INITIATED","PARTIAL","COMPLETED","CANCELLED","FAILED"],"description":"Lifecycle status of this message. Do not treat assistant `COMPLETED` as the end of the conversation — starting a test run ends the current turn while the run continues in the background. Poll the conversation `status` instead.","uniqueKey":"messages.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"isStreaming":{"type":"boolean","description":"True while the assistant is still streaming tokens for this message.","uniqueKey":"messages.items.[INDEX].isStreaming","typeLabel":"boolean"}},"description":"A chat message. Tool calls and reasoning are not exposed in this version; only the text response is returned.","uniqueKey":"messages.items.[INDEX]","typeLabel":"object"},"description":"Recent messages, newest first. Empty on creation; poll `get_chat_conversation` to retrieve. Internal wake messages are omitted.","uniqueKey":"messages","typeLabel":"object[]"}},"description":"Conversation data with recent messages (newest first).","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"shortId":"\u003cstring>","url":"\u003cstring>","createdAt":"2023-11-07T05:31:56Z","updatedAt":"2023-11-07T05:31:56Z","status":"in_progress","runs":[{"shortId":"\u003cstring>","status":"\u003cstring>","result":"\u003cstring>","url":"\u003cstring>"}],"title":"\u003cstring>","source":"api","messages":[{"id":"\u003cstring>","role":"user","createdAt":"2023-11-07T05:31:56Z","text":"\u003cstring>","status":"INITIATED","isStreaming":true}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"de0efc7c-c420-4438-ac20-eb06aa8fc434":{"BearerAuth":{"type":"http","scheme":"Bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"a880be0e-b5c6-411f-a895-570b0d510bb2":{"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 chat conversation - QA.tech Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T16:39:08.359Z","originalFileLocation":"api-reference/chat/start-chat-conversation.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=\"Create a new chat conversation and send its first message. This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires. Returns 202 immediately with the created conversation. Processing is asynchronous: poll get_chat_conversation until conversation status is completed, failed, or cancelled. Assistant message COMPLETED is not enough — starting a test run ends the current turn while the run continues. Wait at least 1s between polls. When a run exists, runs[].shortId is the handle for get_run / get_run_test_case.\">\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 chat conversation - QA.tech Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a new chat conversation and send its first message. This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires. Returns 202 immediately with the created conversation. Processing is asynchronous: poll get_chat_conversation until conversation status is completed, failed, or cancelled. Assistant message COMPLETED is not enough — starting a test run ends the current turn while the run continues. Wait at least 1s between polls. When a run exists, runs[].shortId is the handle for get_run / get_run_test_case.\">\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/chat/start-chat-conversation\">\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=Chat\u0026amp;title=Start+chat+conversation\u0026amp;description=Create+a+new+chat+conversation+and+send+its+first+message.%0A%0AThis+is+the+recommended+way+to+author+tests.+The+QA.tech+agent+explores+the+site%2C+grounds+tests+in+w\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=8e1aeaece91df63ecd4ae197cdb2d5af687e3cc7e2f93502c26d4f8b25a51cd8\">\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 chat conversation - QA.tech Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a new chat conversation and send its first message. This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires. Returns 202 immediately with the created conversation. Processing is asynchronous: poll get_chat_conversation until conversation status is completed, failed, or cancelled. Assistant message COMPLETED is not enough — starting a test run ends the current turn while the run continues. Wait at least 1s between polls. When a run exists, runs[].shortId is the handle for get_run / get_run_test_case.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://qatech.mintlify.app/_mintlify/api/og/v2?division=Chat\u0026amp;title=Start+chat+conversation\u0026amp;description=Create+a+new+chat+conversation+and+send+its+first+message.%0A%0AThis+is+the+recommended+way+to+author+tests.+The+QA.tech+agent+explores+the+site%2C+grounds+tests+in+w\u0026amp;theme=1ae391f617cb8a464ae673d4\u0026amp;signature=8e1aeaece91df63ecd4ae197cdb2d5af687e3cc7e2f93502c26d4f8b25a51cd8\">\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/chat/start-chat-conversation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/chat/start-chat-conversation.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/chat/start-chat-conversation#webpage\",\"url\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation\",\"name\":\"Start chat conversation\",\"description\":\"Create a new chat conversation and send its first message. This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires. Returns 202 immediately with the created conversation. Processing is asynchronous: poll get_chat_conversation until conversation status is completed, failed, or cancelled. Assistant message COMPLETED is not enough — starting a test run ends the current turn while the run continues. Wait at least 1s between polls. When a run exists, runs[].shortId is the handle for get_run / get_run_test_case.\",\"dateModified\":\"2026-11-03T16:39:08.359Z\",\"isPartOf\":{\"@id\":\"https://docs.qa.tech#website\"},\"breadcrumb\":{\"@id\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.qa.tech/api-reference/applications/list-applications\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Start chat conversation\",\"item\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation#apireference\",\"headline\":\"Start chat conversation\",\"name\":\"Start chat conversation\",\"description\":\"Create a new chat conversation and send its first message. This is the recommended way to author tests. The QA.tech agent explores the site, grounds tests in what actually exists, and sets up login and config dependencies, so the tests are reliable rather than flaky. Prefer it over create_test_case unless you have already verified the flow exists and gathered the details that tool requires. Returns 202 immediately with the created conversation. Processing is asynchronous: poll get_chat_conversation until conversation status is completed, failed, or cancelled. Assistant message COMPLETED is not enough — starting a test run ends the current turn while the run continues. Wait at least 1s between polls. When a run exists, runs[].shortId is the handle for get_run / get_run_test_case.\",\"url\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.qa.tech/api-reference/chat/start-chat-conversation#webpage\"},\"dateModified\":\"2026-11-03T16:39:08.359Z\",\"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","description":"Get status badge as SVG. Authenticate with the token query parameter (not the API Bearer key). Project is resolved from the token.","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","description":"Start an autonomous change review from either a PR URL or raw change input. Returns 202 with the review conversation.\n\nPR mode reuses the pull request's existing review conversation unless `forceNewConversation` is true or that conversation is archived.\n\nFor a GitHub pull request's head commit:\n- If a `POST /chat/change-review/prepare` request left a review waiting, this request runs its tests against `applicationOverrides` in the same conversation, with this request's `context`.\n- Otherwise it runs a full review.\n- If PR triage skipped the commit, it does nothing unless it sends `triage.enabled: false` or a review was requested with `@qa.tech`.\n\nSend `commitHash` from CI (`pull_request.head.sha`) when calling from GitHub Actions so triage, prepare, and this request key off the commit the workflow is building. QA.tech uses it for review state and updates the stored pull request head when webhooks lag.\n\nIn every case the response is the review conversation. Poll `get_chat_conversation` until its `status` is `completed`, `failed`, or `cancelled`.","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","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","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 chat conversation - QA.tech Docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}