API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Documentation - Formbricks","colors":{"primary":"#00C4B8","light":"#00C4B8","dark":"#00C4B8"},"logo":{"light":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-light.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=365e5fb767b72b4fbbb2016860fd92ba","dark":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-dark.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=763690d005584ee5f4b4014615c3b98c"},"favicon":"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/favicon.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=01910ab43e3a3acc0aca5471235b90c5","navbar":{"links":[{"href":"https://github.com/formbricks/formbricks/discussions","label":"Support"}],"primary":{"type":"button","label":"Go to app","href":"https://app.formbricks.com"}},"footer":{"socials":{"github":"https://github.com/formbricks/formbricks","linkedin":"https://linkedin.com/company/formbricks","x":"https://x.com/formbricks"}},"integrations":{"posthog":{"apiKey":"phc_zJO1n3rjHlhqKiJ0gqLDwT4qvfWF1wzHDq2gfl0moQm","apiHost":"https://eu.i.posthog.com"}},"errors":{"404":{"redirect":true}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"formbricks","hasAudioNarration":false,"actualSubdomain":"formbricks","customDomains":["formbricks.com"],"gitSource":{"type":"github","owner":"formbricks","repo":"formbricks","deployBranch":"release/6.1","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"issues":true,"edits":true,"agentFeedback":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aec6ba8981b8170d4f1db3c","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Surveys (Ask)","count":87},{"language":"default","tag":"Survey Features","count":71},{"language":"default","tag":"Self Hosting","count":53},{"language":"default","tag":"API v2 Reference (Beta)","count":41},{"language":"default","tag":"API v1 Reference","count":35},{"language":"default","tag":"Platform","count":28},{"language":"default","tag":"Configuration","count":28},{"language":"default","tag":"Platform Features","count":23},{"language":"default","tag":"Integrations","count":22},{"language":"default","tag":"Development","count":21}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-v2-reference/client-api--file-upload/upload-private-file","slug":"/api-v2-reference/client-api--file-upload/upload-private-file","pageMetadata":{"title":"Upload Private File","description":"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/storage","href":"/api-v2-reference/client-api--file-upload/upload-private-file","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: \"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\"\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":"Upload Private File","description":"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/storage","href":"/api-v2-reference/client-api--file-upload/upload-private-file","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/formbricks/fd84136b00b6b9ed/formbricks.js"],"openApiReferenceData":{"operation":{"security":[],"summary":"Upload Private File","description":"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.","tags":["Client API - File Upload"],"parameters":["8fca3710-de19-4d03-a18e-9d6cb5161581"],"requestBody":"d4ec7705-0fac-4551-be7c-ede6090d4c43","responses":{"200":"a2c89543-0977-42d6-86fc-e4a23941c0d0","400":"1f91192a-b81e-49a4-87da-5f0148e9cafe","404":"a0b511f8-338f-4adc-b6c1-e6b38b262a92"},"servers":["daa0c6c3-7123-4e5f-91d2-4b5448e204a1"],"method":"post","type":"path","path":"/client/{workspaceId}/storage","baseUrlOptions":["https://app.formbricks.com/api/v2"],"title":"Upload Private File","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"8fca3710-de19-4d03-a18e-9d6cb5161581":{"in":"path","name":"workspaceId","required":true,"schema":{"type":"string","isRequired":true,"description":"The ID of the Workspace. Deprecated alias `environmentId`.","uniqueKey":"","typeLabel":"string"},"description":"The ID of the Workspace. Deprecated alias `environmentId`."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"surveyId":{"type":"string","description":"The ID of the survey associated with the file.","isRequired":true,"uniqueKey":"surveyId","typeLabel":"string"},"fileName":{"type":"string","description":"The name of the file to be uploaded.","isRequired":true,"uniqueKey":"fileName","typeLabel":"string"},"fileType":{"type":"string","description":"The MIME type of the file.","isRequired":true,"uniqueKey":"fileType","typeLabel":"string"}},"required":["surveyId","fileName","fileType"],"example":{"surveyId":"cm7pr0x2y004o192zmit8cjvb","fileName":"example.jpg","fileType":"image/jpeg"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"surveyId":"cm7pr0x2y004o192zmit8cjvb","fileName":"example.jpg","fileType":"image/jpeg"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"a2c89543-0977-42d6-86fc-e4a23941c0d0":{"description":"OK - Returns the signed URL, presigned fields, updated file name, and file URL.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"signedUrl":{"type":"string","description":"Presigned POST URL for uploading the file to S3-compatible storage.","uniqueKey":"data.signedUrl","typeLabel":"string"},"presignedFields":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"data.presignedFields.additionalProperties","typeLabel":"string"},"description":"Presigned POST form fields required by S3-compatible storage.","uniqueKey":"data.presignedFields","typeLabel":"object"},"updatedFileName":{"type":"string","description":"The updated file name after processing.","uniqueKey":"data.updatedFileName","typeLabel":"string"},"fileUrl":{"type":"string","description":"URL where the uploaded file can be accessed.","uniqueKey":"data.fileUrl","typeLabel":"string"}},"uniqueKey":"data","typeLabel":"object"}},"example":{"data":{"signedUrl":"https://s3.example.com/bucket","presignedFields":{"key":"uploads/env-id/private/file--fid--uuid.jpg","policy":"\u003cbase64-policy>","x-amz-algorithm":"AWS4-HMAC-SHA256"},"updatedFileName":"file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg","fileUrl":"https://app.formbricks.com/storage/cm1ubebtj000614kqe4hs3c67/private/file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"signedUrl":"https://s3.example.com/bucket","presignedFields":{"key":"uploads/env-id/private/file--fid--uuid.jpg","policy":"\u003cbase64-policy>","x-amz-algorithm":"AWS4-HMAC-SHA256"},"updatedFileName":"file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg","fileUrl":"https://app.formbricks.com/storage/cm1ubebtj000614kqe4hs3c67/private/file--fid--b153ba3e-6602-4bb3-bed9-211b5b1ae463.jpg"}}}},"exampleType":"generated"}},"exampleType":"generated"},"1f91192a-b81e-49a4-87da-5f0148e9cafe":{"description":"Bad Request - One or more required fields are missing.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Detailed error message.","uniqueKey":"error","typeLabel":"string"}},"example":{"error":"fileName is required"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"fileName is required"}}},"exampleType":"generated"}},"exampleType":"generated"},"a0b511f8-338f-4adc-b6c1-e6b38b262a92":{"description":"Not Found - The specified survey or organization does not exist.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Detailed error message.","uniqueKey":"error","typeLabel":"string"}},"example":{"error":"Survey survey123 not found"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Survey survey123 not found"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{"daa0c6c3-7123-4e5f-91d2-4b5448e204a1":{"url":"https://app.formbricks.com/api/v2","description":"Formbricks API Server"}}},"originalFileLocation":"api-v2-reference/openapi.yml"},"subdomain":"formbricks","siteName":"Documentation - Formbricks","title":"Upload Private File - Documentation - Formbricks","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-20T07:04:41.027Z","originalFileLocation":"api-v2-reference/client-api--file-upload/upload-private-file.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_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=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Upload Private File - Documentation - Formbricks\">\u003cmeta data-mint-head property=\"og:description\" content=\"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://formbricks.mintlify.site/docs/_mintlify/api/og/v2?division=Client+API+-+File+Upload\u0026amp;title=Upload+Private+File\u0026amp;description=API+endpoint+for+uploading+private+files.+Uploaded+files+are+kept+private+so+that+only+users+with+access+to+the+specified+Workspace+can+retrieve+them.+The+endpo\u0026amp;theme=5f66c2cdb60ad4d135e6b4e5\u0026amp;signature=79ab82f4bf6c68570ee3f07229ce8124d70515ccbe99024092f74dfafe5a50a1\">\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=\"Upload Private File - Documentation - Formbricks\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://formbricks.mintlify.site/docs/_mintlify/api/og/v2?division=Client+API+-+File+Upload\u0026amp;title=Upload+Private+File\u0026amp;description=API+endpoint+for+uploading+private+files.+Uploaded+files+are+kept+private+so+that+only+users+with+access+to+the+specified+Workspace+can+retrieve+them.+The+endpo\u0026amp;theme=5f66c2cdb60ad4d135e6b4e5\u0026amp;signature=79ab82f4bf6c68570ee3f07229ce8124d70515ccbe99024092f74dfafe5a50a1\">\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=\"/docs/mintlify-assets/_mintlify/favicons/formbricks/GlZ4IqkvkQlhFmAc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Documentation - Formbricks\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00C4B8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-v2-reference/client-api--file-upload/upload-private-file.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://formbricks.com/#organization\",\"name\":\"Documentation - Formbricks\",\"url\":\"https://formbricks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/formbricks/wqEbm3FT1QK_6-vL/images/logo-light.svg?fit=max\u0026auto=format\u0026n=wqEbm3FT1QK_6-vL\u0026q=85\u0026s=365e5fb767b72b4fbbb2016860fd92ba\"}},{\"@type\":\"WebSite\",\"@id\":\"https://formbricks.com/docs#website\",\"name\":\"Documentation - Formbricks\",\"url\":\"https://formbricks.com/docs\",\"publisher\":{\"@id\":\"https://formbricks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file#webpage\",\"url\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file\",\"name\":\"Upload Private File\",\"description\":\"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\",\"dateModified\":\"2026-10-20T07:04:41.027Z\",\"isPartOf\":{\"@id\":\"https://formbricks.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Documentation - Formbricks\",\"item\":\"https://formbricks.com/docs\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Upload Private File\",\"item\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file#apireference\",\"headline\":\"Upload Private File\",\"name\":\"Upload Private File\",\"description\":\"API endpoint for uploading private files. Uploaded files are kept private so that only users with access to the specified Workspace can retrieve them. The endpoint validates the survey ID, file name, and file type from the request body, and returns a signed URL for S3 uploads along with a local upload URL. Note - Environments are deprecated. Use Workspace/workspaceId terminology.\",\"url\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file\",\"mainEntityOfPage\":{\"@id\":\"https://formbricks.com/docs/api-v2-reference/client-api--file-upload/upload-private-file#webpage\"},\"dateModified\":\"2026-10-20T07:04:41.027Z\",\"publisher\":{\"@id\":\"https://formbricks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://formbricks.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Documentation - Formbricks\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Documentation - Formbricks","nav":{"global":null,"tabs":[{"tab":"Platform","pages":[{"title":"Platform","href":"/platform/introduction"}]},{"tab":"Surveys (Ask)","pages":[{"title":"Surveys (Ask)","href":"/surveys/overview"}]},{"tab":"Unify Feedback (Analyze)","pages":[{"title":"Unify Feedback (Analyze)","href":"/unify-feedback/overview"}]},{"tab":"Workflows (Act)","pages":[{"title":"Workflows (Act)","href":"/workflows/overview"}]},{"tab":"Self Hosting","pages":[{"title":"Self Hosting","href":"/self-hosting/overview"}]},{"tab":"Development","pages":[{"title":"Development","href":"/development/overview"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/platform/mcp/overview"}]},{"tab":"API v1 Reference","pages":[{"title":"API v1 Reference","href":"/api-reference/rest-api"}]},{"tab":"API v2 Reference (Beta)","groups":[{"group":"API v2 Documentation (Beta)","pages":[{"title":"API v2 Reference (Beta)","icon":"code-compare","href":"/api-v2-reference/introduction"}]},{"group":"Client API - Response","pages":[{"title":"Update Response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /client/{workspaceId}/responses/{responseId}","href":"/api-v2-reference/client-api--response/update-response"},{"title":"Create Response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/responses","href":"/api-v2-reference/client-api--response/create-response"}]},{"group":"Client API - Display","pages":[{"title":"Create Display","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/displays","href":"/api-v2-reference/client-api--display/create-display"}]},{"group":"Client API - Workspace","pages":[{"title":"Get Workspace State","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /client/{workspaceId}/environment","href":"/api-v2-reference/client-api--workspace/get-workspace-state"}]},{"group":"Client API - User","pages":[{"title":"Create or Identify User","description":"Endpoint for creating or identifying a user within the specified Workspace. If the user already exists, this will identify them and potentially update user attributes. If they don't exist, it will create a new user. Note - Environments are deprecated. Use Workspace/workspaceId terminology.","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/user","href":"/api-v2-reference/client-api--user/create-or-identify-user"}]},{"group":"Client API - File Upload","pages":[{"title":"Upload Private File","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /client/{workspaceId}/storage","href":"/api-v2-reference/client-api--file-upload/upload-private-file"}]},{"group":"Health","pages":[{"title":"Health Check","description":"Check the health status of critical application dependencies including database and cache.","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /health","href":"/api-v2-reference/health/health-check"}]},{"group":"Roles","pages":[{"title":"Get roles","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /roles","href":"/api-v2-reference/roles/get-roles"}]},{"group":"Me","pages":[{"title":"Me","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /me","href":"/api-v2-reference/me/me"}]},{"group":"Management API - Responses","pages":[{"title":"Get responses","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/responses","href":"/api-v2-reference/management-api--responses/get-responses"},{"title":"Create a response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /management/responses","href":"/api-v2-reference/management-api--responses/create-a-response"},{"title":"Get a response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/responses/{id}","href":"/api-v2-reference/management-api--responses/get-a-response"},{"title":"Update a response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /management/responses/{id}","href":"/api-v2-reference/management-api--responses/update-a-response"},{"title":"Delete a response","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml delete /management/responses/{id}","href":"/api-v2-reference/management-api--responses/delete-a-response"}]},{"group":"Management API - Contacts","pages":[{"title":"Upload Bulk Contacts","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /management/contacts/bulk","href":"/api-v2-reference/management-api--contacts/upload-bulk-contacts"},{"title":"Create a contact","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /management/contacts","href":"/api-v2-reference/management-api--contacts/create-a-contact"}]},{"group":"Management API - Contact Attribute Keys","pages":[{"title":"Get contact attribute keys","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/contact-attribute-keys","href":"/api-v2-reference/management-api--contact-attribute-keys/get-contact-attribute-keys"},{"title":"Create a contact attribute key","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /management/contact-attribute-keys","href":"/api-v2-reference/management-api--contact-attribute-keys/create-a-contact-attribute-key"},{"title":"Get a contact attribute key","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/contact-attribute-keys/{id}","href":"/api-v2-reference/management-api--contact-attribute-keys/get-a-contact-attribute-key"},{"title":"Update a contact attribute key","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /management/contact-attribute-keys/{id}","href":"/api-v2-reference/management-api--contact-attribute-keys/update-a-contact-attribute-key"},{"title":"Delete a contact attribute key","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml delete /management/contact-attribute-keys/{id}","href":"/api-v2-reference/management-api--contact-attribute-keys/delete-a-contact-attribute-key"}]},{"group":"Management API - Surveys - Contact Links","pages":[{"title":"Get personalized survey link for a contact","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/surveys/{surveyId}/contact-links/contacts/{contactId}/","href":"/api-v2-reference/management-api--surveys--contact-links/get-personalized-survey-link-for-a-contact"},{"title":"Get survey links for contacts in a segment","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/surveys/{surveyId}/contact-links/segments/{segmentId}","href":"/api-v2-reference/management-api--surveys--contact-links/get-survey-links-for-contacts-in-a-segment"}]},{"group":"Management API - Webhooks","pages":[{"title":"Get webhooks","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/webhooks","href":"/api-v2-reference/management-api--webhooks/get-webhooks"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /management/webhooks","href":"/api-v2-reference/management-api--webhooks/create-a-webhook"},{"title":"Get a webhook","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /management/webhooks/{id}","href":"/api-v2-reference/management-api--webhooks/get-a-webhook"},{"title":"Update a webhook","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /management/webhooks/{id}","href":"/api-v2-reference/management-api--webhooks/update-a-webhook"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml delete /management/webhooks/{id}","href":"/api-v2-reference/management-api--webhooks/delete-a-webhook"}]},{"group":"Organizations API - Teams","pages":[{"title":"Get teams","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /organizations/{organizationId}/teams","href":"/api-v2-reference/organizations-api--teams/get-teams"},{"title":"Create a team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /organizations/{organizationId}/teams","href":"/api-v2-reference/organizations-api--teams/create-a-team"},{"title":"Get a team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /organizations/{organizationId}/teams/{id}","href":"/api-v2-reference/organizations-api--teams/get-a-team"},{"title":"Update a team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /organizations/{organizationId}/teams/{id}","href":"/api-v2-reference/organizations-api--teams/update-a-team"},{"title":"Delete a team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml delete /organizations/{organizationId}/teams/{id}","href":"/api-v2-reference/organizations-api--teams/delete-a-team"}]},{"group":"Organizations API - Workspace Teams","pages":[{"title":"Get Workspace teams","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /organizations/{organizationId}/workspace-teams","href":"/api-v2-reference/organizations-api--workspace-teams/get-workspace-teams"},{"title":"Update a Workspace team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml put /organizations/{organizationId}/workspace-teams","href":"/api-v2-reference/organizations-api--workspace-teams/update-a-workspace-team"},{"title":"Create a Workspace team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /organizations/{organizationId}/workspace-teams","href":"/api-v2-reference/organizations-api--workspace-teams/create-a-workspace-team"},{"title":"Delete a Workspace team","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml delete /organizations/{organizationId}/workspace-teams","href":"/api-v2-reference/organizations-api--workspace-teams/delete-a-workspace-team"}]},{"group":"Organizations API - Users","pages":[{"title":"Get users","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml get /organizations/{organizationId}/users","href":"/api-v2-reference/organizations-api--users/get-users"},{"title":"Create a user","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml post /organizations/{organizationId}/users","href":"/api-v2-reference/organizations-api--users/create-a-user"},{"title":"Update a user","deprecated":null,"version":null,"openapi":"/api-v2-reference/openapi.yml patch /organizations/{organizationId}/users","href":"/api-v2-reference/organizations-api--users/update-a-user"}]}]},{"tab":"API v3 Reference (Private Beta)","hidden":true,"pages":[{"title":"API v3 Reference (Private Beta)","href":"/api-v3-reference/introduction"}]}]},"basePath":"","title":"Upload Private File - Documentation - Formbricks","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Do6EtGSl.js","utils-id4tQ6My.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Byrixac4.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-nakYa3Zl.js","snippetPresets-Bq-pUS7h.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-CujTC_9K.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-FneVUsVu.js","shallow-DY9WpUCz.js","getApiPlaygroundDisplay-Bz8WpPfA.js","CodeSnippet-DgCuJg4G.js","CodeSnippets-Dub9c4T0.js","Page-CePXnjd1.js","getPastedJson-xdI8y2XB.js","icon--yVw5vkr.js","MethodPill-C47t7MdS.js","DuplicateIcon-BzwJ2LeC.js","createIcon-BzggGy84.js","DynamicMarkdown-AlxJK8VR.js","SectionHeading-CMlwFxdK.js","axios-vUo_bRtp.js","Markdown-BNgNrPsi.js","clsx-apD-Q0Oo.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-qmLwQyWY.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Dc4qTkWx.js"]}