Social media APIs

YouTube API upload quota in 2026: how many videos a day you can upload

The YouTube Data API's upload quota changed twice in the last year, and on 2 November 2026 Google lifted the private-only lock on unverified projects. What an upload costs now, how many videos you get a day, and what still needs an audit.

The people who build Reelspan

6 min read

Cover illustration: the title 'YouTube API upload quota in 2026' on a dark card with Reelspan's crop-frame mark

If you built a YouTube integration a few years ago, you probably remember the arithmetic: 10,000 quota units a day, about 1,600 units per upload, so roughly six uploads a day before you had to ask Google for more. That arithmetic is out of date. Google changed how uploads are counted twice between December 2025 and June 2026, and on 2 November 2026 it lifted the private-only lock on unverified projects.

This guide sets out what the YouTube Data API documentation says today, what changed and when, and the parts that still need care. Everything below was checked against Google's own pages on 6 November 2026, including a policy change from 2 November.

The short answer

  • Default upload limit: 100 uploads per day per Google Cloud project.
  • Why: since 1 June 2026, videos.insert has its own quota bucket of 100 calls a day, at 1 unit per call. It no longer draws on the general bucket.
  • Everything else (listing videos, reading channels, setting thumbnails) still comes out of the familiar 10,000-unit daily bucket.
  • Need more than 100 a day? Apply for a quota extension. That goes through the YouTube API Services audit.
  • No more private lock: since 2 November 2026, uploads from unverified projects are no longer forced to private.

What changed, and when

The revision history records three changes that matter for uploads:

Date Change Effect on uploads
4 Dec 2025 Upload cost re-documented from about 1,600 units to about 100 About 100 uploads a day from the 10,000-unit bucket
1 Jun 2026 videos.insert moved to its own bucket: 100 calls a day, 1 unit each 100 uploads a day, and uploads no longer compete with reads
2 Nov 2026 The 2020 private-only rule for unverified projects reversed Uploads default to public again

The second change is the one that matters day to day. Uploads used to compete with everything else your integration did. A dashboard that refreshed view counts could eat into the budget you needed for publishing. With a separate bucket, reading data and publishing no longer interfere.

The quota calculator lists the other costs you are likely to meet:

Method Cost Bucket
videos.insert (upload) 1 call Its own, 100 a day
videos.list 1 unit General, 10,000 a day
channels.list 1 unit General
thumbnails.set 50 units General
search.list 1 call Its own, 100 a day

Quota is per project, not per channel

The 100-a-day figure applies to your Google Cloud project, the one whose OAuth client your users sign in with. It does not apply per channel. If you run a tool that posts for 50 creators from one project, those 50 creators share the 100 uploads.

That is the main reason a product that publishes for other people ends up applying for an extension. The quota and compliance audits guide describes the process: you fill in the audit and quota extension form, Google reviews how your app uses the API against its policies, and a team member contacts you. Google does not publish a timeline, and approved projects are audited again periodically.

There are also per-channel upload caps. When a channel hits one, the API returns uploadLimitExceeded. Google does not publish a number for those, so treat that error as "try again later for this channel", not as a project problem.

Will uploads from my project be private?

Not any more. In July 2020 Google announced that videos uploaded through unverified API projects created after 28 July 2020 would be locked to private until the project passed an audit, and for six years that shaped how integrations were built.

On 2 November 2026 the revision history recorded the reversal: uploads from unverified projects are no longer restricted to private viewing. If you send no privacy status, an upload now defaults to public, although some uploads may still default to private depending on the creator's channel settings.

What this means in practice:

  1. Set status.privacyStatus explicitly on every upload rather than relying on the default.
  2. Read the status back after processing. The channel's own settings can still make a video private.
  3. The audit is still how you get more than 100 uploads a day, so a product publishing for many channels will likely need it anyway.

OAuth details that break integrations

Quota is rarely the first thing that breaks. These are, based on Google's OAuth documentation:

  • Refresh tokens expire after 7 days while your OAuth consent screen is set to External and in "Testing" status. A tool that works on Monday and fails the next Monday is almost always this.
  • YouTube scopes are sensitive scopes. To leave Testing without the "unverified app" warning, your app needs Google's OAuth verification. That means a homepage and privacy policy on a domain you have verified in Search Console, plus a demo video of the consent flow.
  • Use the narrowest scope. For uploading, that is https://www.googleapis.com/auth/youtube.upload.
  • A refresh token is returned only on first consent. Send access_type=offline, and prompt=consent if you need a new one (web server flow).

Shorts: no special API, just shape and length

There is no "upload as Short" flag. According to YouTube Help, a video is classified as a Short when it is square or vertical and up to three minutes long. That rule applies to uploads since 15 October 2024. Upload a 9:16 video under three minutes through videos.insert and YouTube treats it as a Short.

Many tools also put #Shorts in the title or description. That is a community habit, not something the API documents. It does no harm, but don't rely on it.

Fields worth setting on every upload

From the Videos resource reference:

  • snippet.title: up to 100 characters, no < or >.
  • snippet.description: up to 5,000 bytes. Bytes, not characters, so emoji and non-Latin scripts use the budget faster.
  • snippet.tags: up to 500 characters in total, commas included.
  • status.privacyStatus: public, unlisted or private.
  • status.publishAt: native scheduling. It only works when the video is uploaded as private and has never been published. YouTube flips it to public at that time.
  • status.containsSyntheticMedia: the disclosure for realistic altered or synthetic content.
  • status.selfDeclaredMadeForKids: set it explicitly rather than leaving it to defaults.

How to plan around the limit

For one creator posting a few Shorts a day, 100 uploads a day per project is plenty, and you can stop worrying about quota.

For a product that posts for many people:

  1. Count uploads per project per day yourself and stop before 100, so you fail with a clear message instead of a quotaExceeded error mid-upload.
  2. Use resumable uploads. With the resumable protocol, a dropped connection means resuming from the last byte received, not starting a new upload.
  3. Apply for the extension early. It needs a working, public product, so start once you have one, not when you hit the limit.
  4. Keep reads off the critical path. They have their own budget now, but thumbnails.set at 50 units adds up quickly if you set one for every video.

If you would rather not run the resumable upload, token refresh and retries yourself, Reelspan does that part: you send one video to one API, and the API reference shows how it reaches YouTube and the other networks. For the same questions on other platforms, see our guides to the TikTok Content Posting API audit and publishing Reels with the Instagram API.

Questions people ask

Are YouTube API uploads from unverified projects still private?

No. On 2 November 2026 Google reversed the 2020 rule that locked uploads from unverified API projects to private. Uploads now default to public unless you set a privacy status, though a creator's channel settings can still make some private.

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

By default, 100 per Google Cloud project. Since 1 June 2026, videos.insert has its own quota bucket of 100 calls a day, separate from the 10,000-unit bucket used by other methods. More needs a quota extension through Google's audit form.

How many quota units does a YouTube video upload cost?

In the separate videos.insert bucket, each upload counts as one call. Before that bucket existed, Google documented the cost as about 100 units (lowered from about 1,600 on 4 December 2025).

Is there an API flag for YouTube Shorts?

No. YouTube treats an upload as a Short when it is square or vertical and up to three minutes long. The API uploads it like any other video.

Sources

  1. YouTube Data API revision history, Google for Developers. Checked 6 Nov 2026.
  2. Quota calculator (determine_quota_cost), Google for Developers. Checked 6 Nov 2026.
  3. Videos: insert, Google for Developers. Checked 6 Nov 2026.
  4. Videos resource, Google for Developers. Checked 6 Nov 2026.
  5. Quota and compliance audits, Google for Developers. Checked 6 Nov 2026.
  6. Understand three-minute YouTube Shorts, YouTube Help. Checked 6 Nov 2026.
  7. Using OAuth 2.0 to access Google APIs, Google for Developers. Checked 6 Nov 2026.
Cover illustration: the title 'How to post one video to every social platform' on a dark card with Reelspan's crop-frame mark

Cross-posting

How to post one video to every social platform (and what changes on each)

Cross-posting one video to TikTok, YouTube, Instagram, Facebook, X, LinkedIn, Threads, Pinterest and Bluesky is mostly the same job nine times, except for the parts that aren't. A field guide to what changes per platform: shape, length, captions, privacy, scheduling and AI labels.

5 min read