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 | Optional | Video title. Max 100 characters (longer is rejected with 400). Defaults to the first line of the content. |
description | string | Optional | Video description. Max 5,000 characters (longer is rejected with 400). Defaults to the content. |
privacyStatus | string | Optional | Video visibility level. Any other value is rejected with 400 naming the valid values.Default: publicpublicunlistedprivate |
tags | string | string[] | Optional | Tags for the video: an array of strings or a comma-separated string. Stored and echoed back as a comma-separated string; about 480 characters of tags in total reach YouTube. |
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). Must be a boolean; anything else is rejected with 400.Default: false |
titlestringOptionalVideo title. Max 100 characters (longer is rejected with 400). Defaults to the first line of the content.
descriptionstringOptionalVideo description. Max 5,000 characters (longer is rejected with 400). Defaults to the content.
privacyStatusstringOptionalVideo visibility level. Any other value is rejected with 400 naming the valid values.
Default: public
publicunlistedprivatetagsstring | string[]OptionalTags for the video: an array of strings or a comma-separated string. Stored and echoed back as a comma-separated string; about 480 characters of tags in total reach YouTube.
categoryIdstringOptionalYouTube category ID (e.g. '22' for People & Blogs).
Default: 22
madeForKidsbooleanOptionalWhether the video is made for kids (COPPA compliance). Must be a boolean; anything else is rejected with 400.
Default: false
These fields are validated when the post is created and echoed back under platformSettings.youtube on GET /api/v1/posts/:id.
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.