Upload to YouTube from n8n
Post videos and Shorts to YouTube from any n8n workflow with two HTTP requests. Set the title, description, privacy, tags and playlists, schedule the publish time, and send the same video to TikTok, Instagram and 14 more platforms in the same request.
n8n HTTP Request node · Free plan · Official YouTube API
n8n's YouTube node or ShortSync?
n8n on its own
- n8n's own YouTube node can upload videos, and it's a good fit if you only post to YouTube.
- It signs in with your own Google Cloud OAuth app, so you set up a project, enable the YouTube Data API and configure the consent screen.
- While that consent screen is in Testing, Google's refresh tokens expire after 7 days, so a scheduled workflow stops until you sign in again or publish the app.
n8n with ShortSync
- Connect YouTube to ShortSync once. No Google Cloud project or consent screen.
- Schedule the publish time in the request; ShortSync uploads and publishes it then.
- Post the same video to TikTok, Instagram Reels and 14 more platforms with one request, each with its own caption.
- Get a webhook when the video is live, with its YouTube link.
Set it up in n8n
Connect YouTube to ShortSync once, then two HTTP requests per post. Publish now, schedule it, or save a draft to check first.
- 1
Create a ShortSync API key
In ShortSync, connect the account once, then open Settings → API & MCP, click Create API key and pick the workspace. In n8n, add a Header Auth credential with the name Authorization and the value Bearer followed by your key.
- 2
Find your YouTube connection id
Run an HTTP Request node once with GET on the connections endpoint and copy the id of your YouTube channel.
GET https://api.shortsync.app/v1/connections
- 3
Upload the video
Add an HTTP Request node: method POST, the uploads URL, Header Auth credential. Send source_url as a public direct-download link, for example {{ $json.video_url }} from an earlier node. Add an Idempotency-Key header so a retry doesn't import the file twice. If the file is already binary data in n8n, call POST /uploads with an empty body and PUT the file to the returned presigned_url instead.
POST https://api.shortsync.app/v1/uploads { "source_url": "https://example-bucket.s3.amazonaws.com/clips/recipe.mp4" } - 4
Create the YouTube post
Add a second HTTP Request node with POST on the posts URL. Map the upload_id from the previous node and set YouTube's title (up to 100 characters), description and options in the target. Use publish_mode immediate to post now, scheduled with scheduled_for, or draft to check it in ShortSync first. Add more targets to post the same video elsewhere.
POST https://api.shortsync.app/v1/posts { "upload_id": "{{ $json.upload_id }}", "publish_mode": "scheduled", "scheduled_for": "2026-11-10T15:00:00Z", "targets": [ { "connection_id": "<YouTube connection id>", "title": "5-minute miso soup", "description": "Full recipe below.\n\nIngredients: ...", "platform_options": { "youtube": { "privacy_status": "public", "made_for_kids": false, "tags": ["recipe", "miso soup"], "playlist_ids": ["<playlist id>"] } } } ] } - 5
React when it's live
Start a second workflow with a Webhook node (POST), add its Production URL as a webhook in Settings → API & MCP with post.published and post.failed, and click Send test event. The event carries data.post.url, the video's YouTube link, and data.post.error when it fails.
YouTube settings you can send
Put these in platform_options.youtube on the YouTube target.
| Field | What it does |
|---|---|
| privacy_status | public, unlisted or private (default private). |
| made_for_kids | YouTube's made-for-kids flag. |
| notify_subscribers | Email subscribers when it publishes. |
| tags | Video tags. |
| playlist_ids | Add the upload to playlists. |
| category_id | YouTube category, for example "22" for People & Blogs. |
| contains_synthetic_media | YouTube's altered or AI-generated content disclosure. |
| upload_early_for_review | Upload as private now and switch to the chosen privacy at scheduled_for. |
YouTube workflows to build
Schedule a week of Shorts from a Google Sheet
Google Sheets trigger on a new row with a video link, title and date, then the upload and post requests with publish_mode scheduled.
Write titles and descriptions with AI
Send the video's topic or transcript to an OpenAI or Anthropic node, map its answer to title and description, and create the post as a draft to approve in ShortSync.
Share the video when it goes live
Webhook node on post.published, then post data.post.url to Slack, Discord or a newsletter tool, or write it back to your sheet.
Cross-post YouTube Shorts to TikTok and Reels
Add TikTok and Instagram targets to the same request so one workflow posts the vertical video everywhere, each with its own caption.
Good to know
- A vertical video up to 3 minutes goes out as a Short; longer or horizontal videos post as regular videos.
- YouTube posts need a video: text, image and carousel uploads are rejected for YouTube targets.
- ShortSync can add a first comment on YouTube (first_comment in the request).
- Works the same on n8n Cloud and self-hosted n8n. Webhooks need n8n reachable over https.
Frequently asked questions
Post to YouTube from n8n
Free plan, API key in a minute, official platform APIs.
Official APIs and approved publishing partners
Prefer a walkthrough? Book a demo with Hilma