Skip to main content

Quick reference

Before you start

YouTube requires every upload to declare madeForKids: true | false. The default in Postbreeze is false, but the choice matters — videos flagged Made For Kids have comments, notifications, and personalized ads disabled by YouTube. If you flag it wrong, you have to delete and re-upload. Always set this field explicitly so the decision is recorded in your code.
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-ssl scope granted (Postbreeze requests this by default — covers upload + first-comment).
Each upload counts as 1,600 quota units against the channel’s 10,000-unit daily quota. The first-comment call costs an additional 50 quota units. Postbreeze surfaces quota errors as 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 — no workspaceId 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 post content 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

Set visibility: "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 a commentThreads.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).
If the video has comments disabled (e.g. madeForKids: true, or you’ve set channel-wide comments off), the first-comment call fails with YT_COMMENTS_DISABLED and the warning banner appears on the post. The main upload still succeeds.
Comment limit: 10,000 characters.

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.