Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"PostOnce Help Center","description":"Help center and developer documentation for PostOnce: connect social accounts, cross-post automatically, schedule posts, fix failed posts, and use the Public API and MCP.","colors":{"primary":"#007BFF","light":"#4EA5FF","dark":"#007BFF"},"logo":{"light":"https://mintcdn.com/postonce-87a0d366/KRR9BBCaLhGoz62D/images/logo.png?fit=max\u0026auto=format\u0026n=KRR9BBCaLhGoz62D\u0026q=85\u0026s=7d4d406a172ad9a12c8dba9b2bb6919b","dark":"https://mintcdn.com/postonce-87a0d366/KRR9BBCaLhGoz62D/images/logo.png?fit=max\u0026auto=format\u0026n=KRR9BBCaLhGoz62D\u0026q=85\u0026s=7d4d406a172ad9a12c8dba9b2bb6919b","href":"https://postonce.to"},"favicon":"https://mintcdn.com/postonce-87a0d366/Co518VUzuPi1jYQi/images/favicon.ico?fit=max\u0026auto=format\u0026n=Co518VUzuPi1jYQi\u0026q=85\u0026s=02cc71e5502e3e356808e0f2a0ba34e7","api":{"playground":{"display":"interactive"},"examples":{"defaults":"all","autogenerate":true},"url":"full"},"appearance":{"default":"light"},"navbar":{"links":[{"href":"https://postonce.featurebase.app/changelog","label":"Changelog"},{"href":"https://postonce.featurebase.app/","label":"Feedback"},{"href":"https://postonce.featurebase.app/roadmap","label":"Roadmap"},{"href":"https://postonce.to/contact","label":"Contact support"}],"primary":{"type":"button","label":"Dashboard","href":"https://postonce.to/dashboard"}},"footer":{"socials":{"x":"https://x.com/PostOnce_to"}},"seo":{"indexing":"navigable"},"contextual":{"options":["copy","view"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"postonce-87a0d366","hasAudioNarration":false,"actualSubdomain":"postonce-87a0d366","customDomains":["docs.postonce.to"],"gitSource":{"type":"github","owner":"niyonx","repo":"postonce","deployBranch":"main","contentDirectory":"mintlify-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad98429f0657218b02bab5f","collectionId":"df989bd0-c673-409b-8c91-10b00bce2128","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad98429f0657218b02bab5f"},"entitlements":{},"buildId":"6ad98429f0657218b02bab5f","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"Help Center","count":41},{"language":"default","tag":"API Reference","count":36},{"language":"default","tag":"Platform guides","count":11},{"language":"default","tag":"Workflows","count":10},{"language":"default","tag":"Getting started","count":8},{"language":"default","tag":"Posts","count":7},{"language":"default","tag":"Guides","count":5},{"language":"default","tag":"Account and billing","count":5},{"language":"default","tag":"Growth guide","count":5},{"language":"default","tag":"Integrations and analytics","count":4}]},"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/create-upload-url","slug":"/api-reference/create-upload-url","pageMetadata":{"title":"Create upload URL","description":"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/media/uploads","href":"/api-reference/create-upload-url","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: \"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\"\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":"Create upload URL","description":"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/media/uploads","href":"/api-reference/create-upload-url","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create upload URL","description":"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.","requestBody":"b963b21d-bb86-4cd7-b66b-a356d0042b71","responses":{"201":"59896e6f-038e-47f4-af72-86b0f16e4fbb","400":"4efd8fdf-7cb2-46d4-bb8c-cdd1a05c5f94","401":"a0c1a387-76e2-453a-8585-ee417da0b97a"},"method":"post","type":"path","servers":["00ee0b21-676d-4230-83bb-42d479e2edc5"],"security":["26ff0839-bc03-4750-9b76-59780ac7ea1a"],"path":"/v1/media/uploads","baseUrlOptions":["https://postonce.to/api/public"],"title":"Create upload URL","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","urlDisplay":"full"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["filename","content_type"],"properties":{"filename":{"type":"string","description":"Original file name including extension.","example":"launch-image.png","isRequired":true,"uniqueKey":"filename","typeLabel":"string"},"content_type":{"type":"string","description":"MIME type of the file being uploaded.","enum":["image/jpeg","image/png","image/webp","video/mp4","video/quicktime","video/webm"],"example":"image/png","isRequired":true,"uniqueKey":"content_type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"image":{"title":"image","value":{"filename":"launch-image.png","content_type":"image/png"}},"video":{"title":"video","value":{"filename":"teaser.mp4","content_type":"video/mp4"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"59896e6f-038e-47f4-af72-86b0f16e4fbb":{"description":"Signed upload URL created successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"content_type":{"type":"string","enum":["image/jpeg","image/png","image/webp","video/mp4","video/quicktime","video/webm"],"example":"image/png","uniqueKey":"data.content_type","typeLabel":"enum\u003cstring>"},"media_id":{"type":"string","example":"cHVibGljLWFwaS91c2VyLTEyMy8xNzQzNDM0NTY3LWxhdW5jaC1pbWFnZS5wbmc","uniqueKey":"data.media_id","typeLabel":"string"},"path":{"type":"string","example":"public-api/user-123/1743434567-launch-image.png","uniqueKey":"data.path","typeLabel":"string"},"upload":{"type":"object","properties":{"path":{"type":"string","example":"public-api/user-123/1743434567-launch-image.png","uniqueKey":"data.upload.path","typeLabel":"string"},"token":{"type":"string","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","uniqueKey":"data.upload.token","typeLabel":"string"},"signedUrl":{"type":"string","example":"https://swgrcbzlaeshsmygubik.supabase.co/storage/v1/object/upload/sign/social-media/public-api/user-123/1743434567-launch-image.png?token=...","uniqueKey":"data.upload.signedUrl","typeLabel":"string"}},"uniqueKey":"data.upload","typeLabel":"object"}},"uniqueKey":"data","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"imageUpload":{"title":"imageUpload","value":{"data":{"content_type":"image/png","media_id":"cHVibGljLWFwaS91c2VyLTEyMy8xNzQzNDM0NTY3LWxhdW5jaC1pbWFnZS5wbmc","path":"public-api/user-123/1743434567-launch-image.png","upload":{"path":"public-api/user-123/1743434567-launch-image.png","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","signedUrl":"https://swgrcbzlaeshsmygubik.supabase.co/storage/v1/object/upload/sign/social-media/public-api/user-123/1743434567-launch-image.png?token=..."}}}}},"exampleType":"examples"}},"exampleType":"examples"},"4efd8fdf-7cb2-46d4-bb8c-cdd1a05c5f94":{"description":"Missing or invalid payload fields.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"workflow_limit_reached","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"You have reached the maximum number of workflows for your plan.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"hint":{"type":"string","description":"Suggested action to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalidFilename":{"title":"invalidFilename","value":{"error":{"code":"invalid_filename","message":"filename is required."}}}},"exampleType":"examples"}},"exampleType":"examples"},"a0c1a387-76e2-453a-8585-ee417da0b97a":{"description":"Missing, invalid, revoked, or expired API key.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","example":"invalid_api_key","uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","example":"Invalid API key.","uniqueKey":"error.message","typeLabel":"string"},"hint":{"type":"string","description":"Suggested action to resolve the error.","uniqueKey":"error.hint","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_api_key","message":"Invalid API key.","hint":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"26ff0839-bc03-4750-9b76-59780ac7ea1a":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Scoped API key issued in PostOnce Settings. OAuth authorization grants are not currently supported.","x-scopes":{"accounts:read":"List and read connected accounts.","accounts:write":"Connect and disconnect social accounts.","media:read":"Read uploaded media.","media:write":"Upload media.","posts:read":"Read posts and unpublished drafts.","posts:write":"Create, update, publish, cancel, retry, and delete posts and drafts.","workflows:read":"List and read crossposting workflows.","workflows:write":"Create, update, and delete crossposting workflows."},"scopes":[],"schemeName":"bearerAuth"}}},"servers":{"00ee0b21-676d-4230-83bb-42d479e2edc5":{"url":"https://postonce.to/api/public"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Scoped API key issued in PostOnce Settings. OAuth authorization grants are not currently supported.","x-scopes":{"accounts:read":"List and read connected accounts.","accounts:write":"Connect and disconnect social accounts.","media:read":"Read uploaded media.","media:write":"Upload media.","posts:read":"Read posts and unpublished drafts.","posts:write":"Create, update, publish, cancel, retry, and delete posts and drafts.","workflows:read":"List and read crossposting workflows.","workflows:write":"Create, update, and delete crossposting workflows."},"scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Scoped API key issued in PostOnce Settings. OAuth authorization grants are not currently supported.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/public-api.yaml"},"subdomain":"postonce-87a0d366","siteName":"PostOnce Help Center","title":"Create upload URL - PostOnce Help Center","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"originalFileLocation":"api-reference/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=\"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=\"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\">\u003cmeta data-mint-head name=\"application-name\" content=\"PostOnce Help Center\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_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/postonce-87a0d366/LQL07TSWdk7PF3mo/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create upload URL - PostOnce Help Center\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"PostOnce Help Center\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.postonce.to/api-reference/create-upload-url\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://postonce-87a0d366.mintlify.app/_mintlify/api/og/v2?division=Media\u0026amp;title=Create+upload+URL\u0026amp;description=Creates+a+signed+upload+URL+and+media_id.+Upload+raw+file+bytes+with+PUT+to+data.upload.signedUrl%2C+then+call+get_media+with+that+media_id+and+pass+the+returned+\u0026amp;theme=781718fef085352bc2e93d6a\u0026amp;signature=ba7b67831211c962bc4b4f5a241fc4172fb8c65432d4b5f06fba53190ee8d895\">\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 upload URL - PostOnce Help Center\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://postonce-87a0d366.mintlify.app/_mintlify/api/og/v2?division=Media\u0026amp;title=Create+upload+URL\u0026amp;description=Creates+a+signed+upload+URL+and+media_id.+Upload+raw+file+bytes+with+PUT+to+data.upload.signedUrl%2C+then+call+get_media+with+that+media_id+and+pass+the+returned+\u0026amp;theme=781718fef085352bc2e93d6a\u0026amp;signature=ba7b67831211c962bc4b4f5a241fc4172fb8c65432d4b5f06fba53190ee8d895\">\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/postonce-87a0d366/LQL07TSWdk7PF3mo/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"PostOnce Help Center\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#007BFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.postonce.to/api-reference/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/create-upload-url.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.postonce.to/#organization\",\"name\":\"PostOnce Help Center\",\"url\":\"https://docs.postonce.to\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/postonce-87a0d366/KRR9BBCaLhGoz62D/images/logo.png?fit=max\u0026auto=format\u0026n=KRR9BBCaLhGoz62D\u0026q=85\u0026s=7d4d406a172ad9a12c8dba9b2bb6919b\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.postonce.to#website\",\"name\":\"PostOnce Help Center\",\"url\":\"https://docs.postonce.to\",\"publisher\":{\"@id\":\"https://docs.postonce.to/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.postonce.to/api-reference/create-upload-url#webpage\",\"url\":\"https://docs.postonce.to/api-reference/create-upload-url\",\"name\":\"Create upload URL\",\"description\":\"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\",\"isPartOf\":{\"@id\":\"https://docs.postonce.to#website\"},\"breadcrumb\":{\"@id\":\"https://docs.postonce.to/api-reference/create-upload-url#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.postonce.to/api-reference/create-upload-url#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"PostOnce Help Center\",\"item\":\"https://docs.postonce.to\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create upload URL\",\"item\":\"https://docs.postonce.to/api-reference/create-upload-url\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.postonce.to/api-reference/create-upload-url#apireference\",\"headline\":\"Create upload URL\",\"name\":\"Create upload URL\",\"description\":\"Creates a signed upload URL and media_id. Upload raw file bytes with PUT to data.upload.signedUrl, then call get_media with that media_id and pass the returned data.public_url as media[].url when creating a post or draft. URL creation alone does not upload bytes. Treat the signed URL as a temporary credential; do not open it in a browser.\",\"url\":\"https://docs.postonce.to/api-reference/create-upload-url\",\"mainEntityOfPage\":{\"@id\":\"https://docs.postonce.to/api-reference/create-upload-url#webpage\"},\"publisher\":{\"@id\":\"https://docs.postonce.to/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.postonce.to#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"PostOnce Help Center\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"PostOnce Help Center","nav":{"global":null,"tabs":[{"tab":"Help Center","icon":"life-buoy","pages":[{"title":"Help Center","href":"/help"}]},{"tab":"API Reference","icon":"code","groups":[{"group":"Getting started","pages":[{"title":"Introduction","href":"/introduction"},{"title":"Authentication","href":"/getting-started/authentication"},{"title":"Response format","href":"/getting-started/response-format"},{"title":"Data structures","href":"/getting-started/data-structures"},{"title":"Rate limits","href":"/getting-started/rate-limits"},{"title":"Errors","href":"/getting-started/errors"}]},{"group":"Guides","pages":[{"title":"Create your first post","href":"/guides/create-your-first-post"},{"title":"Schedule a post","href":"/guides/schedule-a-post"},{"title":"Create a workflow","href":"/guides/create-a-workflow"},{"title":"Save RSS updates as drafts","href":"/guides/rss-to-draft"},{"title":"Partner integration","href":"/guides/partner-integration"}]},{"group":"MCP","pages":[{"title":"PostOnce MCP","href":"/mcp/docs"}]},{"group":"Accounts","pages":[{"title":"List accounts","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/accounts","href":"/api-reference/list-accounts"},{"title":"Connect account","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/accounts/connect/{platform}","href":"/api-reference/connect-account"},{"title":"Disconnect account","description":"Removes PostOnce access to an owned social account. The account is disconnected with its credentials cleared (the response returns deleted=false and disconnected=true); its posts and history are kept, and reconnecting the same account restores posting. Farcaster, Nostr, and Telegram records are also disabled. Farcaster signer revocation requires a separate provider step; Nostr remote-signer logout is best effort; @PostOnceBot leaves a Telegram channel on a best-effort basis when no other PostOnce account uses it. This does not delete published social content.","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml delete /v1/accounts/{id}","href":"/api-reference/disconnect-account"}]},{"group":"Media","pages":[{"title":"Create upload URL","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/media/uploads","href":"/api-reference/create-upload-url"},{"title":"Get media","description":"Resolves a previously returned `media_id` into its storage path and public URL.","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/media/{id}","href":"/api-reference/get-media"}]},{"group":"Drafts","pages":[{"title":"List drafts","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/drafts","href":"/api-reference/list-drafts"},{"title":"Create draft","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/drafts","href":"/api-reference/create-draft"},{"title":"Get draft","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/drafts/{id}","href":"/api-reference/get-draft"},{"title":"Update draft","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml patch /v1/drafts/{id}","href":"/api-reference/update-draft"}]},{"group":"Posts","pages":[{"title":"List posts","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/posts","href":"/api-reference/list-posts"},{"title":"Create post","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/posts","href":"/api-reference/create-post"},{"title":"Get post","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/posts/{id}","href":"/api-reference/get-post"},{"title":"Update post","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml patch /v1/posts/{id}","href":"/api-reference/update-post"},{"title":"Delete post","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml delete /v1/posts/{id}","href":"/api-reference/delete-post"},{"title":"Publish now","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/posts/{id}/publish","href":"/api-reference/publish-now"},{"title":"Cancel post","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/posts/{id}/cancel","href":"/api-reference/cancel-post"}]},{"group":"Workflows","pages":[{"title":"List workflows","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/workflows","href":"/api-reference/list-workflows"},{"title":"Create a workflow","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml post /v1/workflows","href":"/api-reference/create-a-workflow"},{"title":"Get workflow","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/workflows/{id}","href":"/api-reference/get-workflow"},{"title":"Update a workflow","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml put /v1/workflows/{id}","href":"/api-reference/update-a-workflow"},{"title":"Delete a workflow","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml delete /v1/workflows/{id}","href":"/api-reference/delete-a-workflow"}]},{"group":"Analytics","pages":[{"title":"Get post analytics","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/analytics","href":"/api-reference/get-post-analytics"},{"title":"Get one post's analytics","deprecated":null,"version":null,"openapi":"/openapi/public-api.yaml get /v1/posts/{id}/analytics","href":"/api-reference/get-one-posts-analytics"}]},{"group":"Changelog","pages":[{"title":"v1 changelog","href":"/changelog/v1"}]}]}]},"title":"Create upload URL - PostOnce Help Center","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"]}