YouTube API Reference

Upload videos and Shorts to YouTube with full metadata control.

Quick reference

authOAuth 2.0 (Google)
text Limit100 (title) / 5,000 (description)
max Media1 video
media RuleVideo is required — no image or text-only posts
max Video DurationUnlimited
entity SelectionYouTube Channels
first CommentSupported — 10,000 chars

Content types

Text-only

Not supported — video is required

Images

Not supported

Video

MP4, MOV, AVI, WebM. Max 2 GB via API.

Shorts

Vertical video under 60 seconds

GIF

Not supported

Media requirements

Constraints enforced by YouTube's API. Requests that violate these limits will be rejected.

ConstraintValue
Max video size2 GB
Video formatsMP4, QUICKTIME, X-MSVIDEO, WEBM
Min image dimensions426x240 px
Max media items1
GIF supportNo

Platform settings

Pass these fields inside platformSettings.youtube in the request body.

title
stringRequired

Video title. Max 100 characters.

description
stringOptional

Video description. Max 5,000 characters.

privacyStatus
stringOptional

Video visibility level.

Default: public

publicunlistedprivate
tags
stringOptional

Comma-separated tags for the video.

categoryId
stringOptional

YouTube category ID (e.g. '22' for People & Blogs).

Default: 22

madeForKids
booleanOptional

Whether 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.

Related