YouTube takes one video per post. There is no separate Shorts endpoint: a
vertical or square video up to three minutes long becomes a Short. Send
application/json with a public HTTPS video.url (Adeli downloads it, up to
1 GB) or base64, or upload the file itself with
multipart.
Uploads are private until Adeli passes YouTube's audit
YouTube locks every video uploaded through an app to private until that app
passes the YouTube API Services audit. Until Adeli does, ask for any
visibility you like: the response reports what YouTube actually applied in
appliedPrivacy, and privacyRestricted is true when that is not what you
asked for. Change the visibility in YouTube Studio afterwards.
Body
platform"youtube"RequiredaccountIduuidRequired- A connected YouTube channel in your organization.
profileIduuid- Optional, because accountId names its profile. If you pass both, they must agree.
titlestringRequired- 1–100 characters, with no
<or>. privacy_status"public" | "unlisted" | "private"Required- Who can see the video. There is no default.
made_for_kidsbooleanRequired- Whether the video is made for kids, as YouTube requires under COPPA. This is the channel owner's own declaration: ask them, never guess.
videoobjectRequired{ url }, a public HTTPS URL of up to 1 GB, or{ content_type, base64 }withvideo/mp4,video/quicktime, orvideo/webm.descriptionstring- Up to 5,000 bytes of UTF-8, with no
<or>. tagsstring[]- Up to 500 characters in total, counting the commas YouTube puts between them.
category_idstring- A numeric YouTube category id. Defaults to
22, People & Blogs. contains_synthetic_mediaboolean- Discloses realistic altered or synthetic content.
publish_atstring- An ISO 8601 time in the future. Requires
privacy_status: "private": YouTube makes the video public at that time. notify_subscribersboolean- Defaults to true.
Returns 202 once YouTube has the file. Processing continues after; poll
YouTube upload status with the
publishId.
Fields
publishIdstring- The YouTube video id, the same as
videoId. Pass it to the status endpoint. appliedPrivacystring- The visibility YouTube applied.
privacyRestrictedis true when it isprivatebut you asked for something else. thumbnail"set" | "not_allowed" | "failed" | nullnullwhen no thumbnail was sent;not_allowedwhen the channel cannot use custom thumbnails.warningsobject[]- Present only when non-empty:
privacy_restricted,thumbnail_not_allowed, orthumbnail_failed.