YouTube Shorts API: How to Upload Shorts with videos.insert
There is no separate YouTube Shorts API. You upload a Short with videos.insert on the YouTube Data API v3, like any video. YouTube makes it a Short when it is square or vertical and up to 3 minutes long. No flag, hashtag, or endpoint is needed. Each upload costs 1 unit of a 100-a-day quota. Adeli publishes Shorts to YouTube with one POST request.
There is no separate YouTube Shorts API. You publish a Short with videos.insert on the YouTube Data API v3, the same method that uploads any video, and YouTube decides it's a Short from the file itself: square or vertical, and up to 3 minutes long. No Shorts flag, endpoint, or hashtag changes that.
That leaves the questions the API docs don't answer: which files become Shorts, whether #Shorts matters, what happens to thumbnails, and how to tell a Short apart afterwards. The general upload flow (resumable sessions, retries, upload errors) is in our YouTube API upload video guide. Facts here come from Google's Data API docs and YouTube Help, checked on 2026-10-26.
Does YouTube have a Shorts API?
No. YouTube Shorts use the regular YouTube Data API v3. The videos.insert reference doesn't mention Shorts, and the video resource has no Shorts property. Searches for a "YouTube Shorts publish API" or "post YouTube Shorts API" all land on the same method:
| What you want | YouTube Data API v3 method |
|---|---|
| Upload a Short | videos.insert |
| Set a thumbnail | thumbnails.set (see the caveats below) |
| Check processing | videos.list with part=processingDetails,status |
| Read Shorts analytics | YouTube Analytics API, creatorContentType dimension |
What makes a video a YouTube Short?
A video is a YouTube Short when it has a square or vertical aspect ratio and runs up to 3 minutes. YouTube's three-minute Shorts help page says videos uploaded after October 15, 2024 that meet both rules "will be categorized as Shorts on YouTube."
| Your file | Result |
|---|---|
| 9:16 vertical, 45 seconds | Short |
| 1:1 square, 2 minutes 50 seconds | Short |
| 9:16 vertical, 3 minutes 20 seconds | Long-form video |
| 16:9 horizontal, 30 seconds | Long-form video |
Todd Sherman, then Director of Product Management for YouTube Shorts, announced the 3-minute limit on the YouTube Blog on October 3, 2024:
"This change applies to videos that are square or taller in aspect ratio, and won't affect any videos you uploaded before October 15."
For your pipeline, that means the exported file decides whether YouTube makes a Short. If your product generates or edits video, check width, height, and duration before upload, because a 16:9 export or a 3-minute-10-second cut silently becomes a long-form video.
Two more rules from the same help page:
- Official Artist Channels follow the 3-minute rule only for uploads on or after December 8, 2025.
- Shorts over 1 minute with an active Content ID claim are blocked globally on YouTube, and aren't playable or recommended until the claim is resolved. Shorts under a minute aren't affected. If your users add music, keep claimed audio under a minute.
How to upload a YouTube Short with the API
Validate the file, then call videos.insert with the channel owner's OAuth token. You need a Google Cloud project with the YouTube Data API v3 enabled and an OAuth token with the youtube.upload scope (setup is in our YouTube API OAuth guide).
- Check the file. Duration of 180 seconds or less, and height greater than or equal to width:
ffprobe -v error -select_streams v:0 \
-show_entries stream=width,height:format=duration \
-of csv=p=0 short.mp4
# 1080,1920
# 58.4- Start a resumable upload. Send the metadata to the upload endpoint:
curl -i -X POST \
"https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json; charset=UTF-8" \
-H "X-Upload-Content-Length: $FILE_SIZE_BYTES" \
-H "X-Upload-Content-Type: video/mp4" \
-d '{
"snippet": { "title": "3 ways to cut onboarding time", "categoryId": "22" },
"status": { "privacyStatus": "public", "selfDeclaredMadeForKids": false }
}'- Upload the bytes with a
PUTto the session URI from theLocationheader. A201returns the video resource and its ID. - Poll processing with
videos.list?part=processingDetails,status&id=<VIDEO_ID>before you tell your user the Short is live.
Set status.privacyStatus every time. Google's reference says it defaults to public if you leave it out, but some uploads default to private based on the creator's account settings.
Do I need #Shorts in the title or description?
No. YouTube's definition of a Short is length plus aspect ratio, and #Shorts isn't part of it. The help pages that define Shorts (three-minute Shorts and upload a Short) list only the duration and the square or vertical ratio. Adding #Shorts to snippet.title or snippet.description won't turn a horizontal video into a Short.
Hashtags still work as hashtags. Two things to know when your product writes the description:
- Only three hashtags show above the title. YouTube's hashtag help says up to three of the hashtags in a description appear by the title; the rest stay in the description.
- Links in Shorts descriptions aren't clickable. YouTube's link guide says URLs in Shorts descriptions and comments are non-clickable, to reduce spam. Don't build a Shorts feature around a link in the description.
Can I set a YouTube Shorts thumbnail with the API?
Not reliably. YouTube added custom Shorts thumbnails on July 24, 2026, but only for YouTube Partner Program creators, in YouTube Studio. The YouTube Blog post says Partner Program creators "can start uploading custom thumbnails for Shorts," and YouTube's thumbnail help says custom Shorts thumbnails are "currently only available to add in YouTube Studio on a computer," on verified accounts.
The API side hasn't caught up in the docs:
thumbnails.set |
|
|---|---|
| Mentions Shorts? | No |
| Quota cost | About 50 units from the 10,000-unit pool |
| Max file size | 50 MB, image/jpeg or image/png |
| Channel requirement | Custom thumbnails need a verified channel |
| Recommended Shorts size | 9:16, 2160 × 3840 (Studio guidance) |
Sources: thumbnails.set reference and YouTube thumbnail help.
Treat a Shorts thumbnail as best-effort. Call thumbnails.set after the upload, read the response, and don't fail the post if it's refused. For everyone else, the fallback is choosing a frame in YouTube Studio or the mobile app, so put a strong frame early in the video.
How do I tell if a video is a Short with the API?
The YouTube Data API has no Shorts field, so you infer it from duration and dimensions, or use YouTube Analytics.
- Duration.
videos.listwithpart=contentDetailsreturnscontentDetails.durationin ISO 8601, such asPT2M45S. - Aspect ratio, owner only.
part=fileDetailsreturnsvideoStreams[].aspectRatio,widthPixels, andheightPixels, but Google says this data "can only be retrieved by the video owner," and only once processing has made the file available. - Analytics. The YouTube Analytics API's
creatorContentTypedimension has aSHORTSvalue, so you can split views and watch time for Shorts from long-form videos.
The upload date matters too. A vertical 2-minute video uploaded before October 15, 2024 is long-form, so duration and ratio alone can misclassify old uploads.
What is the YouTube Shorts API quota?
A Short costs the same as any upload: 1 unit from the Video Uploads bucket, which allows 100 videos.insert calls a day per project by default. Google's quota cost page gives every project 100 videos.insert calls and 10,000 units a day for other endpoints, reset at midnight Pacific Time.
| Call per Short | Cost | Bucket |
|---|---|---|
videos.insert |
1 | Video Uploads (100 a day) |
thumbnails.set |
50 | 10,000-unit pool |
videos.list (status polling) |
1 per call | 10,000-unit pool |
The thumbnail is the expensive part. A thumbnail on every Short uses 50 units each, so 100 Shorts with thumbnails spend 5,000 units, half the pool. More uploads a day need Google's compliance audit and a quota extension, covered in YouTube API upload video.
Is there a faster way to publish YouTube Shorts?
Yes: send the video to an API that already runs the YouTube integration. Adeli's YouTube API holds the Google developer app, carries Google's review, and refreshes each channel's tokens. Your customers connect their own channels, and your product never handles a Google OAuth token.
From the publish docs:
- No separate Shorts call. A vertical or square video up to three minutes becomes a Short, through the same
POST /api/v1/postsrequest as any YouTube video. - Publish from a URL. Send a public HTTPS
video.urlof up to 1 GB, and Adeli downloads it and uploads it to YouTube. - Thumbnails without failed posts. The multipart upload takes a video of up to 4 GiB and an optional JPEG or PNG thumbnail. When a channel can't use custom thumbnails, the response sets
thumbnailtonot_allowedand adds a warning instead of failing the upload. - Scheduling.
publish_atwithprivacy_status: "private"makes the video public at that time.
curl https://app.tryadeli.com/api/v1/posts \
-H "Authorization: Bearer $ADELI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "youtube",
"accountId": "'"$ACCOUNT_ID"'",
"title": "3 ways to cut onboarding time",
"privacy_status": "public",
"made_for_kids": false,
"video": { "url": "https://cdn.example.com/onboarding-short.mp4" }
}'If you're building an AI content tool that turns one idea into Shorts, Reels, and TikToks, the same posting API publishes to Instagram and TikTok too. See how Adeli fits AI content generation tools.