Upload YouTube Shorts in Python:
YouTube Data API v3, Simplified
The YouTube Shorts API lets you upload Shorts programmatically through the YouTube Data API v3 videos.insert endpoint. Multi Upload Tool wraps it in one function call (upload, thumbnail, playlist, and scheduling) with no OAuth flow, no Google Cloud project, and no quota math.
quick start
Install. Connect. Upload. Three steps.
from multi_upload_tool import MultiUploadClient
client = MultiUploadClient(api_token="YOUR_API_TOKEN")
upload = client.uploads.upload( account_id=123, # numeric account ID from dashboard file_path="short.mp4", title="How to bake sourdough in 60s #shorts", tags=["shorts", "baking", "sourdough"], privacy_status="public", # or "private" / "unlisted" thumbnail_path="thumb.jpg", # optional custom 1080x1920 thumbnail)
print(upload)# {"success": True, "data": {"uploadId": 789, "status": "pending"}}import { MultiUploadClient } from "multi-upload-tool";
const client = new MultiUploadClient({ apiToken: "YOUR_API_TOKEN" });
const result = await client.uploads.upload({ accountId: 123, // numeric account ID from dashboard filePath: "./short.mp4", title: "How to bake sourdough in 60s #shorts", tags: ["shorts", "baking", "sourdough"], privacyStatus: "public", // "private" | "unlisted" | "public" thumbnailPath: "./thumb.jpg", // optional custom thumbnail scheduledFor: "2026-04-01T18:00:00Z", // optional scheduling});
console.log(result);// { success: true, data: { uploadId: 789, status: "pending" } }Also available: call the REST endpoint directly. Full SDK docs →
thumbnails & playlists
Custom thumbnails + playlist assignment in one call
Most schedulers don't support custom thumbnails for Shorts. We do. Upload a 1080×1920 image and assign the Short to a playlist in the same API call, using YouTube Data API v3.
Custom thumbnails per Short
Stand out in the Shorts shelf with a custom 1080×1920 thumbnail. Increases tap-through rate vs. auto-generated stills.
Automatic playlist assignment
Group related Shorts into series. Viewers who find one Short see the full playlist, compounding session time and algorithm signals.
SEO metadata per Short
Set unique titles (100 chars), descriptions, tags, and category ID. YouTube Search indexes Shorts: proper metadata means search visibility.
Private → Public scheduling
Upload as private, schedule the visibility flip. Useful for coordinated launches, content calendars, and embargo-based publishing.
from multi_upload_tool import MultiUploadClient
client = MultiUploadClient(api_token="YOUR_API_TOKEN")
# Upload Short with custom thumbnail + playlist assignmentupload = client.uploads.upload( account_id=123, file_path="short.mp4", title="30 Days of Cooking Tips - Day 1 #shorts", tags=["shorts", "cooking", "tips"], privacy_status="public", thumbnail_path="thumbnail_day1.jpg", # 1080×1920 JPEG extra={ "playlistId": "PLxxxxxxxxxxxxxxxx", # your playlist ID "categoryId": "26", # YouTube category: Howto & Style "madeForKids": False, })
print(upload)# {"success": True, "data": {"uploadId": 790, "status": "pending"}}youtube data api v3
Upload a YouTube Short with the YouTube Data API v3 in Python
Here's the official, do-it-yourself path with google-api-python-client: authorize with OAuth 2.0, then call videos.insert with a resumable MediaFileUpload. Add #Shorts to the title and upload a vertical 9:16 clip (up to 3 minutes). YouTube classifies it as a Short automatically.
It works, but you own the hard parts: a Google Cloud project, OAuth consent screen approval, hourly token refresh, server-side transcoding to H.264/H.265, and a 1,600-unit-per-upload quota that caps you at roughly 6 Shorts/day. The 3-line SDK above handles all of it for you.
Skip the boilerplate: use the SDK# pip install google-api-python-client google-auth-oauthlibimport google_auth_oauthlib.flowimport googleapiclient.discoveryfrom googleapiclient.http import MediaFileUpload
# 1. OAuth 2.0: opens a browser to authorize your Google accountflow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file( "client_secret.json", scopes=["https://www.googleapis.com/auth/youtube.upload"],)credentials = flow.run_local_server(port=0)youtube = googleapiclient.discovery.build("youtube", "v3", credentials=credentials)
# 2. videos.insert: put #Shorts in the title so YouTube classifies it as a Shortrequest = youtube.videos().insert( part="snippet,status", body={ "snippet": { "title": "How to bake sourdough in 60s #Shorts", "description": "Quick recipe #Shorts", "tags": ["shorts", "baking"], "categoryId": "26", # Howto & Style }, "status": {"privacyStatus": "public", "selfDeclaredMadeForKids": False}, }, # Resumable upload: you own retries, token refresh & transcoding media_body=MediaFileUpload("short.mp4", chunksize=-1, resumable=True),)response = request.execute()print(response["id"]) # the new video IDreality check
Why not build your own YouTube Data API integration?
YouTube Data API v3 requires a Google Cloud project, OAuth 2.0 setup, API quota requests, and scope approvals. That's before handling token refresh, video transcoding, or error retries.
OAuth2 token refresh logic: expires in 1 hour
We manage the full Google OAuth2 lifecycle. Tokens never expire for your code.
YouTube quota: only ~6 uploads/day by default
We request quota increases from Google on your behalf for high-volume accounts.
Codec hell: must be H.264/H.265 MP4, exact specs
Upload any format. We transcode to YouTube specs server-side via FFmpeg.
Thumbnail API is a separate endpoint + auth scope
Pass thumbnailPath in your upload call. We handle the separate thumbnail upload.
Playlist assignment is a 3rd API call
Pass extra.playlistId once. We handle the playlist insertion call automatically.
Ship in a weekend, not 3 months
Building YouTube + TikTok + Instagram integrations from scratch takes months. Our API gets you to production in a day.
Official YouTube Data API v3
We use YouTube's official Data API, not browser automation or unofficial endpoints. Full 1080p quality, zero ToS risk.
Webhooks: upload.completed · upload.failed
Register your endpoint and receive JSON payloads in real-time when uploads succeed or fail. No polling needed.
Same API, 5 platforms
Same endpoint, same request format for YouTube Shorts, TikTok, Instagram Reels, Facebook, and LinkedIn.
POST /api/v1/upload
YouTube Shorts API Parameters
Full control over every YouTube-specific setting: title, tags, thumbnail, playlist, privacy, scheduling.
accountIdfilePathtitletagsprivacyStatusthumbnailPathscheduledFordescriptionextra.playlistIdextra.categoryIdextra.madeForKidsAuth header: x-api-key: YOUR_API_TOKEN · Base URL: https://api.multi-upload-tool.com/api/v1
bulk upload
Post the same Short to YouTube, TikTok & Reels in one call
Pass a list of account IDs. The SDK routes to the bulk endpoint and fans out in parallel: one video, all platforms, one API call.
- YouTube Shorts: tags, thumbnail, playlists, categoryId
- TikTok: privacy_level, disable_duet, disable_stitch
- Instagram Reels: share_to_feed, cover_timestamp
- Facebook Reels: target audience, geo-targeting
- LinkedIn: visibility, document description
from multi_upload_tool import MultiUploadClient
client = MultiUploadClient(api_token="YOUR_API_TOKEN")
# Post same Short to YouTube + TikTok + Instagram in one callupload = client.uploads.upload( account_id=[123, 456, 789], # YouTube, TikTok, Instagram file_path="short.mp4", title="My viral Short, posted everywhere", scheduledFor="2026-04-01T18:00:00Z",)
print(upload)# {"success": True, "data": {"uploadId": 800, "status": "pending"}}who uses it
Who uses the YouTube Shorts upload API?
SaaS developers building social publishing tools
Add YouTube Shorts publishing to your platform without a Google Cloud project. Ship the integration in a sprint.
Marketing agencies managing multiple channels
Connect dozens of client YouTube channels. Bulk schedule Shorts with metadata per channel, get webhook alerts on publish.
Content repurposing pipelines
Auto-clip 10-minute YouTube videos into Shorts. Add custom thumbnails and push to TikTok simultaneously.
"30 Days of…" content series
Upload 30 Shorts, assign each to a playlist, schedule one per day. Viewers who find one Short see all 30, compounding views.
integration guide
How it works in 4 steps
Install the SDK
pip install multi-upload-tool or npm install multi-upload-tool. Prefer raw HTTP? POST to https://api.multi-upload-tool.com/api/v1/upload with header x-api-key. No SDK required.
Connect your YouTube channel via Google OAuth
Dashboard → Connect Account → YouTube → authorize with Google. We store and auto-refresh your tokens. Note your numeric accountId. That's all you need in code.
POST your Short: file or URL
Multipart file upload, or a public video URL (S3, CDN, Cloudinary). MP4, MOV, WebM, AVI: any codec. We transcode to H.264/H.265 at 1080p, 9:16 ratio server-side.
Receive an uploadId, done
API responds immediately with uploadId and status: pending. Register a webhook for upload.completed events, or poll GET /upload/:id for current status.
FAQ
YouTube Shorts API: common questions
Can I upload custom thumbnails for YouTube Shorts via API?
Yes. YouTube now supports custom thumbnails for Shorts via Data API v3. Pass thumbnailPath (Python) or thumbnailPath (Node.js) pointing to a 1080×1920 JPEG or PNG. This is a feature many competing tools don't support yet because it requires the latest API capabilities.
Can I upload YouTube Shorts with Python?
Yes. pip install multi-upload-tool, then call client.uploads.upload(account_id=123, file_path='short.mp4', title='My Short #shorts', tags=['shorts']). The SDK handles Google OAuth token management, video transcoding, and retry logic automatically.
How do I upload a YouTube Short with the YouTube Data API v3 in Python?
The official path: pip install google-api-python-client google-auth-oauthlib, authorize with OAuth 2.0 (scope youtube.upload), then call youtube.videos().insert(part='snippet,status', body={...}, media_body=MediaFileUpload('short.mp4', resumable=True)). Put #Shorts in the title and upload a vertical 9:16 clip up to 3 minutes. You're responsible for OAuth token refresh, server-side transcoding, and the 1,600-unit-per-upload quota (~6 Shorts/day). See the full working example above, or use our SDK to skip all of it in 3 lines.
Does YouTube SEO matter for Shorts?
Yes. YouTube indexes Shorts in Search and Suggested results, not just the Shorts shelf. A Short with a keyword-rich title like 'How to make sourdough bread in 60 seconds #shorts' can rank in YouTube Search and appear alongside regular videos. Titles, descriptions, and tags all contribute to discoverability.
Can I schedule YouTube Shorts via API?
Yes. Upload with privacyStatus='private' and pass scheduledFor (ISO 8601 timestamp). Our system queues the visibility change and switches it to public at the exact scheduled time via YouTube Data API v3, even if your server is offline.
How does playlist assignment work for Shorts?
Pass extra.playlistId in your upload call. Playlists increase session duration because viewers watch multiple Shorts in sequence. This signals quality to YouTube's algorithm. You can create and list playlists via GET /accounts/:id/playlists.
What video formats does the YouTube Shorts API accept?
YouTube requires H.264/H.265 encoded MP4, 9:16 aspect ratio, and up to 3 minutes long (raised from 60 seconds in late 2024), up to 256GB. Our API accepts any format (MP4, MOV, WebM, AVI, MKV) and automatically transcodes to YouTube's specifications using server-side FFmpeg. No pre-processing needed.
How many YouTube Shorts can I upload per day via API?
YouTube Data API v3 defaults to 10,000 quota units/day. A single video upload costs ~1,600 units (~6 Shorts/day). For higher volume, we can request a quota increase from Google on your behalf. Contact our team if you need more than 6 uploads/day per channel.
What's the difference between uploading Shorts here vs. YouTube Studio?
YouTube Studio handles one video at a time with manual metadata entry. With Multi Upload Tool, you can upload 50+ Shorts in one batch via dashboard or API with titles, descriptions, tags, playlists, thumbnails, and scheduled times pre-filled. You also get cross-platform publishing: the same video posts to TikTok and Instagram simultaneously.
Start posting YouTube Shorts via API today
Free plan available: 13 uploads/month, no credit card. Your first Short live in under 10 minutes.
See also: YouTube Shorts Scheduler · Full Social Media API