YouTube upload API for social media agents, no quota to manage
Blotato's YouTube upload API publishes a video to a channel from one request. No resumable upload code, no quota units to manage, no separate Google Cloud project.
The YouTube Data API is free and quota-metered. What is left for you to build is the resumable upload path, the OAuth consent screen, and the other eight platforms.
- REST
POST https://backend.blotato.com/v2/posts- Auth
blotato-api-key: YOUR_API_KEY- MCP
https://mcp.blotato.com/mcp
Updated September 2026. API access is included on every paid plan and excluded from the free trial.
What the YouTube upload API does in Blotato
POST /v2/posts with targetType youtube takes the video URL in mediaUrls and the description in content.text, up to 5,000 characters. Three target fields are required: title of up to 100 characters, privacyStatus as public, private, or unlisted, and shouldNotifySubscribers. Tags are not supported. isMadeForKids, containsSyntheticMedia, playlistIds, and thumbnailUrl are optional.
Playlists on upload
GET /users/me/accounts/:accountId/subaccounts returns your playlists for a YouTube account. Pass their ids in target.playlistIds and the video lands in them on publish.
Custom thumbnails
thumbnailUrl sets a custom thumbnail from a public image URL. YouTube only allows this on verified channels with the custom thumbnail capability.
Video analytics
GET /analytics ranks your published videos by views, reach, likes, or comments. GET /posts/:id/analytics returns one video over time.
Scheduling into the calendar
scheduledTime queues the upload for a future time. useNextFreeSlot takes the next open YouTube slot in your calendar, and PATCH /schedules/:id moves it later.
Three required fields, and the one with no safe default
title, privacyStatus, and shouldNotifySubscribers are required on every YouTube call. The last one has no safe default, so Blotato makes you choose. Set it false for a bulk backfill and true for the weekly upload your subscribers expect.
Set containsSyntheticMedia to true for realistic AI-generated video, the disclosure YouTube requires for it.
POST https://backend.blotato.com/v2/posts
{
"post": {
"accountId": "98432",
"content": {
"text": "Full walkthrough of the posting agent, with the failure log at 12:40.",
"mediaUrls": ["https://cdn.example.com/walkthrough.mp4"],
"platform": "youtube"
},
"target": {
"targetType": "youtube",
"title": "30 days of an unattended posting agent",
"privacyStatus": "public",
"shouldNotifySubscribers": true,
"containsSyntheticMedia": false,
"playlistIds": ["PL1234567890"]
}
}
}
Response: { "postSubmissionId": "uuid" }, a receipt. Poll GET /posts/:postSubmissionId for published or failed.
Every field: help.blotato.com/api/llm. YouTube's own reference: the YouTube Data API docs.
What the YouTube Data API makes you build that Blotato already has
- Resumable uploads are handled. YouTube uploads use a resumable protocol that is a different code path from every other network. You send a URL.
- The Cloud project and its quota are ours to carry. Building on the YouTube Data API means a Google Cloud project, an OAuth consent screen, and a quota to live inside. Blotato's project is already set up, so you connect a channel.
- The same request reaches eight more platforms. A video that goes to YouTube can go to TikTok, Instagram, and Facebook from the same envelope with different target fields.
Uploading to YouTube, step by step
- Connect the channel. Sign in to Blotato and connect the Google account that owns the channel. The subaccounts endpoint returns playlists for a YouTube account.
- Generate an API key. In Settings, open API and generate a key, which starts paid Starter immediately. The trial does not include the API.
- Fetch the accountId, and playlists if you want them. GET /users/me/accounts?platform=youtube, then GET /users/me/accounts/:accountId/subaccounts for playlist ids.
- POST with the three required fields and poll. Send the request above, then poll GET /posts/:postSubmissionId until it reads published, with the video URL, or failed.
Uploading from Claude rather than from code? The YouTube tools are on the MCP server at https://mcp.blotato.com/mcp.
Setup per client is on the YouTube MCP server page, and the walkthrough of
uploading to YouTube from Claude shows the prompt-to-post flow. A prompt like
"Upload this video to YouTube as public, notify subscribers, add it to the Tutorials playlist, and use this thumbnail." calls the same endpoint this page documents.
YouTube upload caps, formats, and pricing
On Starter, API uploads are limited to 10 videos per channel per 24 hours, and to 25 on Creator. The help docs note that the upper limit is enforced by YouTube, not Blotato. Exceed it and the post fails with 'You have reached the maximum number of 10 posts for the last 24 hours for this account'. New channels have lower YouTube quotas and can hit limits sooner, and you can always upload through the YouTube site when the API limit is reached.
| YouTube limit | Value through Blotato |
|---|---|
| Blotato daily cap | Starter 10, Creator 25 uploads per channel per 24 hours (help docs: upper limit enforced by YouTube) |
| Title | 100 characters |
| Description | 5,000 characters |
| Video | MP4 with H.264 and AAC-LC recommended, 16:9; up to 256 GB or 12 hours on verified accounts |
| Off-spec video | converted by Blotato only under 120 seconds |
The YouTube Data API charges no money, only quota units, and the quota cost of an upload changed in December 2025 and again in June 2026. The current unit math is in the YouTube API pricing guide.
On YouTube, this API covers publishing, scheduling and analytics. Comments, DMs and DM automation are Instagram and Facebook only. Caps are listed at help.blotato.com/settings/social-accounts.
MCP tools that reach YouTube
The tool names an agent calls on the MCP server for this platform, verbatim from the server's tool list. The REST endpoint behind each one is in the API reference.
blotato_list_accountsblotato_create_postblotato_get_post_statusblotato_list_postsblotato_list_schedulesblotato_get_scheduleblotato_update_scheduleblotato_delete_scheduleblotato_create_presigned_upload_urlblotato_list_top_postsblotato_get_post_analytics
YouTube posting API FAQs
01 Can I upload to YouTube through an API without managing quota units?
02 Which fields are required to upload a video to YouTube via the API?
03 How many YouTube uploads a day does the API allow?
04 Can the upload go into a playlist with a custom thumbnail?
Same key, eight more platforms
YouTube is one targetType on the same endpoint. The social media API page has the comparison table of every platform's required fields and caps.
Blotato Your AI Agent still can't post to social media.
Point Claude, ChatGPT, n8n, or your own agent at Blotato's MCP and that's fixed: 9 platforms behind one key, flat $29/mo.
Connect your agentFlat pricing. Cancel anytime.