YouTube API Reference
Upload videos and Shorts to YouTube with full metadata control.
Quick reference
| auth | OAuth 2.0 (Google) |
| text Limit | 100 (title) / 5,000 (description) |
| max Media | 1 video |
| media Rule | Video is required — no image or text-only posts |
| max Video Duration | Unlimited |
| entity Selection | YouTube Channels |
| first Comment | Supported — 10,000 chars |
Content types
Not supported — video is required
Not supported
MP4, MOV, AVI, WebM. Max 2 GB via API.
Vertical video under 60 seconds
Not supported
Media requirements
Constraints enforced by YouTube's API. Requests that violate these limits will be rejected.
| Constraint | Value |
|---|---|
| Max video size | 2 GB |
| Video formats | MP4, QUICKTIME, X-MSVIDEO, WEBM |
| Min image dimensions | 426x240 px |
| Max media items | 1 |
| GIF support | No |
Platform settings
Pass these fields inside platformSettings.youtube in the request body.
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Required | Video title. Max 100 characters. |
description | string | Optional | Video description. Max 5,000 characters. |
privacyStatus | string | Optional | Video visibility level.Default: publicpublicunlistedprivate |
tags | string | Optional | Comma-separated tags for the video. |
categoryId | string | Optional | YouTube category ID (e.g. '22' for People & Blogs).Default: 22 |
madeForKids | boolean | Optional | Whether the video is made for kids (COPPA compliance).Default: false |
titlestringRequiredVideo title. Max 100 characters.
descriptionstringOptionalVideo description. Max 5,000 characters.
privacyStatusstringOptionalVideo visibility level.
Default: public
publicunlistedprivatetagsstringOptionalComma-separated tags for the video.
categoryIdstringOptionalYouTube category ID (e.g. '22' for People & Blogs).
Default: 22
madeForKidsbooleanOptionalWhether the video is made for kids (COPPA compliance).
Default: false
Code examples
Basic post
curl -X POST https://schedulala.com/api/v1/posts \-H "Authorization: Bearer sk_live_YOUR_KEY" \-H "Content-Type: application/json" \-d '{"content": "","platforms": [{ "platform": "youtube", "accountId": "acc_yt" }],"mediaItems": [{ "type": "video", "url": "https://example.com/video.mp4" }],"platformSettings": {"youtube": {"title": "My First API Upload","description": "Uploaded via the Schedulala API","privacyStatus": "public","tags": "api,tutorial,schedulala","categoryId": "22"}},"publishNow": true}'
Post with media
# Upload a YouTube Short (vertical video under 60s)curl -X POST https://schedulala.com/api/v1/posts \-H "Authorization: Bearer sk_live_YOUR_KEY" \-H "Content-Type: application/json" \-d '{"content": "","platforms": [{ "platform": "youtube", "accountId": "acc_yt" }],"mediaItems": [{ "type": "video", "url": "https://example.com/short.mp4" }],"platformSettings": {"youtube": {"title": "Quick Tip #Shorts","description": "A quick tip for you!","privacyStatus": "public"}},"publishNow": true}'
Quirks & gotchas
Video is required — no image or text-only posts.
Uses title + description instead of a single text/content field.
YouTube title is passed via platformSettings.youtube.title, not the top-level content field.
Video max: 2 GB via API upload.
Minimum video dimensions: 426x240 px.
Supports MP4, MOV, AVI, and WebM formats.
Entity selection: select which YouTube Channel to upload to after connecting.
Include #Shorts in the title for vertical videos under 60s to publish as a Short.