Create a short-lived upload URL that can receive files without exposing the API key.The URL is managed by the FiveMesh API. Uploads still enforce path scope, file limits, MIME allow-lists and metadata rules.Requires cdn:write.
The upload URL is not a direct storage URL. Send the upload request to the returned uploadUrl.
number
Optional lifetime in seconds. The API clamps it to the configured maximum.
string
Optional path lock and default upload folder. Uploaded files must stay under this folder. If the upload request omits path, files are stored here.
number
Optional maximum number of files accepted by the URL. Defaults to 1.
number
Optional maximum size per file, in bytes.
string
Optional comma-separated allow-list, such as image/png,image/jpeg.
boolean
Optional flag that allows the upload request to include metadata.
boolean
Optional flag to generate a random stored filename while keeping the extension.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"FiveMesh Docs","description":"Documentation for FiveMesh, the cloud infrastructure platform for FiveM servers: FiveMesh CDN for images, phone media and NUI assets, FiveMesh Cache for resource downloads through fileserver_add and adhesive_cdnKey, managed PMA-Voice hosting, server event logging, Discord community Portals and the FiveMesh API and FiveM SDK.","colors":{"primary":"#20221F","light":"#EEEEE7","dark":"#20221F"},"logo":{"light":"https://mintcdn.com/fivemesh/qay7LPDU94tg_FaL/logo/fivemesh-light.svg?fit=max\u0026auto=format\u0026n=qay7LPDU94tg_FaL\u0026q=85\u0026s=18ff27075f9e1b8a7b80ac6f116d8902","dark":"https://mintcdn.com/fivemesh/qay7LPDU94tg_FaL/logo/fivemesh-dark.svg?fit=max\u0026auto=format\u0026n=qay7LPDU94tg_FaL\u0026q=85\u0026s=11fd2f242b18b1459f6c95b840241041","href":"https://fivemesh.io"},"favicon":"https://mintcdn.com/fivemesh/qay7LPDU94tg_FaL/favicons/favicon.ico?fit=max\u0026auto=format\u0026n=qay7LPDU94tg_FaL\u0026q=85\u0026s=0ac5f6a5a2271e662aaec52609262a1a","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://api.fivemesh.io/v1"}},"appearance":{"default":"dark","strict":false},"background":{"color":{"light":"#F7F6F2","dark":"#121310"}},"navbar":{"links":[{"href":"https://discord.gg/wBJamWETxr","label":"Support"}],"primary":{"type":"button","label":"Open dashboard","href":"https://app.fivemesh.io"}},"footer":{"socials":{"github":"https://github.com/FiveMesh","x":"https://x.com/fivemesh_","discord":"https://discord.gg/wBJamWETxr"}},"seo":{"organization":{"id":"https://fivemesh.io/#organization","name":"FiveMesh","url":"https://fivemesh.io/","sameAs":["https://github.com/FiveMesh","https://x.com/fivemesh_","https://www.trustpilot.com/review/fivemesh.io"]}},"fonts":{"family":"Geist"},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"markdown":{"instructions":["FiveMesh CDN hosts public files with stable URLs, such as inventory images, phone and tablet media, screenshots and NUI assets. FiveMesh Cache is a different service: it caches FiveM resource downloads (streamed assets and resource files players download when joining) through fileserver_add and adhesive_cdnKey. When a user asks for a \"FiveM CDN\", check which of the two they need.","For FiveMesh Cache, tell users to copy the server.cfg block generated in the dashboard. Never construct the Cache URL from a cfx.re join code, and never reuse another server's adhesive_cdnKey.","Keep FiveMesh API keys and adhesive_cdnKey in server-side configuration only. Use scoped upload URLs for client or NUI uploads."]},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://fivemesh.io"},{"anchor":"Dashboard","icon":"layout-dashboard","href":"https://app.fivemesh.io"},{"anchor":"Status","icon":"signal","href":"https://status.fivemesh.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fivemesh","hasAudioNarration":false,"actualSubdomain":"fivemesh","customDomains":["docs.fivemesh.io"],"gitSource":{"type":"github","owner":"fivemesh","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af514927046dee1c39d0726","clientVersion":"0.0.4128","searchFilterCounts":[{"language":"default","tag":"Overview","count":27},{"language":"default","tag":"API Reference","count":18},{"language":"default","tag":"FiveMesh CDN","count":13},{"language":"default","tag":"SDK","count":7},{"language":"default","tag":"Tools","count":6},{"language":"default","tag":"FiveMesh Backup","count":6},{"language":"default","tag":"FiveM SDK","count":6},{"language":"default","tag":"FiveMesh Logs","count":5},{"language":"default","tag":"Dashboard","count":5},{"language":"default","tag":"FiveMesh Cache","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"styles.css","content":".tryit-button{background-color:#20221F;color:#F7F6F2}.dark .tryit-button{background-color:#EEEEE7;color:#121310}.tryit-button .icon{background-color:currentColor}"}],"page":{"pagePath":"api-reference/cdn-endpoints/create-upload-url","slug":"/api-reference/cdn-endpoints/create-upload-url","pageMetadata":{"title":"Create an upload URL","description":"Create a short-lived URL that can upload files without exposing an API key.","api":"GET /presigned-url","href":"/api-reference/cdn-endpoints/create-upload-url"},"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: \"Create a short-lived URL that can upload files without exposing an API key.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Info,ParamField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Info)_missingMdxReference(`Info`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Create a short-lived upload URL that can receive files without exposing the API key.`}),`\n`,_jsx(_components.p,{children:`The URL is managed by the FiveMesh API. Uploads still enforce path scope, file limits, MIME allow-lists and metadata rules.`}),`\n`,_jsxs(_components.p,{children:[`Requires `,_jsx(_components.code,{children:`cdn:write`}),`.`]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`The upload URL is not a direct storage URL. Send the upload request to the returned `,_jsx(_components.code,{children:`uploadUrl`}),`.`]})}),`\n`,_jsx(ParamField,{query:`expiresIn`,type:`number`,id:`param-expires-in`,children:_jsx(_components.p,{children:`Optional lifetime in seconds. The API clamps it to the configured maximum.`})}),`\n`,_jsx(ParamField,{query:`path`,type:`string`,id:`param-path`,children:_jsxs(_components.p,{children:[`Optional path lock and default upload folder. Uploaded files must stay under this folder. If the upload request omits `,_jsx(_components.code,{children:`path`}),`, files are stored here.`]})}),`\n`,_jsx(ParamField,{query:`maxFiles`,type:`number`,id:`param-max-files`,children:_jsxs(_components.p,{children:[`Optional maximum number of files accepted by the URL. Defaults to `,_jsx(_components.code,{children:`1`}),`.`]})}),`\n`,_jsx(ParamField,{query:`maxFileSize`,type:`number`,id:`param-max-file-size`,children:_jsx(_components.p,{children:`Optional maximum size per file, in bytes.`})}),`\n`,_jsx(ParamField,{query:`allowedMimeTypes`,type:`string`,id:`param-allowed-mime-types`,children:_jsxs(_components.p,{children:[`Optional comma-separated allow-list, such as `,_jsx(_components.code,{children:`image/png,image/jpeg`}),`.`]})}),`\n`,_jsx(ParamField,{query:`allowCustomMetadata`,type:`boolean`,id:`param-allow-custom-metadata`,children:_jsx(_components.p,{children:`Optional flag that allows the upload request to include metadata.`})}),`\n`,_jsx(ParamField,{query:`randomizeName`,type:`boolean`,id:`param-randomize-name`,children:_jsx(_components.p,{children:`Optional flag to generate a random stored filename while keeping the extension.`})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://api.fivemesh.io/v1/presigned-url?path=screenshots\u0026maxFiles=1\u0026allowedMimeTypes=image/png,image/jpeg\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$FIVEMESH_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"uploadUrl\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://api.fivemesh.io/v1/presigned-url/UPLOAD_TOKEN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"POST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"token\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"UPLOAD_TOKEN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"expiresAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-06-16T12:00:00.000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"maxFiles\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"maxFileSize\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`104857600`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"allowedMimeTypes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"image/png\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"image/jpeg\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"allowCustomMetadata\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"screenshots\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"requestId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"req_...\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The response uses `,_jsx(_components.code,{children:`Cache-Control: no-store`}),` because the upload URL is a credential.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create an upload URL","description":"Create a short-lived URL that can upload files without exposing an API key.","api":"GET /presigned-url","href":"/api-reference/cdn-endpoints/create-upload-url"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{},"endpoint":{"title":"Create an upload URL","path":"/presigned-url","servers":[{"url":"https://api.fivemesh.io/v1"}],"method":"get","request":{"security":[{"title":"Bearer Auth","parameters":{"header":{"Authorization":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."}},"query":{},"cookie":{}}}],"parameters":{"query":{"expiresIn":{"schema":[{"type":"number","description":"Optional lifetime in seconds. The API clamps it to the configured maximum."}]},"path":{"schema":[{"type":"string","description":"Optional path lock and default upload folder. Uploaded files must stay under this folder. If the upload request omits `path` , files are stored here."}]},"maxFiles":{"schema":[{"type":"number","description":"Optional maximum number of files accepted by the URL. Defaults to `1` ."}]},"maxFileSize":{"schema":[{"type":"number","description":"Optional maximum size per file, in bytes."}]},"allowedMimeTypes":{"schema":[{"type":"string","description":"Optional comma-separated allow-list, such as `image/png,image/jpeg` ."}]},"allowCustomMetadata":{"schema":[{"type":"boolean","description":"Optional flag that allows the upload request to include metadata."}]},"randomizeName":{"schema":[{"type":"boolean","description":"Optional flag to generate a random stored filename while keeping the extension."}]}},"header":{},"cookie":{},"path":{}},"body":{}},"response":{},"deprecated":false}},"jsLinks":[],"subdomain":"fivemesh","siteName":"FiveMesh Docs","title":"Create an upload URL - FiveMesh Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-01T20:03:02.668Z","originalFileLocation":"api-reference/cdn-endpoints/create-upload-url.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=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a short-lived URL that can upload files without exposing an API key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FiveMesh Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_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/fivemesh/mbe7hGOmoQYq4PHM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create an upload URL - FiveMesh Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a short-lived URL that can upload files without exposing an API key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FiveMesh Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fivemesh.mintlify.site/_mintlify/api/og/v2?division=FiveMesh+CDN\u0026amp;title=Create+an+upload+URL\u0026amp;description=Create+a+short-lived+URL+that+can+upload+files+without+exposing+an+API+key.\u0026amp;theme=ec4cfb45a0d87560829c882b\u0026amp;signature=cce838d4098fc7054ea5bf439d0fce155181853639bd38069f586984ba10d331\">\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=\"Create an upload URL - FiveMesh Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a short-lived URL that can upload files without exposing an API key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fivemesh.mintlify.site/_mintlify/api/og/v2?division=FiveMesh+CDN\u0026amp;title=Create+an+upload+URL\u0026amp;description=Create+a+short-lived+URL+that+can+upload+files+without+exposing+an+API+key.\u0026amp;theme=ec4cfb45a0d87560829c882b\u0026amp;signature=cce838d4098fc7054ea5bf439d0fce155181853639bd38069f586984ba10d331\">\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/fivemesh/mbe7hGOmoQYq4PHM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FiveMesh Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#20221F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/cdn-endpoints/create-upload-url.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://fivemesh.io/#organization\",\"name\":\"FiveMesh\",\"url\":\"https://fivemesh.io/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fivemesh/qay7LPDU94tg_FaL/logo/fivemesh-light.svg?fit=max\u0026auto=format\u0026n=qay7LPDU94tg_FaL\u0026q=85\u0026s=18ff27075f9e1b8a7b80ac6f116d8902\"},\"sameAs\":[\"https://github.com/FiveMesh\",\"https://x.com/fivemesh_\",\"https://www.trustpilot.com/review/fivemesh.io\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fivemesh.io#website\",\"name\":\"FiveMesh Docs\",\"url\":\"https://docs.fivemesh.io\",\"publisher\":{\"@id\":\"https://fivemesh.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url#webpage\",\"url\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url\",\"name\":\"Create an upload URL\",\"description\":\"Create a short-lived URL that can upload files without exposing an API key.\",\"dateModified\":\"2026-10-01T20:03:02.668Z\",\"isPartOf\":{\"@id\":\"https://docs.fivemesh.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"FiveMesh CDN\",\"item\":\"https://docs.fivemesh.io/api-reference/cdn\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create an upload URL\",\"item\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url#apireference\",\"headline\":\"Create an upload URL\",\"name\":\"Create an upload URL\",\"description\":\"Create a short-lived URL that can upload files without exposing an API key.\",\"url\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fivemesh.io/api-reference/cdn-endpoints/create-upload-url#webpage\"},\"dateModified\":\"2026-10-01T20:03:02.668Z\",\"publisher\":{\"@id\":\"https://fivemesh.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fivemesh.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FiveMesh Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"FiveMesh\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/cdn-endpoints/create-upload-url.md","siteName":"FiveMesh Docs","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://fivemesh.io"},{"anchor":"Dashboard","icon":"layout-dashboard","href":"https://app.fivemesh.io"},{"anchor":"Status","icon":"signal","href":"https://status.fivemesh.io"}]},"tabs":[{"tab":"Overview","icon":"book-open","pages":[{"title":"Overview","href":""}]},{"tab":"API Reference","icon":"square-terminal","pages":[{"title":"FiveMesh API reference","sidebarTitle":"API reference","icon":"square-terminal","href":"/api-reference/introduction"},{"title":"Authentication","icon":"key-round","href":"/api-reference/authentication"},{"title":"Inspect an API key","api":"GET /whoami","href":"/api-reference/whoami"},{"group":"FiveMesh CDN","pages":[{"title":"FiveMesh CDN API","icon":"radio-tower","href":"/api-reference/cdn"},{"title":"List objects","api":"GET /objects","href":"/api-reference/cdn-endpoints/list-objects"},{"title":"Upload one object","api":"POST /objects","href":"/api-reference/cdn-endpoints/upload-object"},{"title":"Upload one Base64 object","api":"POST /objects/base64","href":"/api-reference/cdn-endpoints/upload-base64-object"},{"title":"Bulk upload objects","api":"POST /objects/bulk","href":"/api-reference/cdn-endpoints/bulk-upload-objects"},{"title":"Delete one object","api":"DELETE /objects","href":"/api-reference/cdn-endpoints/delete-object"},{"title":"Bulk delete objects","api":"POST /objects/bulk-delete","href":"/api-reference/cdn-endpoints/bulk-delete-objects"},{"title":"Purge CDN objects","description":"Expire cached responses for specific CDN object paths without deleting the files.","api":"POST /objects/purge","href":"/api-reference/cdn-endpoints/purge-objects"},{"title":"Create an upload URL","api":"GET /presigned-url","href":"/api-reference/cdn-endpoints/create-upload-url"},{"title":"Upload with an upload URL","description":"Upload files through a scoped URL without sending an API key.","api":"POST /presigned-url/{token}","href":"/api-reference/cdn-endpoints/upload-with-url"}]},{"group":"FiveMesh Logs","pages":[{"title":"FiveMesh Logs API","icon":"scroll-text","href":"/api-reference/logs"},{"title":"Ingest log events","icon":"cloud-upload","href":"/api-reference/logs-ingestion"},{"title":"Query log events","api":"POST /logs/query","href":"/api-reference/logs-query"}]},{"group":"FiveMesh Cache","pages":[{"title":"FiveMesh Cache API","icon":"hard-drive","href":"/api-reference/cache"}]},{"group":"FiveMesh Voice","pages":[{"title":"FiveMesh Voice API","icon":"mic","href":"/api-reference/voice"}]}]},{"tab":"Tools","icon":"wrench","pages":[{"title":"Tools","href":"/backup/overview"}]},{"tab":"SDK","icon":"code","pages":[{"title":"SDK","href":"/sdk/introduction"}]}]},"basePath":"","title":"Create an upload URL - FiveMesh Docs","buildId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","deploymentId":"dpl_5tKr6cUUeuVJdEZ9JAEY3h4soMJ8","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-DbeN8Wo6.js","utils-CwSb5Doc.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BmREeM3N.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-AYjWerCj.js","snippetPresets-QD4ULQlp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-Digj5cjF.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CiHrzluR.js","shallow-D7h7pFGg.js","getApiPlaygroundDisplay-mlxkpAUf.js","CodeSnippet-D2rH5lZI.js","CodeSnippets-B53ulOaL.js","Page-CqcDm2To.js","getPastedJson-DxGeNMih.js","icon-BHbyrebp.js","MethodPill-C7F_KEEJ.js","DuplicateIcon-j3c5-73z.js","createIcon-OvCnyFqD.js","DynamicMarkdown-DpAS3GCb.js","SectionHeading-DMPpdrvW.js","axios-vUo_bRtp.js"]}