Search all guides

Reference · Tools

YouTube integration

Manage YouTube channels, playlists, playlist items, videos, and video categories via the YouTube Data API v3.

Action (binary) Marketing v1 Binary data

The YouTube node manages channels, playlists, playlist items, videos and video categories through Data API v3, uploading videos with a resumable chunked upload. A typical build is publishing a rendered video with its title, description and playlist placement set automatically.

Works as
Action (binary)
Tool name
google_youtube
Parameters
57
Outputs
Output, Error
Credentials
YouTube OAuth2
Official docs
YouTube docs developers.google.com

What you can build with YouTube

  • Upload a video to YouTube.
  • Search for videos on a channel.
  • Create a new YouTube playlist.
  • Add a video to a playlist.
  • Update video metadata (title, description, tags).
  • Upload a channel banner image.
  • Get video categories for a region.
  • Rate a video (like/dislike).

Overview

The YouTube tool provides full access to the YouTube Data API v3. Supports five resources: (1) Channel — get, getAll, update, uploadBanner. (2) Playlist — create, delete, get, getAll, update. (3) Playlist Item — add, delete, get, getAll. (4) Video — delete, get, getAll (search), rate, update, upload. (5) Video Category — getAll. Binary operations include video upload (resumable upload with chunked transfer) and channel banner upload. Requires Google OAuth2 credentials with YouTube Data API scope.

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires YouTube OAuth2 credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Channelchannel
Playlistplaylist
Playlist ItemplaylistItem
Videovideo
Video CategoryvideoCategory

Operations

Each resource has its own Operation list, and several resources reuse the same operation values (get, getAll, delete, update). Pick the resource first, then the operation.

ResourceOperationValueDescription
ChannelGetgetRetrieve a channel
ChannelGet ManygetAllRetrieve many channels
ChannelUpdateupdateUpdate a channel
ChannelUpload BanneruploadBannerUpload a channel banner image
PlaylistCreatecreateCreate a playlist
PlaylistDeletedeleteDelete a playlist
PlaylistGetgetGet a playlist
PlaylistGet ManygetAllRetrieve many playlists
PlaylistUpdateupdateUpdate a playlist
Playlist ItemAddaddAdd a video to a playlist
Playlist ItemDeletedeleteRemove an item from a playlist
Playlist ItemGetgetGet a playlist item
Playlist ItemGet ManygetAllRetrieve many playlist items
VideoDeletedeleteDelete a video
VideoGetgetGet a video
VideoGet ManygetAllSearch for videos
VideoRaterateRate a video (like/dislike)
VideoUpdateupdateUpdate video metadata
VideoUploaduploadUpload a video (resumable upload)
Video CategoryGet ManygetAllRetrieve video categories for a region

Parameters

Channel: Get

ParameterTypeRequiredDefaultDescription
Channel IDstringYes—The ID of the channel to retrieve.
Fields (channelPart)multiOptionsNo["*"]Channel resource properties to include in the response, such as snippet, statistics or brandingSettings.
Options: *, brandingSettings, contentDetails, contentOwnerDetails, id, localizations, snippet, statistics, status, topicDetails

Channel: Get Many

ParameterTypeRequiredDefaultDescription
Fields (channelPart)multiOptionsNo["*"]Channel resource properties to include in the response, such as snippet, statistics or brandingSettings.
Options: *, brandingSettings, contentDetails, contentOwnerDetails, id, localizations, snippet, statistics, status, topicDetails
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo25Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}
Options: any
— Category IDstringNo—YouTube guide category ID to filter by.
— For UsernamestringNo—YouTube username to retrieve the channel for.
— IDstringNo—Comma-separated list of channel IDs.
— Managed By MebooleanNofalseWhether to only return channels managed by the content owner.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— Language CodestringNo—Language code for localized resource metadata (e.g. “en”, “de”).
— On Behalf Of Content OwnerstringNo—Content owner ID for CMS users acting on behalf of the content owner.

Channel: Update

ParameterTypeRequiredDefaultDescription
Channel IDstringYes—The ID of the channel to retrieve.
Update FieldscollectionNo{}
Options: private, creativeCommon
— CountrystringNo—The country with which the channel is associated.
— DescriptionstringNo—Channel description (max 1000 characters).
— Default LanguagestringNo—Default language for the channel.
— Default TabstringNo—Content tab to display by default.
— Featured Channels TitlestringNo—Title for the featured channels module (max 30 chars).
— Featured Channels URLsstringNo—Comma-separated list of featured channel IDs.
— KeywordsstringNo—Space-separated keywords for the channel.
— Moderate CommentsbooleanNofalseWhether comments need approval before being visible.
— Profile ColorstringNo—Prominent color for the channel.
— Show Related ChannelsbooleanNofalseWhether to show related channels.
— Show Browse ViewbooleanNofalseWhether to show browse view on the channel page.
— Tracking Analytics Account IDstringNo—Google Analytics account ID for tracking.
— Unsubscribed TrailerstringNo—Video ID for the featured video for unsubscribed viewers.
— On Behalf Of Content OwnerstringNo—Content owner ID for CMS users.

Channel: Upload Banner

ParameterTypeRequiredDefaultDescription
Channel IDstringYes—The ID of the channel to retrieve.
Binary PropertystringYesdataName of the binary property holding the file to upload; names are case-sensitive.

Playlist: Create

ParameterTypeRequiredDefaultDescription
TitlestringYes—The title of the playlist or video.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— DescriptionstringNo—The playlist description.
— Privacy StatusoptionsNo—The playlist privacy status.
Options: private, public, unlisted
— TagsstringNo—Comma-separated keyword tags.
— Default LanguagestringNo—Language code (e.g. “en”).
— On Behalf Of Content OwnerstringNo—Content owner ID.
— On Behalf Of Content Owner ChannelstringNo—Channel ID when acting on behalf of a content owner.

Playlist: Delete

ParameterTypeRequiredDefaultDescription
Playlist IDstringYes—The ID of the playlist.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Playlist: Get

ParameterTypeRequiredDefaultDescription
Playlist IDstringYes—The ID of the playlist.
Fields (playlistPart)multiOptionsNo["*"]Playlist resource properties to include in the response, such as snippet, contentDetails or player.
Options: *, contentDetails, id, localizations, player, snippet, status
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—
— On Behalf Of Content Owner ChannelstringNo—

Playlist: Get Many

ParameterTypeRequiredDefaultDescription
Fields (playlistPart)multiOptionsNo["*"]Playlist resource properties to include in the response, such as snippet, contentDetails or player.
Options: *, contentDetails, id, localizations, player, snippet, status
Return AllbooleanNofalse
LimitnumberNo25(shown when Return All is false)
FilterscollectionNo{}
Options: any
— Channel IDstringNo—Only return playlists from this channel.
— IDstringNo—Comma-separated playlist IDs.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—
— On Behalf Of Content Owner ChannelstringNo—

Playlist: Update

ParameterTypeRequiredDefaultDescription
TitlestringYes—The title of the playlist or video.
Playlist IDstringYes—The ID of the playlist.
Update FieldscollectionNo{}
Options: private, creativeCommon
— DescriptionstringNo—
— Privacy StatusoptionsNo—
Options: private, public, unlisted
— TagsstringNo—Comma-separated keyword tags.
— Default LanguagestringNo—
— On Behalf Of Content OwnerstringNo—

Playlist Item: Add

ParameterTypeRequiredDefaultDescription
Playlist IDstringYes—The ID of the playlist.
Video IDstringYes—
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— PositionnumberNo—Zero-based position in the playlist.
— NotestringNo—User-generated note (max 280 chars).
— Start AtstringNo—Start time in seconds.
— End AtstringNo—End time in seconds.
— On Behalf Of Content OwnerstringNo—

Playlist Item: Delete

ParameterTypeRequiredDefaultDescription
Playlist Item IDstringYes—
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Playlist Item: Get

ParameterTypeRequiredDefaultDescription
Playlist Item IDstringYes—
Fields (playlistItemPart)multiOptionsNo["*"]Playlist item resource properties to include in the response, such as snippet, contentDetails or status.
Options: *, contentDetails, id, snippet, status
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Playlist Item: Get Many

ParameterTypeRequiredDefaultDescription
Playlist IDstringYes—The ID of the playlist.
Fields (playlistItemPart)multiOptionsNo["*"]Playlist item resource properties to include in the response, such as snippet, contentDetails or status.
Options: *, contentDetails, id, snippet, status
Return AllbooleanNofalse
LimitnumberNo25(shown when Return All is false)
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Video: Delete

ParameterTypeRequiredDefaultDescription
Video IDstringYes—The ID of the video.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Video: Get

ParameterTypeRequiredDefaultDescription
Video IDstringYes—The ID of the video.
Fields (videoPart)multiOptionsNo["*"]Video resource properties to include in the response, such as snippet, statistics, contentDetails or liveStreamingDetails.
Options: *, contentDetails, id, liveStreamingDetails, localizations, player, recordingDetails, snippet, statistics, status, topicDetails
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— On Behalf Of Content OwnerstringNo—

Video: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalse
LimitnumberNo25(shown when Return All is false)
FilterscollectionNo{}
Options: any
— Channel IDstringNo—Only return videos from this channel.
— For DeveloperbooleanNofalseRestrict to videos uploaded via your app.
— Published AfterstringNo—ISO 8601 datetime. Only return videos published after this time.
— Published BeforestringNo—ISO 8601 datetime. Only return videos published before this time.
— QuerystringNo—Search query term.
— Region CodestringNo—ISO 3166-1 alpha-2 country code.
— Related To Video IDstringNo—Retrieve videos related to this video.
— Video Category IDstringNo—
— Video SyndicatedbooleanNofalseOnly videos playable outside youtube.com.
— Video TypeoptionsNo—
Options: any, episode, movie
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— OrderoptionsNorelevance
Options: date, relevance
— Safe SearchoptionsNo—
Options: moderate, none, strict

Video: Rate

ParameterTypeRequiredDefaultDescription
Video IDstringYes—The ID of the video.
RatingoptionsNolike
Options: dislike, like, none (remove any previous rating)

Video: Update

ParameterTypeRequiredDefaultDescription
TitlestringYes—The title of the playlist or video.
Region CodestringNo—ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”) for the region whose video categories apply.
Category IDstringYes—Numeric video category ID. Use videoCategory:getAll to list available categories for your region.
Video IDstringYes—The ID of the video.
Update FieldscollectionNo{}
Options: private, creativeCommon
— DescriptionstringNo—
— TagsstringNo—Comma-separated tags.
— Default LanguagestringNo—
— Privacy StatusoptionsNo—
Options: private, public, unlisted
— EmbeddablebooleanNofalse
— Public Stats ViewablebooleanNotrue
— Publish AtstringNo—
— Recording DatestringNo—
— Self Declared Made For KidsbooleanNofalse
— LicenseoptionsNo—
Options: creativeCommon, youtube

Video: Upload

ParameterTypeRequiredDefaultDescription
TitlestringYes—The title of the playlist or video.
Region CodestringNo—ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”) for the region whose video categories apply.
Category IDstringYes—Numeric video category ID. Use videoCategory:getAll to list available categories for your region.
Binary PropertystringYesdataName of the binary property holding the file to upload; names are case-sensitive.
OptionscollectionNo{}
Options: private, creativeCommon, date, moderate
— DescriptionstringNo—The video description.
— TagsstringNo—Comma-separated keyword tags.
— Default LanguagestringNo—Language code (e.g. “en”).
— Privacy StatusoptionsNo—
Options: private, public, unlisted
— EmbeddablebooleanNofalseWhether the video can be embedded on other websites.
— Public Stats ViewablebooleanNotrueWhether extended stats are publicly viewable.
— Publish AtstringNo—Scheduled publish date (ISO 8601). Requires privacyStatus=private.
— Recording DatestringNo—Date and time when the video was recorded (ISO 8601).
— Self Declared Made For KidsbooleanNofalseWhether the video is designated as child-directed.
— LicenseoptionsNo—
Options: creativeCommon, youtube
— Notify SubscribersbooleanNofalseWhether to send notifications to channel subscribers.

Video Category: Get Many

ParameterTypeRequiredDefaultDescription
Region CodestringYes—ISO 3166-1 alpha-2 country code (e.g. “US”, “GB”) for the region whose video categories apply.
Return AllbooleanNofalse
LimitnumberNo25(shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNo(current default)Authentication method to use.
Options: the authentication choices available to your workspace — pick one from the dropdown.
Google AccountcredentialNo—Connect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYes—The email address of the Google service account. (shown when Authentication is serviceAccount)
Private KeystringYes—The private key from the service account JSON key file. (shown when Authentication is serviceAccount)
Max ConcurrencynumberNo5Maximum number of items to process concurrently. Keep low for upload operations.

Output Data

Every operation merges its result onto the input item’s JSON — the fields the item already carried survive, and a result field with the same name overwrites the item’s value. Binary data on the input item is forwarded on every operation, including the two upload operations, which read the file but do not consume it.

OperationOutput
Channel Get, Channel Get Many, Playlist Get, Playlist Get Many, Playlist Item Get, Playlist Item Get Many, Video Get, Video Get Many, Video Category Get ManyOne output item per record returned. Return All keeps paging until YouTube runs out of results.
Channel Update, Playlist Create, Playlist Update, Playlist Item Add, Video UpdateOne output item carrying the returned resource.
Video UploadOne output item carrying the created video resource plus uploadId, the new video’s ID.
Channel Upload BannerOne output item carrying the API response plus bannerUploaded: true.
Playlist Delete, Playlist Item Delete, Video DeleteOne output item carrying success: true and the ID that was removed — deletedPlaylistId, deletedPlaylistItemId or deletedVideoId.
Video RateOne output item carrying success: true, videoId and rating.

An empty result never drops the item. A listing that matched nothing emits the input item with results: [] added; a Get that found nothing emits it with success: false and a message such as “Video not found”. Check for the field you expect rather than assuming an item means a hit.

Example Configuration

Upload a video file produced by an upstream node:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "video",
    "operation": "upload",
    "title": "{{ $json.title }}",
    "regionCode": "US",
    "categoryId": "22",
    "binaryPropertyName": "data",
    "options": {
      "description": "{{ $json.description }}",
      "tags": "tutorial,howto",
      "privacyStatus": "private",
      "notifySubscribers": false,
      "selfDeclaredMadeForKids": false
    }
  }
}

Search a channel’s most recent videos:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "video",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
      "q": "release notes",
      "videoType": "any"
    },
    "options": {
      "order": "date",
      "safeSearch": "moderate"
    }
  }
}

Create a public playlist:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "playlist",
    "operation": "create",
    "title": "Best of {{ $json.year }}",
    "options": {
      "description": "Our most watched uploads",
      "privacyStatus": "public",
      "tags": "highlights,annual"
    }
  }
}

Add a video to a playlist at the top:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "playlistItem",
    "operation": "add",
    "playlistId": "PLxxxxxxxxxxxxxxxx",
    "videoId": "{{ $json.uploadId }}",
    "options": {
      "position": 0,
      "note": "Added automatically"
    }
  }
}

Publish a video that was uploaded as private:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "video",
    "operation": "update",
    "videoId": "{{ $json.uploadId }}",
    "title": "{{ $json.title }}",
    "categoryId": "22",
    "updateFields": {
      "description": "Updated description",
      "tags": "tutorial,howto",
      "privacyStatus": "public",
      "license": "youtube"
    }
  }
}

Read a video’s statistics only:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "video",
    "operation": "get",
    "videoId": "{{ $json.videoId }}",
    "videoPart": ["snippet", "statistics"]
  }
}

List the video categories available in a region:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "videoCategory",
    "operation": "getAll",
    "regionCode": "US",
    "returnAll": true
  }
}

Replace a channel banner from a binary field:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "channel",
    "operation": "uploadBanner",
    "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "binaryPropertyName": "data"
  }
}

Like a video:

{
  "type": "google_youtube",
  "parameters": {
    "resource": "video",
    "operation": "rate",
    "videoId": "{{ $json.videoId }}",
    "rating": "like"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool manages YouTube channels, playlists, playlist items, videos, and video categories. It is ideal for tasks like uploading videos, creating playlists, updating video metadata, or retrieving channel information, rather than for general web searches or social media interactions. It produces updated YouTube content, new playlists, uploaded videos, or retrieved information about channels, videos, and categories.

  • Uploads are resumable and chunked, so a large file is sent in pieces rather than one request. Keep Max Concurrency low when a batch of items each carries a video — several simultaneous uploads is the quickest way to exhaust the API quota.
  • Category ID is numeric. Run Video Category: Get Many for the region first if you do not already know the ID.
  • Scheduling requires privacy. Publish At only takes effect on a video whose Privacy Status is private.
  • Playlist Item ID is not the Video ID. Delete and Get on a playlist item want the item’s own ID, which comes back from Playlist Item: Add or Get Many.
  • Listings default to your own account. Channel and Playlist Get Many return the authenticated account’s resources until you set a filter such as Channel ID or ID, at which point they return those instead.
  • Fields trims the response. Asking for snippet alone instead of * makes big listings much smaller and cheaper to page through.

Frequently asked questions

How are large videos uploaded?

Resumably and in chunks rather than one request. Keep Max Concurrency low when a batch of items each carries a video — several simultaneous uploads is the quickest way to exhaust the API quota.

What form does Category ID take?

Numeric. Look it up rather than passing the category's display name, which is not accepted.

What can it manage besides videos?

Channels, playlists, playlist items and video categories, so publishing and organisation are both covered.

Which credential does it need?

A YouTube OAuth2 credential for the channel you are publishing to.

Build with YouTube

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need YouTube OAuth2 credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.