YouTube Shorts API: How to Upload Shorts with videos.insert

By Mika ReyesPublished 6 min read

The short answer

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).

  1. 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
  1. 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 }
  }'
  1. Upload the bytes with a PUT to the session URI from the Location header. A 201 returns the video resource and its ID.
  2. 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.list with part=contentDetails returns contentDetails.duration in ISO 8601, such as PT2M45S.
  • Aspect ratio, owner only. part=fileDetails returns videoStreams[].aspectRatio, widthPixels, and heightPixels, 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 creatorContentType dimension has a SHORTS value, 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/posts request as any YouTube video.
  • Publish from a URL. Send a public HTTPS video.url of 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 thumbnail to not_allowed and adds a warning instead of failing the upload.
  • Scheduling. publish_at with privacy_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.

faq

Frequently asked questions

Is there a YouTube Shorts upload API?

No. Google's YouTube Data API v3 has no Shorts endpoint or Shorts parameter. You upload a Short with videos.insert, the same method as any video, and YouTube classifies it as a Short from its length and aspect ratio.

How long can a YouTube Short uploaded through the API be?

Up to 3 minutes, if it's square or vertical. YouTube raised the limit from 1 minute for videos uploaded on or after October 15, 2024. A horizontal video, or one longer than 3 minutes, is published as a regular long-form video.

Can I post YouTube Shorts with the API on a schedule?

Yes. videos.insert accepts status.publishAt on any upload, and Google's docs don't exclude Shorts. Upload the Short as private with a future publishAt time, and YouTube makes it public then.

Can I get only Shorts from a channel with the YouTube Data API?

Not directly. The video resource has no Shorts field. You can filter by duration from contentDetails, and the video owner can read the aspect ratio from fileDetails. For analytics, the YouTube Analytics API's creatorContentType dimension separates Shorts from other content.

Power your next project
with one ads & social media API

Give your users publishing, scheduling, and analytics through one integration your team can actually maintain.

Try with agents

Start with free credits. No credit card required.