YouTube

YouTube usually needs more metadata than short-form networks. UniPost exposes those controls in `platform_options.youtube` while keeping the publish flow consistent with the rest of the platform set.

Single-video publishing with rich metadata, Shorts, and playlist insertion.

At a glance

Publishing
Supported
Scheduling
Supported
Analytics
Limited
Inbox
Not supported
Connection
OAuth via Google — Quickstart and White-label both supported

Feature matrix

FeatureSupportNotes
Video postsExactly 1 video
ShortsUse platform_options.youtube.shorts
SchedulingUse scheduled_at or platform_options.youtube.publish_at
Playlist insertionUse platform_options.youtube.playlist_id
AnalyticsPartialLikes, comments, and view count today
Text-only postsXVideo-first platform
Image postsXNot a native publish target
Inbox / commentsXNot part of the UniPost inbox today

Known constraints

LimitationWhy
Daily safety cap50 publishes/day per connected YouTube channel (UTC reset). Failed uploads do not count toward the cap.
Title is required and does not fall back to captionplatform_options.youtube.title must be set explicitly
made_for_kids must be explicitYouTube refuses uploads without an audience choice
No inbox surfaceComment moderation is not in UniPost inbox today

Publishing

Ready to publish?Use the shared Publishing guide for hosted URLs, local file uploads, preflight validation, and async publish status. Then use the YouTube examples below for platform-specific payload shape.

Publish examples by surface

Each example calls POST/v1/posts with Bearer auth. Swap the account_ids for your own, then copy the snippet for your language.

Long-form video from a hosted URL

Long-form video from UniPost media library

med_uploaded_video_1 is a placeholder for the media ID returned by POST/v1/media after you reserve the upload and PUT the video bytes to UniPost storage.

Scheduled private upload with playlist insertion

Media & field requirements

FieldRequiredLimitsNotes
media_urls or media_idsRequiredExactly 1 videoPrefer media_ids when starting from a local file. Create the media ID with POST/v1/media, upload the file to the returned upload_url, then publish.
captionOptional5,000 charsUsed as YouTube description text.
platform_options.youtube.titleRequiredmax 100 charsRequired video title. This does not fall back to caption.
platform_options.youtube.made_for_kidsRequiredbooleanExplicit audience selection required before publish.
platform_options.youtube.privacy_statusOptionalprivate / public / unlistedDashboard defaults to public, but YouTube may still force private for unverified API projects.
platform_options.youtube.shortsOptionalbooleanRoutes the upload toward Shorts behavior

Hosted URLs: pass the public URL in media_urls. Local files: reserve an upload with POST/v1/media, PUT the bytes to the returned upload_url, then publish with media_ids. Full flow in the Publishing guide.

Media specifications

Per-surface limits for text, images, and video. These are the source of truth UniPost uses for preflight validation and media optimization — treat hard-limit values as enforced and "recommended" values as platform guidance.

Video (long-form)

Default YouTube upload surface. Metadata (title + audience) is required; thumbnail is optional.

TypeRequirementValue
TextTitle100 chars (required, cannot fall back to caption)
TextDescription5,000 chars
TextTags500 chars total across all tags
TextMade for kidsRequired boolean — no default
ImageThumbnail formatsJPG, PNG, GIF (2 MB max)
ImageThumbnail dimensions1,280 × 720 recommended (min 640 wide), 16:9
ImageThumbnail supportVideo only — Shorts do not accept custom thumbnails
VideoFormatsMP4, MOV, WebM (UniPost v1 — YouTube also accepts AVI / WMV / FLV / 3GPP / MPEG-PS via direct upload, but UniPost rejects those at validate)
VideoMax file size256 GB
VideoDurationVerified channels: up to 12 hr. Unverified: 15 min.
VideoAspect ratio16:9 standard (others pillar-/letterboxed by YouTube)
VideoResolutionMin 240p; up to 4,320p (8K). 1,080p or 2,160p recommended
VideoFrame rate24, 25, 30, 48, 50, or 60 fps (progressive)
VideoCodecH.264 high profile recommended; H.265 accepted
VideoBitrate8 Mbps (1080p SDR) – 68 Mbps (2160p HDR)
VideoAudioAAC-LC stereo or 5.1, 48 kHz, up to 384 kbps

Shorts

Vertical short-form upload. Classified as a Short automatically when the upload is ≤ 3 min and vertical.

TypeRequirementValue
TextTitle100 chars (required)
TextDescription5,000 chars
Text#shorts tagOptional — adding to title/description historically boosted Shorts surfacing
VideoMax file size256 GB (rarely used in practice)
VideoDuration≤ 3 min (Oct 2024 cap)
VideoAspect ratio9:16 vertical
VideoDimensions1,080 × 1,920 recommended
VideoFrame rate30 fps typical (24 – 60 accepted)
VideoCodecH.264
VideoAudioAAC-LC stereo, 128 kbps

Platform-specific options

OptionValuesNotes
platform_options.youtube.category_idstringYouTube category ID
platform_options.youtube.tagsstring[]Tag list for snippet metadata
platform_options.youtube.default_languagestringBCP-47 style language tag such as en or en-US.
platform_options.youtube.recording_datestringRecording date as YYYY-MM-DD or RFC3339 datetime.
platform_options.youtube.publish_atstringRFC3339 datetime. Requires privacy_status: private.
platform_options.youtube.notify_subscribersbooleanDefaults to true when omitted.
platform_options.youtube.embeddablebooleanWhether the video can be embedded off YouTube.
platform_options.youtube.licenseyoutube / creativeCommonYouTube license selection.
platform_options.youtube.public_stats_viewablebooleanControls extended public stats visibility.
platform_options.youtube.contains_synthetic_mediabooleanDisclosure flag for realistic altered/synthetic media.
platform_options.youtube.playlist_idstringIf set, UniPost calls playlistItems.insert after the upload succeeds.

Analytics

MetricSupportNotes
Video viewsSupported
LikesSupported
CommentsSupported
ImpressionsXYouTube Data API does not expose impressions per video
ReachXNot exposed by YouTube Data API
SharesXNot exposed by YouTube Data API
SavesXNot exposed by YouTube Data API

Connection modes

Pick the setup that matches how the account is owned. Quickstart is fastest when you publish to your own accounts; White-label is required when your customers bring their own accounts through a branded flow. Full setup details in Quickstart and White-label.

ModeBest forApp / credentialsAvailability
QuickstartFast setup — UniPost handles OAuthUniPost-managed appFree / paid quota
White-labelYour customers connect their own accountsYour OAuth appPaid plans only
VerificationUnverified Google projects cap uploads and may force privateComplete YouTube API verification for public uploads

Validation errors

CodeWhat it means
media_requiredYouTube requires exactly one video
too_many_mediaMore than one media asset supplied
invalid_privacy_statusYouTube privacy value is not recognized
youtube_made_for_kids_requiredYouTube requires an explicit made_for_kids value
youtube_publish_at_requires_privateYouTube publish_at only works with private visibility
invalid_licenseYouTube license value is not recognized

Next steps