Quick reference
Before you start
The connected YouTube channel must:- Have completed the OAuth flow.
- Have a verified phone number (YouTube enforces this for any video > 15 minutes).
- Have
youtube.force-sslscope granted (Postbreeze requests this by default — covers upload + first-comment).
YT_QUOTA_EXCEEDED.
See Platform settings for the full
platformOptions reference and Media uploads
for the two ways to attach the video file (mediaItems URL ingest vs.
pre-uploaded mediaIds).
Quick start
Workspace is inferred from your API key — noworkspaceId argument.
The flat shape (content + platforms) is canonical; pass YouTube’s
madeForKids flag in platformOptions on every upload.
Content types
Long-form video
Any video over 3 minutes, or any video that is not 9:16. The postcontent becomes the YouTube description; youtubeTitle (if set) becomes the YouTube title. If you don’t pass youtubeTitle, the first line of content (≤ 100 chars) is used.
Short
A video ≤ 3 minutes in 9:16 aspect ratio. YouTube auto-classifies it as a Short on their end — you don’t pass a Shorts flag; just ensure the file matches Shorts requirements.Unlisted preview
Setvisibility: "UNLISTED" to upload without making the video discoverable. Useful for sharing with reviewers before public launch.
Media requirements
Videos
YouTube targets accept a single video. Images, GIFs, and documents
are rejected at validation. See Media uploads
for the URL ingest vs. pre-upload trade-off.
Platform-specific fields
Full schema in Platform settings → YouTube.
First comment
YouTube exposes acommentThreads.insert endpoint that lets the channel owner post a top-level comment on a video they own. Postbreeze calls it after the upload completes — it costs 50 quota units, comes back with a commentId, and posts as the channel itself (not as a personal Google account).
Analytics
Refresh cadence: every 14 days. Per YouTube’s retention rule, raw
MetricSnapshot rows are purged on disconnect or on platform 404 (video deleted, channel suspended).
Common errors
What you can’t do
- ❌ Edit video metadata after upload (planned for v2)
- ❌ Schedule using YouTube Studio’s native scheduler (we run our own queue)
- ❌ Upload to a Brand Account other than the connected one
- ❌ Set a custom thumbnail via API (works only for long-form videos on verified channels and isn’t exposed in v1)
- ❌ Pass tags, override the category, or flag synthetic media —
Postbreeze applies server-side defaults (category
22— People & Blogs) - ❌ Add to playlists at upload time
- ❌ Premieres or Live streams
- ❌ Community posts (text/poll/image posts) — only video uploads + first-comments
- ❌ Set end screens or cards
Full control: nested shape
The nested shape (caption + targets, socialAccountId per target) is
the lower-level surface the flat shape compiles down to. Use it when you
want a single payload that targets multiple platforms with distinct
per-platform captions or media. The YouTube platformOptions are
identical.