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.
OptionalcategoryCategory hints for PUT /videos/{id}/categories batch body.
Each entry may be a bare slug, full vimeo.com URL, or one of:
/categories/{slug} — top-level category/categories/{parent}/subcategories/{slug} — API subcategory path (e.g. Animation)/categories/{parent}/{slug} — short-form subcategory path (e.g. Branded Content)Connection URIs such as /categories/{parent}/videos are not valid selections.
OptionallicenseStored Vimeo upload license selection.
undefined — no draft override; UI falls back to VimeoAccountDefaults.license
and seeding may copy the connected account default onto the draft.null — explicit “no Creative Commons license” override (Vimeo upload UI label:
“Select a license…”, not “All Rights Reserved”).'by-nc', etc. — explicit Creative Commons license code from GET /creativecommons.Upload omits license on create when unset or null; only CC codes are sent.
Do not add a separate “All Rights Reserved” picker option — that label is internal/API
shorthand only and does not appear in Vimeo’s upload UI.
OptionalcontentStored Vimeo content_rating codes for draft metadata and upload resolution.
undefined — not selected in the UI (field omitted on upload).null — explicit “Not selected” clear sent on PATCH; normalized to undefined when stored.['safe'] — All audiences.[] — Mature tier selected with no detail flags yet (draft/UI placeholder only;
omitted on upload until one or more mature-detail codes are chosen).['language', …] — one or more mature-detail codes from GET /contentratings
(every API row except safe and unrated).
Vimeo-only fields inside the draft
document.platformsJSON. Sent onPOST /me/videosusing snake_case keys where the Vimeo API expects them.