Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.
JWT login token tied to your Perfai user (not a separate API key). Obtain it via POST /api/v1/auth/token with your username and password (use the returned id_token) — the same login the web console performs. Carries org, user, and role; short-lived.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Perfai Security","colors":{"primary":"#ff56c9","light":"#ff9fde","dark":"#c93aa1"},"logo":{"light":"https://mintcdn.com/perfai/rTwm4ELrRh_6V5IS/logo/perfai-logo-light.png?fit=max\u0026auto=format\u0026n=rTwm4ELrRh_6V5IS\u0026q=85\u0026s=3def10cdef84b39c43037fec38395427","dark":"https://mintcdn.com/perfai/rTwm4ELrRh_6V5IS/logo/perfai-logo-pink.png?fit=max\u0026auto=format\u0026n=rTwm4ELrRh_6V5IS\u0026q=85\u0026s=328b75a61f5972d17bf41fd269cac7f1"},"favicon":"https://mintcdn.com/perfai/rTwm4ELrRh_6V5IS/favicon.svg?fit=max\u0026auto=format\u0026n=rTwm4ELrRh_6V5IS\u0026q=85\u0026s=2a9cfa43dd799782a41bd8691a8dce08","appearance":{"default":"dark","strict":true},"navbar":{"links":[{"href":"https://cloud.perfai.ai","label":"Dashboard"}],"primary":{"type":"button","label":"Get Started Free","href":"https://cloud.perfai.ai/signup"}},"footer":{"socials":{"x":"https://x.com/perfai_security","github":"https://github.com/PerfAI-Inc","linkedin":"https://linkedin.com/company/perfai"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://cloud.perfai.ai"},{"anchor":"Website","icon":"globe","href":"https://perfai.ai"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"perfai","hasAudioNarration":false,"actualSubdomain":"perfai","customDomains":["docs.perfai.ai"],"gitSource":{"type":"github","owner":"perfai-inc","repo":"public-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"98a24eb1-ba2b-4ce9-9fc0-2760cb1fea26","liveDeploymentHistoryId":"6ae0588e0c6a21c62ee242f4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0588e0c6a21c62ee242f4"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae0588e0c6a21c62ee242f4","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Core Concepts","count":48},{"language":"default","tag":"API","count":17},{"language":"default","tag":"AI Agents","count":17},{"language":"default","tag":"Reference","count":15},{"language":"default","tag":"Apps","count":6},{"language":"default","tag":"Reports","count":2},{"language":"default","tag":"Getting Started","count":2},{"language":"default","tag":"Changelog","count":1},{"language":"default","tag":"Hybrid Deployment","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".docs-frame-img{display:block!important;width:100%!important;height:auto!important}"}],"page":{"pagePath":"api-reference/apps/run-account-setup","slug":"/api-reference/apps/run-account-setup","pageMetadata":{"title":"Run Account Setup","description":"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps/{appId}/account-setup","href":"/api-reference/apps/run-account-setup","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: \"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\"\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":"Run Account Setup","description":"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps/{appId}/account-setup","href":"/api-reference/apps/run-account-setup","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Apps"],"operationId":"runAccountSetup","summary":"Run Account Setup","description":"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\n","parameters":["62ba15c3-506a-4cb7-837b-ec3e7f3c814b"],"requestBody":"39bb462c-14e4-4ba4-9afe-b52d79eb259e","responses":{"200":"18d724f7-0dee-44d2-865c-c7905183a485","400":"f90cda03-29fe-4aa4-9390-1b73d726ebc7","401":"1c478517-a12e-4588-8766-39de9e945b65","403":"de5506d7-fe90-4dbe-9674-7f8c6ad7b13f","404":"962e5295-f73a-486e-bb2b-312f860f6ad2","409":"48065962-4d58-4d9d-bb23-dfec2d98b259","429":"288893d5-b52e-473d-b35a-a7153335cfa2"},"method":"post","type":"path","servers":["0d9567ed-83da-4d4a-8f66-24c2c310e39e","f6b1966e-37d4-4d2f-b6f4-5a3061f5bebb"],"security":["b23a3729-6dbc-496a-bec4-227020cc8717"],"path":"/apps/{appId}/account-setup","baseUrlOptions":["https://api.perfai.ai/v1","https://api.{customerDomain}/v1"],"title":"Run Account Setup","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"62ba15c3-506a-4cb7-837b-ec3e7f3c814b":{"name":"appId","in":"path","required":true,"schema":{"type":"string","isRequired":true,"description":"MongoDB ObjectId of the app (from GET /apps or POST /apps).","uniqueKey":"","typeLabel":"string"},"description":"MongoDB ObjectId of the app (from GET /apps or POST /apps)."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["tenantOneCredentials"],"properties":{"tenantOneCredentials":{"type":"array","minItems":1,"maxItems":20,"description":"Credentials for the primary tenant, one entry per role. At least one is required — without a usable account the app cannot be tested authenticated.\n","items":{"type":"object","required":["role","username","password"],"additionalProperties":false,"description":"One authentication for a tenant: a role plus its username/password login. The API style (REST vs GraphQL) is detected automatically.\n","properties":{"role":{"type":"string","maxLength":100,"description":"Role this login represents (e.g. \"Admin\", \"User\", or a custom RBAC role). Drives privilege derivation and role-based access testing.","isRequired":true,"uniqueKey":"tenantOneCredentials.items.[INDEX].role","typeLabel":"string"},"username":{"type":"string","maxLength":320,"description":"Username or email used to authenticate.","isRequired":true,"uniqueKey":"tenantOneCredentials.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","maxLength":1024,"description":"Password. Encrypted at rest; never logged or returned.","isRequired":true,"uniqueKey":"tenantOneCredentials.items.[INDEX].password","typeLabel":"string"},"loginUrl":{"type":"string","format":"uri","maxLength":2048,"description":"URL where these credentials authenticate. Defaults to the app URL.","uniqueKey":"tenantOneCredentials.items.[INDEX].loginUrl","typeLabel":"string\u003curi>"}},"uniqueKey":"tenantOneCredentials.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"tenantOneCredentials","typeLabel":"object[]"},"tenantTwoCredentials":{"type":"array","maxItems":20,"description":"Credentials for a second tenant. Supply these to enable cross-tenant (BOLA) testing; without a second tenant those checks cannot run.\n","items":{"type":"object","required":["role","username","password"],"additionalProperties":false,"description":"One authentication for a tenant: a role plus its username/password login. The API style (REST vs GraphQL) is detected automatically.\n","properties":{"role":{"type":"string","maxLength":100,"description":"Role this login represents (e.g. \"Admin\", \"User\", or a custom RBAC role). Drives privilege derivation and role-based access testing.","isRequired":true,"uniqueKey":"tenantTwoCredentials.items.[INDEX].role","typeLabel":"string"},"username":{"type":"string","maxLength":320,"description":"Username or email used to authenticate.","isRequired":true,"uniqueKey":"tenantTwoCredentials.items.[INDEX].username","typeLabel":"string"},"password":{"type":"string","maxLength":1024,"description":"Password. Encrypted at rest; never logged or returned.","isRequired":true,"uniqueKey":"tenantTwoCredentials.items.[INDEX].password","typeLabel":"string"},"loginUrl":{"type":"string","format":"uri","maxLength":2048,"description":"URL where these credentials authenticate. Defaults to the app URL.","uniqueKey":"tenantTwoCredentials.items.[INDEX].loginUrl","typeLabel":"string\u003curi>"}},"uniqueKey":"tenantTwoCredentials.items.[INDEX]","typeLabel":"object"},"uniqueKey":"tenantTwoCredentials","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tenantOneCredentials":[{"role":"\u003cstring>","username":"\u003cstring>","password":"\u003cstring>","loginUrl":"\u003cstring>"}],"tenantTwoCredentials":[{"role":"\u003cstring>","username":"\u003cstring>","password":"\u003cstring>","loginUrl":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"18d724f7-0dee-44d2-865c-c7905183a485":{"description":"Credentials stored; onboarding resumed if it was waiting on them.","content":{"application/json":{"schema":{"type":"object","required":["appId","taskId","accountsSaved","onboardingResumed","statusUrl"],"properties":{"appId":{"type":"string","isRequired":true,"uniqueKey":"appId","typeLabel":"string"},"taskId":{"type":"string","description":"Registration task handle — poll GET /v1/tasks/{taskId}.","example":"task_reg_683abc1234567890abcdef12","isRequired":true,"uniqueKey":"taskId","typeLabel":"string"},"accountsSaved":{"type":"integer","description":"How many tenant credential sets were stored.","example":2,"isRequired":true,"uniqueKey":"accountsSaved","typeLabel":"integer"},"onboardingResumed":{"type":"boolean","description":"True when onboarding was paused waiting for these credentials and has now resumed. False means they are stored but nothing was waiting on them.\n","example":true,"isRequired":true,"uniqueKey":"onboardingResumed","typeLabel":"boolean"},"statusUrl":{"type":"string","isRequired":true,"uniqueKey":"statusUrl","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"appId":"\u003cstring>","taskId":"task_reg_683abc1234567890abcdef12","accountsSaved":2,"onboardingResumed":true,"statusUrl":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"f90cda03-29fe-4aa4-9390-1b73d726ebc7":{"description":"Validation error.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details.","properties":{"type":{"type":"string","description":"Error type URI, e.g. https://perfai.ai/errors/app-already-registered","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"1c478517-a12e-4588-8766-39de9e945b65":{"description":"Missing or expired JWT.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"de5506d7-fe90-4dbe-9674-7f8c6ad7b13f":{"description":"Caller's role does not permit this operation (Viewer is read-only).","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details.","properties":{"type":{"type":"string","description":"Error type URI, e.g. https://perfai.ai/errors/app-already-registered","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"962e5295-f73a-486e-bb2b-312f860f6ad2":{"description":"Resource not found or belongs to a different tenant.","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details.","properties":{"type":{"type":"string","description":"Error type URI, e.g. https://perfai.ai/errors/app-already-registered","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"48065962-4d58-4d9d-bb23-dfec2d98b259":{"description":"App was not registered through this API (app-registered-outside-api) — add its credentials in the console.\n","content":{"application/problem+json":{"schema":{"type":"object","description":"RFC 9457 Problem Details.","properties":{"type":{"type":"string","description":"Error type URI, e.g. https://perfai.ai/errors/app-already-registered","uniqueKey":"type","typeLabel":"string"},"title":{"type":"string","uniqueKey":"title","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"\u003cstring>","title":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"288893d5-b52e-473d-b35a-a7153335cfa2":{"description":"Rate limit exceeded. Back off and retry after the Retry-After header value.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."}},"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"b23a3729-6dbc-496a-bec4-227020cc8717":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT login token tied to your Perfai user (not a separate API key). Obtain it via POST /api/v1/auth/token with your username and password (use the returned id_token) — the same login the web console performs. Carries org, user, and role; short-lived.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"0d9567ed-83da-4d4a-8f66-24c2c310e39e":{"url":"https://api.perfai.ai/v1","description":"Perfai cloud"},"f6b1966e-37d4-4d2f-b6f4-5a3061f5bebb":{"url":"https://api.{customerDomain}/v1","description":"On-premise deployment","variables":{"customerDomain":{"default":"example.com"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT login token tied to your Perfai user (not a separate API key). Obtain it via POST /api/v1/auth/token with your username and password (use the returned id_token) — the same login the web console performs. Carries org, user, and role; short-lived.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"JWT login token tied to your Perfai user (not a separate API key). Obtain it via POST /api/v1/auth/token with your username and password (use the returned id_token) — the same login the web console performs. Carries org, user, and role; short-lived.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"perfai","siteName":"Perfai Security","title":"Run Account Setup - Perfai Security","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T13:24:38.887Z","originalFileLocation":"api-reference/apps/run-account-setup.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}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=\"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Perfai Security\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_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/perfai/O3_pF7bfPTnfLXzH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Run Account Setup - Perfai Security\">\u003cmeta data-mint-head property=\"og:description\" content=\"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Perfai Security\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.perfai.ai/api-reference/apps/run-account-setup\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://perfai.mintlify.app/_mintlify/api/og/v2?division=Reference\u0026amp;title=Run+Account+Setup\u0026amp;description=Supplies+test-account+credentials+for+an+app+that+cannot+sign+itself+up+%E2%80%94+one+with+no+public+sign-up+page%2C+or+behind+a+CAPTCHA%2C+SSO+wall+or+invite-only+flow.+On\u0026amp;theme=0b2278042ba83ad617564bbf\u0026amp;signature=5a2cd2af294ad564d88b7134d97f707deb1dfa0ea7c8dcc9235ad3de5266bbf4\">\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=\"Run Account Setup - Perfai Security\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://perfai.mintlify.app/_mintlify/api/og/v2?division=Reference\u0026amp;title=Run+Account+Setup\u0026amp;description=Supplies+test-account+credentials+for+an+app+that+cannot+sign+itself+up+%E2%80%94+one+with+no+public+sign-up+page%2C+or+behind+a+CAPTCHA%2C+SSO+wall+or+invite-only+flow.+On\u0026amp;theme=0b2278042ba83ad617564bbf\u0026amp;signature=5a2cd2af294ad564d88b7134d97f707deb1dfa0ea7c8dcc9235ad3de5266bbf4\">\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/perfai/O3_pF7bfPTnfLXzH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Perfai Security\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff56c9\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.perfai.ai/api-reference/apps/run-account-setup\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/apps/run-account-setup.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.perfai.ai/#organization\",\"name\":\"Perfai Security\",\"url\":\"https://docs.perfai.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/perfai/rTwm4ELrRh_6V5IS/logo/perfai-logo-light.png?fit=max\u0026auto=format\u0026n=rTwm4ELrRh_6V5IS\u0026q=85\u0026s=3def10cdef84b39c43037fec38395427\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.perfai.ai#website\",\"name\":\"Perfai Security\",\"url\":\"https://docs.perfai.ai\",\"publisher\":{\"@id\":\"https://docs.perfai.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup#webpage\",\"url\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup\",\"name\":\"Run Account Setup\",\"description\":\"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\",\"dateModified\":\"2026-10-23T13:24:38.887Z\",\"isPartOf\":{\"@id\":\"https://docs.perfai.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Core Concepts\",\"item\":\"https://docs.perfai.ai/docs/core-concepts/apps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\",\"item\":\"https://docs.perfai.ai/docs/api/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Reference\",\"item\":\"https://docs.perfai.ai/api-reference/apps/list-apps\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Run Account Setup\",\"item\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup#apireference\",\"headline\":\"Run Account Setup\",\"name\":\"Run Account Setup\",\"description\":\"Supplies test-account credentials for an app that cannot sign itself up — one with no public sign-up page, or behind a CAPTCHA, SSO wall or invite-only flow. Onboarding pauses in that situation rather than degrading to an unauthenticated test; submitting credentials here resumes it. Uses the same tenantOneCredentials / tenantTwoCredentials shape as register. Poll the returned taskId.\",\"url\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup\",\"mainEntityOfPage\":{\"@id\":\"https://docs.perfai.ai/api-reference/apps/run-account-setup#webpage\"},\"dateModified\":\"2026-10-23T13:24:38.887Z\",\"publisher\":{\"@id\":\"https://docs.perfai.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.perfai.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Perfai Security\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Perfai Security","nav":{"global":{"anchors":[{"anchor":"Dashboard","icon":"gauge","href":"https://cloud.perfai.ai"},{"anchor":"Website","icon":"globe","href":"https://perfai.ai"}]},"pages":[{"group":"Getting Started","pages":[{"title":"Introduction","href":"/docs/introduction"},{"title":"Quickstart","href":"/docs/quickstart"}]},{"group":"Core Concepts","pages":[{"group":"Apps","pages":[{"title":"Apps","href":"/docs/core-concepts/apps"},{"title":"What Perfai scans","href":"/docs/core-concepts/what-perfai-scans"},{"title":"Bring Your Own Accounts","href":"/docs/use-cases/bring-your-own-accounts"},{"title":"Apps Without Public Sign-Up","href":"/docs/use-cases/private-signup-apps"},{"title":"Internal App Support","href":"/docs/use-cases/internal-app-support"},{"title":"Managing an App","href":"/docs/use-cases/managing-an-app"}]},{"title":"Insights","href":"/docs/core-concepts/insights"},{"title":"Issues","href":"/docs/core-concepts/issues"},{"group":"Reports","pages":[{"title":"Reports","href":"/docs/core-concepts/reports"},{"title":"Sample Security Report","href":"/docs/sample-security-report"}]},{"title":"Integrations","href":"/docs/core-concepts/integrations"},{"group":"AI Agents","pages":[{"title":"Perfai Cloud MCP Server","href":"/docs/mcp/overview"},{"title":"Claude Code","href":"/docs/mcp/claude-code"},{"title":"Claude","href":"/docs/mcp/claude"},{"title":"Cursor","href":"/docs/mcp/cursor"},{"title":"Replit","href":"/docs/mcp/replit"},{"title":"Lovable","href":"/docs/mcp/lovable"},{"title":"Bolt","href":"/docs/mcp/bolt"},{"title":"IBM Bob","href":"/docs/mcp/bob"},{"title":"VS Code (Copilot Agent Mode)","href":"/docs/mcp/vscode"},{"title":"Windsurf","href":"/docs/mcp/windsurf"},{"title":"Postman","href":"/docs/mcp/postman"},{"title":"Zed","href":"/docs/mcp/zed"},{"title":"AWS Kiro","href":"/docs/mcp/aws-kiro"},{"title":"Cline","href":"/docs/mcp/cline"},{"title":"LM Studio","href":"/docs/mcp/lm-studio"},{"title":"Continue.dev","href":"/docs/mcp/continue-dev"},{"title":"Generic MCP client","href":"/docs/mcp/generic"}]},{"group":"API","pages":[{"title":"Overview","href":"/docs/api/overview"},{"title":"Guide","href":"/docs/api/api-reference"},{"group":"Reference","pages":[{"title":"List apps","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /apps","href":"/api-reference/apps/list-apps"},{"title":"Register app","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps","href":"/api-reference/apps/register-app"},{"title":"Get app (poll registration)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /apps/{appId}","href":"/api-reference/apps/get-app-poll-registration"},{"title":"Delete app","description":"Permanently deletes an app you registered via this API and ALL of its data — runs, findings, mappings, and stored credentials. Irreversible. Only apps registered through this API can be deleted here; an app created in the console (or predating API source tracking) returns 409 — delete it in the console instead. Rate limit 5 requests / 60 s per IP.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /apps/{appId}","href":"/api-reference/apps/delete-app"},{"title":"Run Account Setup","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps/{appId}/account-setup","href":"/api-reference/apps/run-account-setup"},{"title":"Run Vision Agent","description":"Asynchronously launches a vision (browser-automation) run for the app. Partner-triggered runs always execute browserless on the background browser pool — there is no mode parameter. Credentials are resolved server-side from the app's stored authentication; none travel in the request. Rate limit 5 requests / 60 s per IP.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps/{appId}/vision-agent","href":"/api-reference/vision-agent/run-vision-agent"},{"title":"Run Security Agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /apps/{appId}/security-agent","href":"/api-reference/security-agent/run-security-agent"},{"title":"Get task status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /tasks/{taskId}","href":"/api-reference/tasks/get-task-status"},{"title":"Get vulnerabilities","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /apps/{appId}/vulnerabilities","href":"/api-reference/vulnerabilities/get-vulnerabilities"},{"title":"Get vulnerability","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /vulnerabilities/{vulnerabilityId}","href":"/api-reference/vulnerabilities/get-vulnerability"},{"title":"Dismiss vulnerability","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /vulnerabilities/{vulnerabilityId}/dismiss","href":"/api-reference/vulnerabilities/dismiss-vulnerability"},{"title":"Mark vulnerability fixed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /vulnerabilities/{vulnerabilityId}/fix","href":"/api-reference/vulnerabilities/mark-vulnerability-fixed"},{"title":"Reopen vulnerability","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /vulnerabilities/{vulnerabilityId}/reopen","href":"/api-reference/vulnerabilities/reopen-vulnerability"},{"title":"Get reports","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /apps/{appId}/reports","href":"/api-reference/reports/get-reports"},{"title":"Download report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /reports/{reportId}","href":"/api-reference/reports/download-report"}]}]},{"title":"Users","href":"/docs/core-concepts/users"},{"title":"Settings","href":"/docs/core-concepts/settings"},{"title":"Plans \u0026 Limits","href":"/docs/plans-and-limits"}]},{"group":"Hybrid Deployment","pages":[{"title":"Private Agents","href":"/docs/private-agents"}]},{"group":"Changelog","pages":[{"title":"Changelog","href":"/docs/changelog"}]}]},"title":"Run Account Setup - Perfai Security","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-R3M_BF4L.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js","Markdown-CCeGv-zI.js","clsx-BGBGWFTt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-Cv_O2fky.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-2C5OB2eV.js"]}