YouTube
Uploads, Shorts, visibility, and quota budget.
YouTube
Posting uses the YouTube Data API v3. OAuth scope: https://www.googleapis.com/auth/youtube.upload. Your Google Cloud project must have the API enabled and sufficient quota budget.
Post types
postType | What it is |
|---|---|
video | Standard YouTube video |
short | Vertical video ≤ 60 seconds; automatically classified as a Short |
short is not actually a distinct upload endpoint; it's a regular video upload where the content matches YouTube's Short criteria (vertical, ≤60s). YouTube auto-classifies on its side. Use postType: "short" to signal intent so Postato can validate the file dimensions before upload.
Video specs
| Property | Requirement |
|---|---|
| Format | MP4, MOV, AVI, WMV, FLV, WEBM, MPEGPS, 3GPP |
| Codec | H.264 recommended; H.265 / VP9 accepted |
| Max file size | 256 GB (practical cap is 128 GB for most accounts) |
| Max duration | 12 hours (or 15 minutes for unverified accounts) |
| Aspect for regular | 16:9 (widescreen) standard |
| Aspect for short | 9:16 (vertical) required |
| Short max duration | 60 seconds |
| Recommended resolution | 1080p or 4K for regular; 1080×1920 for shorts |
Payload
{
"platform": "youtube",
"accountId": "acc_01H...",
"status": "publish",
"postType": "video",
"content": "Deep dive on our architecture rewrite.",
"media": [{ "id": "med_01H...video" }],
"options": {
"title": "How we rebuilt our API in 8 weeks",
"categoryId": "28",
"privacy": "public",
"tags": ["engineering", "api", "postato"],
"madeForKids": false
}
}content maps to the video's description (up to 5,000 characters). options.title is the YouTube video title (up to 100 characters, required).
Privacy
options.privacy:
| Value | Visibility |
|---|---|
public | Anyone can find |
unlisted | Accessible via direct link only |
private | Only you and invited viewers |
Categories
options.categoryId is a numeric string. Common ones:
22: People & Blogs24: Entertainment27: Education28: Science & Technology26: Howto & Style
Full list: YouTube Data API videoCategories.list.
Tags
options.tags is an array of strings. Up to 500 characters total across all tags. Tags help discoverability but are less impactful than they used to be; don't obsess.
Made for Kids
options.madeForKids (required). Legal compliance flag: if your content is directed at children, set true. Misrepresenting is a COPPA violation in the US.
Thumbnails
Custom thumbnails are supported but need a separate call (not included in POST /posts yet). The video publishes with a YouTube-generated frame; you can upload the custom thumbnail afterward via the video.update flow. We're tracking native support; let us know if this is blocking.
Quota budget
YouTube Data API uses a quota system. Each project gets 10,000 units/day by default:
| Operation | Cost |
|---|---|
| Video upload | ~1,600 units |
| Video update (e.g., thumbnail) | ~50 units |
| Insights query | ~2 units |
A default project can upload ~6 videos per day. Request a quota increase through Google Cloud Console for higher volumes; the form takes 1–4 weeks to approve.
Scheduling
Via options.publishAt (ISO 8601). The video uploads immediately but stays private until publishAt, then auto-transitions to public.
Postato's own status: "scheduled" + scheduledAt delays the upload itself until the scheduled time. Use the YouTube-native publishAt if you want the video uploaded NOW but visible LATER (useful for pre-processing / transcoding lead time); use Postato's scheduled if you want the whole flow delayed.
Gotchas
- Unverified account 15-min cap: new Google accounts can't upload videos over 15 minutes until verified (SMS code). Users should verify in YouTube Studio before trying.
- Age-restricted or region-blocked content: these flags are set by YouTube post-upload based on content scanning. Your post can
publishsuccessfully and then get restricted minutes later; listen for manual review via the YouTube API if it matters. - Community Guidelines strikes: posting flagged content gets the account strike. Three strikes = channel termination. Guard programmatic posters with content moderation.
- Quota exhaustion at scale: 6 uploads/day sounds like a lot until you're running 50 accounts through one project. Request more, or split across projects.
- Copyright claims: YouTube's Content ID system flags matches automatically post-upload. Your video publishes fine but may have monetization removed. Not a Postato concern, but worth knowing.