YouTube API
The YouTube Data API v3 gives you 10,000 quota units per day — and a single video upload costs 1,600 of them. Aether manages quota, handles resumable uploads, and exposes scheduled publishing with one API key. No Google Cloud project setup required.
One call for videos and Shorts. Aether handles the resumable upload protocol, quota tracking, and scheduled publishing automatically.
import Aether from "aether";
const aether = new Aether({ apiKey: process.env.AETHER_API_KEY });
// Upload and schedule a YouTube video
const post = await aether.posts.create({
profileIds: ["yt_channel123"],
mediaUrls: ["https://your-cdn.com/episode-12.mp4"],
overrides: {
youtube: {
title: "How We Built a Unified Social Media API",
description: "A deep dive into our architecture...\n\n#API #buildinpublic",
category: "Science & Technology",
privacy: "public",
},
},
scheduledFor: "2026-06-15T15:00:00Z",
});
// Post a YouTube Short
const short = await aether.posts.create({
profileIds: ["yt_channel123"],
mediaUrls: ["https://your-cdn.com/short-clip.mp4"],
overrides: {
youtube: {
title: "60 seconds to understand rate limiting #Shorts",
description: "Quick explainer on API rate limits. #Shorts #API",
privacy: "public",
},
},
});Free tier · 3 accounts · no credit card
Get your free API keyimport os
import aether
client = aether.Aether(api_key=os.environ["AETHER_API_KEY"])
# Upload and schedule a YouTube video
post = client.posts.create(
profile_ids=["yt_channel123"],
media_urls=["https://your-cdn.com/episode-12.mp4"],
overrides={
"youtube": {
"title": "How We Built a Unified Social Media API",
"description": "A deep dive into our architecture...",
"category": "Science & Technology",
"privacy": "public",
}
},
scheduled_for="2026-06-15T15:00:00Z",
)curl -X POST https://api.aetherhq.dev/v1/posts \
-H "Authorization: Bearer $AETHER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"profileIds": ["yt_channel123"],
"mediaUrls": ["https://your-cdn.com/episode-12.mp4"],
"scheduledFor": "2026-06-15T15:00:00Z",
"overrides": {
"youtube": {
"title": "How We Built a Unified Social Media API",
"description": "A deep dive into our architecture...",
"category": "Science & Technology",
"privacy": "public"
}
}
}'YouTube uploads begin processing immediately — status is publishing while YouTube processes the video. Once processing completes, publishResults includes the YouTube video ID.
{
"success": true,
"data": {
"id": "post_6q8st3b",
"status": "publishing",
"text": null,
"profileIds": ["yt_channel123"],
"mediaUrls": ["https://cdn.aetherhq.dev/org_9p2qrs/episode-12.mp4"],
"mediaKeys": ["org_9p2qrs/episode-12.mp4"],
"scheduledFor": "2026-06-15T15:00:00.000Z",
"publishResults": [],
"publishedAt": null,
"failedAt": null,
"createdAt": "2026-06-08T14:23:11.000Z"
}
}Getting direct YouTube API access means: creating a Google Cloud project, enabling the YouTube Data API v3, setting up OAuth 2.0 credentials, building a consent screen, and requesting quota increases once your app scales.
Aether's Connect Link removes all of that. Call one endpoint, get a URL, send it to your user. They authorize their YouTube channel, and it appears in your dashboard automatically.
// Generate a Connect Link for your user to authenticate YouTube
const link = await aether.connectLinks.create({
platform: "youtube",
redirectUrl: "https://yourapp.com/settings/social",
});
// Send link.url to your user — they click, authorize their YouTube channel,
// and it appears in your dashboard automatically.
// No Google Cloud project or OAuth credential setup needed.
console.log(link.url); // "https://connect.aetherhq.dev/link/cl_yt3s6t..."
console.log(link.expiresAt); // "2026-06-15T14:23:11.000Z"Aether uses YouTube's resumable upload protocol for all videos. If a network interruption occurs, the transfer continues from where it stopped — no restart.
YouTube allocates 10,000 quota units per day. A video upload costs 1,600 units. Aether tracks usage per project and can request quota increases as you scale.
Pass scheduledFor and Aether uploads the video as private, then triggers YouTube's scheduled publishing at the exact time. No cron job or polling needed.
Upload a vertical video (9:16, under 3 minutes) and include #Shorts in the description. YouTube classifies it as a Short automatically. No special flag needed.
Text posts, polls, and image posts for channels with 500+ subscribers. Use contentType: 'community' in the YouTube overrides object.
Create playlists and add published videos to them via the API. Automatically organize uploaded content into series or topic collections.
Views, watch time, subscribers gained, impressions, and click-through rate — per video and per channel. Historical data with custom date ranges.
Every YouTube endpoint is an MCP tool. Claude, Cursor, and any MCP-compatible agent can upload, schedule, and pull analytics without extra code.
YouTube's API is well-documented but has meaningful infrastructure overhead. Here's what you take on directly versus using Aether.
| Feature | Aether | YouTube API directly |
|---|---|---|
| Quota management | ✓Aether tracks and optimizes your quota | ✗10,000 units/day, manually tracked |
| Video upload | ✓Resumable upload handled for you | ✗Implement resumable upload protocol yourself |
| Authentication | ✓One API key | ✗OAuth 2.0 + Google Cloud project setup |
| Scheduled publishing | ✓Native scheduledFor field | ✗Set privacyStatus to private then update |
| API maintenance | ✓We absorb all breaking changes | ✗Your team's responsibility |
| Platform compliance | Official API, fully compliant | Official API, fully compliant |
YouTube uses a quota system rather than request-rate limits. Each operation costs quota units. Aether tracks usage and queues uploads across days to stay within your allocation.
| Operation | Cost / limit | Error code | Note |
|---|---|---|---|
| Daily quota | 10,000 units / day | quotaExceeded | Default per Google Cloud project |
| Video upload | 1,600 quota units | quotaExceeded | Per upload request |
| Video list | 1 quota unit | — | Per list request |
| File size | 256 GB max | uploadLimitExceeded | Resumable upload required > 5 MB |
| Title | 100 characters | 400 | Required field |
| Description | 5,000 characters | 400 | UTF-8 |
| Code | Meaning | How Aether handles it |
|---|---|---|
| quotaExceeded | Daily API quota exhausted | Aether queues uploads for next day; quota resets at midnight Pacific |
| forbidden | Insufficient permissions for this operation | Re-connect via Connect Link to re-request YouTube scopes |
| unauthorized | Invalid or expired credentials | Aether auto-refreshes Google OAuth tokens automatically |
| uploadLimitExceeded | File exceeds 256 GB limit | Re-encode or split the video before uploading |
| badRequest | Invalid parameter or missing required field | Aether validates requests; check title and description fields |
| videoNotFound | Requested video does not exist | Verify video ID from publishResults after upload completes |
AI-Native
Aether ships an MCP server that exposes every YouTube endpoint as a callable tool. Claude Desktop, Cursor, and any MCP-compatible agent can upload videos, create Shorts, schedule publishing, and pull analytics — with no additional integration code.
# Add to ~/.claude/claude_desktop_config.json
{
"mcpServers": {
"aether": {
"command": "npx",
"args": ["-y", "aether-mcp"],
"env": { "AETHER_API_KEY": "sk_live_..." }
}
}
}
# Claude can now upload to YouTube:
# "Upload our latest podcast episode to YouTube, schedule for Thursday 3pm"
# "Post this as a YouTube Short with #Shorts in the description"
# "What's our YouTube watch time this month?"YouTube allocates 10,000 quota units per day by default — a video upload costs approximately 1,600 units. Aether manages quota usage efficiently and can request quota increases on your behalf as your usage scales.
Yes. Set scheduledFor in the post request. Aether uploads the video as private and triggers YouTube's scheduled publishing at the exact time specified — no polling or cron job needed on your end.
MP4 (H.264), MOV, AVI, WMV, and WebM. Aether validates file metadata before upload and returns specific error messages if the format or resolution does not meet YouTube's requirements.
Yes. Upload a vertical video (9:16 aspect ratio, under 3 minutes) and include #Shorts in the description. YouTube automatically classifies it as a Short. No special flag needed — just match their format requirements.
Yes. Aether uses the resumable upload protocol internally for all YouTube video posts. If a network interruption occurs mid-upload, the transfer continues from where it stopped rather than restarting from zero.
Free tier · 3 accounts · full API access · MCP server · no credit card.
Get your free API key →