"full" is the whole payload. "summary" drops section prose and Trends data points, shortens other text on the largest reports, and keeps every score and rating; what it changed is listed under the report's details.omitted.
Which fields this export left null, and why. Present only when the caller's tier withheld something, and absent entirely when the payload is complete. Read it before concluding a field is absent: a null under one of these paths is locked, not missing and not a failed analysis. It ships to every tier, paid included, and carries no price and no URL. On a batch export there is ONE object for the whole batch, the union of every exported item's withheld fields, deduplicated by path.
Show child attributes
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"Preuve AI Developers","description":"Validate startup ideas from Claude, Cursor, or Codex. Viability score, competitors, source-linked evidence.","colors":{"primary":"#ea580c","light":"#f97316","dark":"#ea580c"},"logo":{"light":"https://mintcdn.com/preuve-ai/jZodzg3khCalFU2b/logo/dark.svg?fit=max\u0026auto=format\u0026n=jZodzg3khCalFU2b\u0026q=85\u0026s=e5e818b7a52b31b8d49949427aa2921e","dark":"https://mintcdn.com/preuve-ai/jZodzg3khCalFU2b/logo/light.svg?fit=max\u0026auto=format\u0026n=jZodzg3khCalFU2b\u0026q=85\u0026s=d9c1ae471ba09c9b047d4421f0296d4c","href":"https://preuve.ai"},"favicon":"https://mintcdn.com/preuve-ai/jZodzg3khCalFU2b/favicon.svg?fit=max\u0026auto=format\u0026n=jZodzg3khCalFU2b\u0026q=85\u0026s=bcff624580bc3ba18ad4ae414e22a998","appearance":{"default":"light"},"background":{"color":{"light":"#ffffff","dark":"#09090b"}},"navbar":{"links":[{"href":"https://preuve.ai","label":"preuve.ai"}],"primary":{"type":"button","label":"Get API key","href":"https://preuve.ai/app?settings=apiKeys"}},"footer":{"socials":{"x":"https://x.com/VincentBuilds","website":"https://preuve.ai"}},"seo":{"metatags":{"og:site_name":"Preuve AI Developers"}},"integrations":{"posthog":{"apiKey":"phc_n0wxSs3oUf8AS0VLFb0YpqyX7oLbTtwEYHg0oH35aOE","sessionRecording":false}},"contextual":{"options":["copy","chatgpt","claude","perplexity",{"title":"Validate an idea","description":"Run a free starter scan on preuve.ai","icon":"play","href":"https://preuve.ai/app"}],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"preuve-ai","hasAudioNarration":false,"actualSubdomain":"preuve-ai","customDomains":["docs.preuve.ai"],"gitSource":{"type":"github","owner":"vxncxnx","repo":"startup-viability-analyzer","deployBranch":"main","contentDirectory":"docs-site","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"82f72e53-511c-407c-8e81-8ba4eab344f4","liveDeploymentHistoryId":"6ada1ce5f7b413b0bdc35e9c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ada1ce5f7b413b0bdc35e9c"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ada1ce5f7b413b0bdc35e9c","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":16},{"language":"default","tag":"Endpoints","count":14},{"language":"default","tag":"Guides","count":10},{"language":"default","tag":"Agency","count":5},{"language":"default","tag":"Getting Started","count":4},{"language":"default","tag":"Concepts","count":4},{"language":"default","tag":"Analyses","count":4},{"language":"default","tag":"Batches","count":3},{"language":"default","tag":"For agents","count":2},{"language":"default","tag":"Discovery","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"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":"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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/agency/export-a-client-report","slug":"/api-reference/agency/export-a-client-report","pageMetadata":{"title":"Export a client report","description":"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency/reports/{id}/export","href":"/api-reference/agency/export-a-client-report","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: \"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\"\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":"Export a client report","description":"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency/reports/{id}/export","href":"/api-reference/agency/export-a-client-report","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"exportAgencyReport","summary":"Export a client report","description":"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\n","tags":["Agency"],"parameters":["bb0d8a13-13e7-4b1a-bd59-84003019b277","267347a0-64d4-4bbe-95be-fd053a8f793f"],"responses":{"200":"7e957b94-d388-4c62-8dbb-90da8640428a","400":"2a08839a-b0e6-49e1-b07a-4779bb7437d2","401":"bfe44ecf-a11e-4aab-af58-7c161443fda1","403":"b3ebd212-f8f7-4d0f-9b23-c9f280786f01","404":"f9e5d4cb-06a3-428a-aa64-cf3e8b10798f","409":"86f014e3-e63e-4b77-b0f0-fde966121b9d","429":"9b1d8b0e-e3e4-47e0-b459-7970b82dc9bb","500":"8d5b8be8-93f4-47bb-bebd-b37b0aa0fb4d","503":"b3108379-c312-46ab-8f6a-8b05859dcee6"},"method":"get","type":"path","servers":["f9be8054-8913-4c4c-b6e1-331d7310687c"],"security":["0db0e66f-11c3-47e4-a1a3-15a606751a88"],"path":"/api/agent/agency/reports/{id}/export","baseUrlOptions":["https://preuve.ai"],"title":"Export a client report","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"bb0d8a13-13e7-4b1a-bd59-84003019b277":{"name":"id","in":"path","required":true,"description":"Client report id, scoped to the caller's Agency workspace.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Client report id, scoped to the caller's Agency workspace.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"267347a0-64d4-4bbe-95be-fd053a8f793f":{"name":"verbosity","in":"query","required":false,"description":"\"full\" is the whole payload. \"summary\" drops section prose and Trends data points, shortens other text on the largest reports, and keeps every score and rating; what it changed is listed under the report's details.omitted.\n","schema":{"type":"string","enum":["full","summary"],"default":"full","isRequired":false,"description":"\"full\" is the whole payload. \"summary\" drops section prose and Trends data points, shortens other text on the largest reports, and keeps every score and rating; what it changed is listed under the report's details.omitted.\n","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"responses":{"7e957b94-d388-4c62-8dbb-90da8640428a":{"description":"The export payload.","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"integer","uniqueKey":"schemaVersion","typeLabel":"integer"},"exportType":{"type":"string","enum":["agency-report"],"uniqueKey":"exportType","typeLabel":"enum\u003cstring>"},"dataAsOf":{"type":"string","format":"date-time","uniqueKey":"dataAsOf","typeLabel":"string\u003cdate-time>"},"exportedAt":{"type":"string","format":"date-time","uniqueKey":"exportedAt","typeLabel":"string\u003cdate-time>"},"report":{"type":"object","description":"The report payload, same item shape as the ideas-json export. On verbosity=summary its details.omitted names what was dropped.\n","uniqueKey":"report","typeLabel":"object"},"ownerExclusions":{"type":"array","description":"Competitor cards the workspace hid from the client view.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"ownerExclusions.items.[INDEX].name","typeLabel":"string"},"reasonCode":{"oneOf":[{"type":"string","uniqueKey":"ownerExclusions.items.[INDEX].reasonCode.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"ownerExclusions.items.[INDEX].reasonCode.oneOf.1","typeLabel":"null"}],"uniqueKey":"ownerExclusions.items.[INDEX].reasonCode","typeLabel":"string | null"},"hiddenAt":{"oneOf":[{"type":"string","format":"date-time","uniqueKey":"ownerExclusions.items.[INDEX].hiddenAt.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","uniqueKey":"ownerExclusions.items.[INDEX].hiddenAt.oneOf.1","typeLabel":"null"}],"uniqueKey":"ownerExclusions.items.[INDEX].hiddenAt","typeLabel":"string\u003cdate-time> | null"}},"uniqueKey":"ownerExclusions.items.[INDEX]","typeLabel":"object"},"uniqueKey":"ownerExclusions","typeLabel":"object[]"},"locked":{"type":"object","description":"Which fields this export left null, and why. Present only when the caller's tier withheld something, and absent entirely when the payload is complete. Read it before concluding a field is absent: a null under one of these paths is locked, not missing and not a failed analysis. It ships to every tier, paid included, and carries no price and no URL. On a batch export there is ONE object for the whole batch, the union of every exported item's withheld fields, deduplicated by path.\n","properties":{"reason":{"type":"string","description":"Why the fields were withheld. \"starter_scan\" today.","uniqueKey":"locked.reason","typeLabel":"string"},"unlockedBy":{"type":"string","description":"What lifts the lock. \"founder_report\" today.","uniqueKey":"locked.unlockedBy","typeLabel":"string"},"fields":{"type":"array","description":"One entry per withheld field.","items":{"type":"object","properties":{"path":{"type":"string","description":"Dotted path into the export, e.g. \"details.pivots\". A path may name several keys of one object with a pipe, e.g. \"details.risks[].explanation|mitigation\".\n","uniqueKey":"locked.fields.items.[INDEX].path","typeLabel":"string"},"label":{"type":"string","description":"What that path holds, in plain language. Some labels also say the field needs an enrich call once the report is deep.\n","uniqueKey":"locked.fields.items.[INDEX].label","typeLabel":"string"}},"uniqueKey":"locked.fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"locked.fields","typeLabel":"object[]"},"note":{"type":"string","description":"One sentence restating that the nulls are a tier boundary rather than missing data.\n","uniqueKey":"locked.note","typeLabel":"string"}},"uniqueKey":"locked","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"schemaVersion":123,"exportType":"agency-report","dataAsOf":"2023-11-07T05:31:56Z","exportedAt":"2023-11-07T05:31:56Z","report":{},"ownerExclusions":[{"name":"\u003cstring>","reasonCode":"\u003cstring>","hiddenAt":"2023-11-07T05:31:56Z"}],"locked":{"reason":"\u003cstring>","unlockedBy":"\u003cstring>","fields":[{"path":"\u003cstring>","label":"\u003cstring>"}],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2a08839a-b0e6-49e1-b07a-4779bb7437d2":{"description":"verbosity must be full or summary (INVALID_VERBOSITY).","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"bfe44ecf-a11e-4aab-af58-7c161443fda1":{"description":"Missing x-preuve-key header (MISSING_API_KEY), or a malformed, unknown or revoked key (INVALID_AGENT_KEY - the same envelope for all three, on purpose). Repeated failures are throttled per IP and answer 429.\n","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b3ebd212-f8f7-4d0f-9b23-c9f280786f01":{"description":"The key is valid but does not carry the one Agency scope the route it called requires (INSUFFICIENT_SCOPE). The two are enforced per route and neither implies the other: POST /api/agent/agency/analyses requires agency:write, and every other Agency route - the workspace context, the report list, the report poll and the export - requires agency:read, so there is no separate export scope on this surface and a key carrying only the other Agency scope is refused here too. Note that every key created before 2026-09-09 hits this: these routes previously accepted the personal analysis:read / export:read scopes, and scopes are fixed at creation rather than backfilled, so an older key needs a new grant. Neither route to one is unconditional. Reconnecting the client works on any plan, free included, but /authorize only ever intersects the scopes the client requests, so a client replaying the scope list it cached at registration mints another Agency-less key and revokes the working one on the way - check the consent screen lists the Agency permissions before approving. Creating a key by hand cannot silently fail, but it needs \"Include Agency workspace access\" ticked AND an account that may create keys by hand: a paid personal plan, or membership of a Consultant or Agency workspace with an active subscription or a one-time unlock.\n","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"f9e5d4cb-06a3-428a-aa64-cf3e8b10798f":{"description":"Unknown report, or it belongs to another workspace (REPORT_NOT_FOUND / AGENCY_NOT_FOUND).\n","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"86f014e3-e63e-4b77-b0f0-fde966121b9d":{"description":"Report is not complete yet (REPORT_NOT_READY).","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"9b1d8b0e-e3e4-47e0-b459-7970b82dc9bb":{"description":"Rate limited (RATE_LIMITED or DAILY_LIMIT_REACHED). RATE_LIMITED carries a Retry-After header with the seconds until the window resets; the quota-shaped codes clear on a different clock and put resetAt in the body instead.\n","headers":{"Retry-After":{"description":"Seconds until the per-minute window resets (RATE_LIMITED only).","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"8d5b8be8-93f4-47bb-bebd-b37b0aa0fb4d":{"description":"Unexpected server error (INTERNAL_ERROR, or TRIGGER_DISPATCH_FAILED when a deep scan could not be handed to the job runner). Never tell the user their quota is safe: on a deep scan the spend can already have happened when the failure hit, and an ambiguous dispatch deliberately keeps the report and its funding because the job may have been accepted before its response was lost. Treat consumption as unknown and retry with backoff. On an operation that takes a clientRunId, retry with the SAME one - that reconciles the original run, whatever state it reached, instead of starting and charging for a second one. On every other operation there is nothing to reconcile: the read or export simply failed, so a plain backed-off retry is the whole recovery.\n","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b3108379-c312-46ab-8f6a-8b05859dcee6":{"description":"A dependency was unavailable or deliberately paused (SERVICE_DISABLED, LLM_PAUSED, PROFILE_LOOKUP_FAILED, and the fail-closed answer when the rate-limit backend is down). Any authenticated route can answer this one: authentication meters itself through the same fail-closed limiter, so an outage there refuses the request before the handler runs. Retryable, and no paid quota, tokens, or scans were consumed - a pause that lands mid-run refunds the claim it had already made. Back off and try again rather than falling back to a different endpoint.\n","content":{"application/json":{"schema":{"type":"object","required":["error","code"],"description":"Every error, on every route, unknown paths included. Some codes add top-level context fields (limit, tokenBalance, resetAt, upsell, ...); a 404 NOT_FOUND on an unknown route adds details.discovery, details.openapi and details.docs so the caller can recover.\n","properties":{"error":{"type":"string","description":"Human-readable message. Prose; it changes.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Stable machine-readable code. Branch on this.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"details":{"oneOf":[{"type":"object","description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","additionalProperties":true,"uniqueKey":"details.oneOf.0","typeLabel":"object"},{"type":"array","items":{"type":"string","uniqueKey":"details.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"Optional context. An object on most codes (limits, recovery links, the method and path of a 404); an array of strings where the route forwards a validator's messages, as enrich does on INVALID_FOUNDER_PROFILE. Read it, never branch on it - `code` is the contract.\n","uniqueKey":"details.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"details","typeLabel":"object | string[]"},"limit":{"type":"integer","description":"The ceiling that was hit, in the unit the code implies: bytes on PAYLOAD_TOO_LARGE, runs in flight on CONCURRENT_LIMIT_REACHED, requests in the window on a rate limit.\n","uniqueKey":"limit","typeLabel":"integer"},"remaining":{"type":"integer","description":"Requests left in the current window.","uniqueKey":"remaining","typeLabel":"integer"},"resetAt":{"type":"string","format":"date-time","description":"When the window that refused this request reopens. Present on DAILY_LIMIT_REACHED from run creation (the idea generator's rolling ceiling sends only limit); prefer it over the Retry-After header when both are present, since it is absolute.\n","uniqueKey":"resetAt","typeLabel":"string\u003cdate-time>"},"tokenBalance":{"type":"integer","description":"Deep-scan credits left on the account. Present on INSUFFICIENT_TOKENS.","uniqueKey":"tokenBalance","typeLabel":"integer"},"scansUsed":{"type":"integer","uniqueKey":"scansUsed","typeLabel":"integer"},"scansRemaining":{"type":"integer","uniqueKey":"scansRemaining","typeLabel":"integer"},"limitType":{"type":"string","description":"Which ceiling refused an AppSumo-backed account.","uniqueKey":"limitType","typeLabel":"string"},"upgradeHint":{"type":"string","description":"What to change to get past this refusal. Prose, not a contract.","uniqueKey":"upgradeHint","typeLabel":"string"},"creditScans":{"type":"object","description":"Present on STARTER_LIMIT_REACHED for an account whose starter scans are a fixed bank: its 10-scan credits pack is empty, what a pack costs in credits, the credit balance, and whether the account can buy credits.\n","properties":{"available":{"type":"integer","uniqueKey":"creditScans.available","typeLabel":"integer"},"packCost":{"type":"integer","uniqueKey":"creditScans.packCost","typeLabel":"integer"},"packSize":{"type":"integer","uniqueKey":"creditScans.packSize","typeLabel":"integer"},"balance":{"type":"integer","uniqueKey":"creditScans.balance","typeLabel":"integer"},"canBuyBundles":{"type":"boolean","uniqueKey":"creditScans.canBuyBundles","typeLabel":"boolean"}},"uniqueKey":"creditScans","typeLabel":"object"},"paused":{"type":"boolean","description":"Present only on the LLM-pause 503, where the body is exactly { error, code, paused }.\n","uniqueKey":"paused","typeLabel":"boolean"},"upsell":{"type":"object","description":"Purchase context for a locked export or buyable quota refusal. Export upsells are free-owner only; a paid non-regional caller may receive a scan_pack top-up on INSUFFICIENT_TOKENS. Ignore it if you only need the data contract.\n","properties":{"offer":{"type":"string","enum":["founder_report","scan_pack"],"description":"\"founder_report\" is the $59 one-time tier. \"scan_pack\" is a top-up for an account that already bought and has no deep credits left.\n","uniqueKey":"upsell.offer","typeLabel":"enum\u003cstring>"},"price":{"type":"string","description":"Display price text, e.g. \"$59 one-time\".","uniqueKey":"upsell.price","typeLabel":"string"},"guarantee":{"type":"string","description":"Guarantee text for offer=founder_report. Omitted for scan_pack top-ups; an empty string is never used.\n","uniqueKey":"upsell.guarantee","typeLabel":"string"},"url":{"type":"string","format":"uri","description":"Purchase or report URL, with attribution query parameters.","uniqueKey":"upsell.url","typeLabel":"string\u003curi>"},"locked":{"type":"array","description":"Section names the offer covers. Distinct from the top-level locked object, which names response FIELDS.\n","items":{"type":"string","uniqueKey":"upsell.locked.items.[INDEX]","typeLabel":"string"},"uniqueKey":"upsell.locked","typeLabel":"string[]"},"note":{"type":"string","description":"The same facts as one sentence, for a client that relays text.","uniqueKey":"upsell.note","typeLabel":"string"}},"uniqueKey":"upsell","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","details":{},"limit":123,"remaining":123,"resetAt":"2023-11-07T05:31:56Z","tokenBalance":123,"scansUsed":123,"scansRemaining":123,"limitType":"\u003cstring>","upgradeHint":"\u003cstring>","creditScans":{"available":123,"packCost":123,"packSize":123,"balance":123,"canBuyBundles":true},"paused":true,"upsell":{"offer":"founder_report","price":"\u003cstring>","guarantee":"\u003cstring>","url":"\u003cstring>","locked":["\u003cstring>"],"note":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"0db0e66f-11c3-47e4-a1a3-15a606751a88":{"preuveKey":{"type":"apiKey","in":"header","name":"x-preuve-key","description":"Your API key (prv_...), sent as-is. It is the only credential the API needs - see the Authentication guide.\n","scopes":[],"schemeName":"preuveKey"}}},"servers":{"f9be8054-8913-4c4c-b6e1-331d7310687c":{"url":"https://preuve.ai"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-preuve-key","description":"Your API key (prv_...), sent as-is. It is the only credential the API needs - see the Authentication guide.\n","scopes":[],"schemeName":"preuveKey"},"schema":{"title":"x-preuve-key","type":"string","description":"Your API key (prv_...), sent as-is. It is the only credential the API needs - see the Authentication guide.\n","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"preuveKey","name":"x-preuve-key"}],"title":"preuveKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"preuve-ai","siteName":"Preuve AI Developers","title":"Export a client report - Preuve AI Developers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T14:25:45.873Z","originalFileLocation":"api-reference/agency/export-a-client-report.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=\"light\"}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=\"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Preuve AI Developers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_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/preuve-ai/tKC7ZmhWCLDiptRy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Export a client report - Preuve AI Developers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Preuve AI Developers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.preuve.ai/api-reference/agency/export-a-client-report\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://preuve-ai.mintlify.app/_mintlify/api/og/v2?division=Agency\u0026amp;title=Export+a+client+report\u0026amp;description=Structured+JSON+for+one+COMPLETED+client+report.+Starter+and+refunded+reports+keep+their+normal+content+restrictions%2C+named+under+locked.%0A\u0026amp;theme=6464a725cf96986812cd17a5\u0026amp;signature=24f250a0d0f9181edacc124bbd2d3d0a885a6868aaeb0a372f3551db753d383d\">\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=\"Export a client report - Preuve AI Developers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://preuve-ai.mintlify.app/_mintlify/api/og/v2?division=Agency\u0026amp;title=Export+a+client+report\u0026amp;description=Structured+JSON+for+one+COMPLETED+client+report.+Starter+and+refunded+reports+keep+their+normal+content+restrictions%2C+named+under+locked.%0A\u0026amp;theme=6464a725cf96986812cd17a5\u0026amp;signature=24f250a0d0f9181edacc124bbd2d3d0a885a6868aaeb0a372f3551db753d383d\">\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/preuve-ai/tKC7ZmhWCLDiptRy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Preuve AI Developers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ea580c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.preuve.ai/api-reference/agency/export-a-client-report\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/agency/export-a-client-report.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.preuve.ai/#organization\",\"name\":\"Preuve AI Developers\",\"url\":\"https://docs.preuve.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/preuve-ai/jZodzg3khCalFU2b/logo/dark.svg?fit=max\u0026auto=format\u0026n=jZodzg3khCalFU2b\u0026q=85\u0026s=e5e818b7a52b31b8d49949427aa2921e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.preuve.ai#website\",\"name\":\"Preuve AI Developers\",\"url\":\"https://docs.preuve.ai\",\"publisher\":{\"@id\":\"https://docs.preuve.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report#webpage\",\"url\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report\",\"name\":\"Export a client report\",\"description\":\"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\",\"dateModified\":\"2026-10-22T14:25:45.873Z\",\"isPartOf\":{\"@id\":\"https://docs.preuve.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.preuve.ai/api-reference/discovery/discover-the-api\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Agency\",\"item\":\"https://docs.preuve.ai/api-reference/agency/get-the-agency-workspace\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Export a client report\",\"item\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report#apireference\",\"headline\":\"Export a client report\",\"name\":\"Export a client report\",\"description\":\"Structured JSON for one COMPLETED client report. Starter and refunded reports keep their normal content restrictions, named under locked.\",\"url\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report\",\"mainEntityOfPage\":{\"@id\":\"https://docs.preuve.ai/api-reference/agency/export-a-client-report#webpage\"},\"dateModified\":\"2026-10-22T14:25:45.873Z\",\"publisher\":{\"@id\":\"https://docs.preuve.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.preuve.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Preuve AI Developers\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Preuve AI Developers","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"API Reference","groups":[{"group":"API Reference","icon":"book-open","pages":[{"title":"Introduction","icon":"book-open","iconType":"solid","href":"/api-reference/introduction"}]},{"group":"Endpoints","icon":"code","pages":[{"group":"Discovery","pages":[{"title":"Discover the API","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent","href":"/api-reference/discovery/discover-the-api"}]},{"group":"Analyses","pages":[{"title":"Start an analysis","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/analyses","href":"/api-reference/analyses/start-an-analysis"},{"title":"Poll an analysis","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/analyses/{id}","href":"/api-reference/analyses/poll-an-analysis"},{"title":"Enrich an analysis","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/analyses/{id}/enrich","href":"/api-reference/analyses/enrich-an-analysis"},{"title":"Export an analysis (ideas-json)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/analyses/{id}/export","href":"/api-reference/analyses/export-an-analysis-ideas-json"}]},{"group":"Batches","pages":[{"title":"Start a batch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/analysis-batches","href":"/api-reference/batches/start-a-batch"},{"title":"Poll a batch","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/analysis-batches/{batchId}","href":"/api-reference/batches/poll-a-batch"},{"title":"Export a batch (ideas-json)","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/analysis-batches/{batchId}/export","href":"/api-reference/batches/export-a-batch-ideas-json"}]},{"group":"Tools","pages":[{"title":"Generate startup ideas","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/tools/idea-generator","href":"/api-reference/tools/generate-startup-ideas"}]},{"group":"Agency","pages":[{"title":"Get the Agency workspace","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency","href":"/api-reference/agency/get-the-agency-workspace"},{"title":"Start a client project","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /api/agent/agency/analyses","href":"/api-reference/agency/start-a-client-project"},{"title":"List client reports","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency/reports","href":"/api-reference/agency/list-client-reports"},{"title":"Poll a client report","description":"Status, tier, and report URL for one client report in the workspace. Does not return the report payload - use the export.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency/reports/{id}","href":"/api-reference/agency/poll-a-client-report"},{"title":"Export a client report","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /api/agent/agency/reports/{id}/export","href":"/api-reference/agency/export-a-client-report"}]}]}]}]},"title":"Export a client report - Preuve AI Developers","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}