Skip to content
UGC API

How to upload YouTube Shorts via API

YouTube Shorts upload through the same YouTube Data API as any other video. This guide covers what makes an upload a Short, how the upload works, the quota you get, and the details UGC teams care about.

Updated

There is no Shorts endpoint

YouTube's API has one upload method, videos.insert. Whether a video becomes a Short depends on the video. YouTube's help center says square or vertical videos up to 3 minutes are categorized as Shorts on standard channels, for uploads from October 15, 2024 on. So the job is: export vertical, keep it under 3 minutes, upload normally.

Adding #Shorts to the title or description is a common habit, but the format is what YouTube uses to classify the video.

What you need for a direct integration

  1. A Google Cloud project with the YouTube Data API v3 enabled.
  2. An OAuth consent screen and OAuth client. The upload scope is a sensitive scope, so a public app needs Google's OAuth verification.
  3. A resumable upload implementation for videos.insert, sending snippet (title, description, tags, category) and status (privacy).
  4. Token refresh, since uploads often run later than the user's session.

Quota

Google's current docs list default limits per project of 100 videos.insert calls per day, in their own upload bucket, plus 10,000 units a day for other endpoints. Defaults can change, so check the quota page in your Google Cloud console. If you need more, Google has a quota extension request, which includes a compliance review of your app.

For a UGC tool, 100 uploads a day across all users is small. Ten creators posting two Shorts each, plus a few retries, and you're close.

Metadata that matters for Shorts

FieldTip
TitleUp to 100 characters. Make it searchable; Shorts titles show in search and on the channel.
DescriptionPut hashtags and context here.
Privacypublic, unlisted or private. If unset, YouTube's docs say the default is public, though some creator settings change that.
Made for kidsSet the audience correctly. It affects comments and features.

Uploading with UGC API

With UGC API, the creator connects their channel through a connect link, and you post with format: 'video'. The quota, OAuth verification and resumable upload are on our side.

javascript
const res = await fetch("https://ugcapi.dev/v1/posts", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.UGCAPI_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    accounts: ["acc_yt_01"],
    format: "video",
    media: ["https://cdn.example.com/shorts/s-19.mp4"],
    caption: "Full routine in the description #shorts #fitness",
    scheduled_at: "2026-11-05T14:00:00Z",
    options: { youtube: { title: "3-minute morning mobility routine", privacy: "public" } },
  }),
});

The post.published webhook returns the video URL. If YouTube rejects the upload, you get post.failed with the reason. See webhooks.

Shorts from TikTok content

Most UGC teams cross-post TikToks to Shorts. Use a clean export without the TikTok watermark, rewrite the title for search, and space it from the TikTok post by a few hours if you like. Our repurposing guide covers the details.

For a product overview, see YouTube Shorts upload API. For quota and other platform caps, see limits.

Common upload problems

SymptomLikely cause
Video shows as long-form, not a ShortHorizontal aspect ratio or longer than 3 minutes
quotaExceeded errorThe project's daily upload calls are used up
Upload stuck processingLarge file or unusual codec; re-export as MP4 H.264
Token error on a scheduled uploadThe refresh token was revoked or expired; reconnect

With UGC API, these come back as post.failed with a code and message, so you can show the creator what to fix.

FAQ

How do I make an API upload count as a YouTube Short?

Upload a square or vertical video up to 3 minutes long. YouTube classifies it as a Short based on the video, not an API flag.

How many videos can I upload per day with the YouTube API?

Google's docs list a default of 100 videos.insert calls per day per project. You can request more through a quota extension.

Can I schedule a YouTube Short?

With UGC API, set scheduled_at and we upload at that time. In the native API you can also upload as private with a publish time.

Do I need Google's OAuth verification?

For a public app using the upload scope, yes. With UGC API, users connect through our app instead.

Related