Upload video
upload_videoPublish a video to multiple social media platforms with scheduling, per-platform settings, and AI-generated captions.
Instructions
Publish a video to one or more platforms. Use videoPathOrUrl only for public/signed HTTPS URLs, or for absolute local paths when the MCP server runs on the same machine as the file. Hosted clients such as ChatGPT and claude.ai cannot publish attached files by passing /mnt/data, sandbox, or mounted local paths; for those files, ALWAYS call open_upload_studio first so the browser stages the video to Upload-Post/R2, then publishes it. videoBase64 is only for clients that can provide raw bytes directly and is capped by UPLOAD_POST_MAX_INLINE_MB (default 100). Returns a request_id you can poll with get_status. Supports per-platform overrides (tiktokPrivacyLevel, youtubePrivacyStatus, youtubePlaylistId, youtubeThumbnailUrl, youtubeTags, facebookPageId, instagramMediaType, etc.).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | Profile name (Upload-Post user). | |
| title | No | Caption / title. | |
| timezone | No | IANA timezone for scheduled date, e.g. 'Europe/Madrid'. | |
| platforms | Yes | Required array of platform identifiers, e.g. ['instagram']. Never pass a single string. | |
| addToQueue | No | Insert into the user's posting queue instead of publishing now. | |
| asyncUpload | No | Return immediately with request_id (default true). | |
| description | No | ||
| videoBase64 | No | Video bytes as base64 (or a data: URI). Provide this OR videoPathOrUrl. The server writes it to a temp file, uploads, then deletes it. Capped by UPLOAD_POST_MAX_INLINE_MB (default 100). | |
| autogenerate | No | If true, AI generates native per-platform title/description from the media and fills any field left empty. | |
| firstComment | No | ||
| scheduledDate | No | ISO 8601 date for scheduled publishing, e.g. '2026-12-25T10:00:00Z'. Omit for immediate post. | |
| videoFilename | No | Optional filename (e.g. 'clip.mp4') used only to pick the temp file extension when videoBase64 is given. Defaults to .mp4. | |
| videoPathOrUrl | No | Public/signed HTTPS URL of the video. Absolute local paths are supported only for local/self-hosted MCP clients sharing the same filesystem. Do not pass ChatGPT `/mnt/data` or sandbox paths; use open_upload_studio instead. | |
| maxPostsPerSlot | No | ||
| platformOptions | No | Platform-specific overrides as a flat object (camelCase keys), e.g. { tiktokPrivacyLevel: 'PUBLIC_TO_EVERYONE', youtubePrivacyStatus: 'public', youtubePlaylistId: 'PLxxxxxxxxxxxx', facebookPageId: '123' }. `youtubePlaylistId` may also be an array or a comma-separated list of playlist IDs to add the uploaded video to. | |
| autogenerateTitle | No | Generate only the title with AI. | |
| autogenerateLanguage | No | Force the AI output language (ISO code); omit to auto-detect from the media. | |
| autogenerateDescription | No | Generate only the description with AI. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | No |