OptionaltitlePlatform-specific title; maps to each API's title field (e.g. SA fullTitle, YouTube snippet.title).
OptionaldescriptionPlatform-specific description/body text.
OptionaltagsPlatform-specific tags; mapped per API (e.g. YouTube snippet.tags, Vimeo tags).
OptionalvisibilityPlatform-specific privacy (YouTube and Vimeo only).
OptionalthumbnailPlatform-specific draft thumbnail R2 key when not using the shared draft thumbnail.
undefined — use the shared draft thumbnail.'' — explicit per-platform “no thumbnail” (do not fall back to shared).null — PATCH/editor clear sentinel; merge removes the override so shared is used again.OptionalthumbnailMIME type for thumbnailR2KeyOverride.
Uses the same undefined / '' / null semantics as thumbnailR2KeyOverride.
OptionalthumbnailPresigned preview URL for thumbnailR2KeyOverride in the draft editor only. Not persisted in draft document JSON.
OptionalcategoryYouTube Data API snippet.categoryId (numeric string, e.g. "22" = People & Blogs).
OptionalmadeMaps to status.selfDeclaredMadeForKids on upload.
Optionaldefaultsnippet.defaultLanguage (BCP-47, e.g. "en").
Optionaldefaultsnippet.defaultAudioLanguage (BCP-47). null means explicitly cleared (no language).
Optionalembeddablestatus.embeddable.
Optionallicensestatus.license: standard YouTube license vs Creative Commons.
Optionalnotifyvideos.insert query parameter notifySubscribers. When false, subscribers are not
notified and the video is omitted from the subscriptions feed. Omitted/true matches YouTube default (notify).
Optionalpublishstatus.publishAt (ISO 8601). Requires privacyStatus private until publish time.
OptionalplaylistAfter upload, append the video via playlistItems.insert (one call per id).
Values are playlist ids from playlist?list=… in the URL.
OptionalplaylistPlaylist titles (snippet.title). Same key as porjo/youtubeuploader -metaJSON.
The server uses playlists.list (mine=true, paginated), then playlists.insert if no case-insensitive
title match, then playlistItems.insert. Duplicate titles in this array are deduped case-insensitively (first wins).
OptionalrecordingRecording date sent to recordingDetails.recordingDate (RFC 3339 full-date, e.g. "2025-06-08").
Omitted from upload unless explicitly set.
OptionalisWhen true, marks this draft as a YouTube Short (UI icon + shorts URL on success). Classification is automatic from format and duration.
YouTube-only fields inside the draft
document.platformsJSON. Shared copy (title, description, tags) lives at the document root.Field names align with YouTube Data API v3
videos.insertsnippet/statuswhere applicable.