Modify YouTube Channels

Learn about adding a banner to a channel and updating it using the YouTube Data API.

The Channels resource contains details like the number of subscribers, view count, video count, channel name, and description, which helps users to create their presence on the internet with their content.

In this lesson, we’ll look at how we can add a banner and update a channel by using the YouTube Data API’s resources.

Note: The YouTube Data API only offers 10,000 points per day to its free users. These are consumed according to each endpoint call quota. This is explained in detail in the Endpoints Call Quotas lesson in the Appendix.

Upload a channel banner

In this section, we'll upload a channel banner using the ChannelBanners resource's insert method. We can only upload a banner to the YouTube channel with a 6:9 aspect ratio and at least 2048 x 1152 pixels. To add a banner to a channel, we’ll make a POST request to the following endpoint:

https://www.googleapis.com/upload/youtube/v3/channelBanners/insert

Request parameters

For this endpoint, there’s only one optional parameter: onBehalfOfContentOwner. Authenticated users can use this endpoint to make changes to the content on behalf of the content owner.

Let’s see how to call the API endpoint to upload the channel banner. Click the “Run” button to execute the following code:

Press + to interact
import fetch from 'node-fetch';
import fs from 'fs';
const endpointUrl = new URL('https://www.googleapis.com/upload/youtube/v3/channelBanners/insert');
// Define Header Parameters here
const headerParameters = {
Authorization: 'Bearer {{ACCESS_TOKEN}}',
Accept: 'application/octet-stream',
};
const imgPath = fs.readFileSync('YoutubeBanner.jpg');
const options = {
method: 'POST',
headers: headerParameters,
body: imgPath,
};
// Function to make API call
async function uploadChannelBanner() {
try {
const response = await fetch(endpointUrl, options);
printResponse(response);
} catch (error) {
printError(error);
}
}
uploadChannelBanner();

Let’s understand how the above code works by breaking it down:

  • Line 2: We import the fs file system module to read the banner image.

  • Line 4: We specify the endpoint URL for the endpoint.

  • Lines 7–10: We declare the headers by using the headerParameters variable in which we pass the ACCESS_TOKEN.

  • Line 12: We define an imgPath variable that contains the path of the channel banner image. The image file has already been uploaded to the platform.

  • Line 20: We define an async function uploadChannelBanner() to call the endpoint.

Click the link below to go to your channel and check out your updated channel banner:

Response fields

Some important response fields are as follows:

Name

Type

Description

kind

String

Reflects the resource type of the API call.

etag

ETag

Contains the resource ETag.

url

String

Contains the URL of the uploaded image.

Update a channel

After uploading a channel banner, we can also make changes to that channel’s content. For that purpose, we’ll use the update method of the Channels resource by sending a POST request to the following URL:

https://www.googleapis.com/youtube/v3/channels

Request parameters

Here are some important parameters that we can use to call the endpoint:

Name

Type

Category

Description

part

String

Required

This parameter serves two functions. It specifies the properties that will be set by the user as well as the properties that will be included in the API response, which are brandingSettings, invideoPromotion, localizations.

onBehalfOfContentOwner

String

Optional

Used to identify that the authenticated user is making changes to the content on behalf of the content owner.

id

String

Required

Used to specify the listing channel by using its ID.

brandingSettings.channel.country

String

Optional

Used to update the channel's country.

brandingSettings.channel.description

String

Optional

Used to update the channel description.

Let’s update the description of our channel. To do this, we need to set the part parameter as brandingSetting. Click the “Run” button to execute the code.

Press + to interact
import fetch from 'node-fetch';
const endpointUrl = new URL('https://youtube.googleapis.com/youtube/v3/channels');
// Define Header Parameters here
const headerParameters = {
Authorization: 'Bearer {{ACCESS_TOKEN}}',
Accept: 'application/json',
};
const queryParameters = new URLSearchParams({
part: 'brandingSettings',
});
// Define Body Parameters here
const bodyParameters = JSON.stringify({
id: '{{CHANNEL_ID}}',
brandingSettings: {
channel: {
description: 'This is a sample description for a channel',
},
},
});
const options = {
method: 'PUT',
headers: headerParameters,
body: bodyParameters,
};
async function updateChannel() {
try {
endpointUrl.search = queryParameters;
const response = await fetch(endpointUrl, options);
printResponse(response);
} catch (error) {
printError(error);
}
}
updateChannel();

Let’s understand how the above code works by breaking it down:

  • Lines 6–9: We declare the headers by using the headerParameters variable in which we pass the ACCESS_TOKEN.

  • Lines 11–13: We declare the queryParameters variable in which we pass the part as a query parameter and set it to brandingSettings for the call.

  • Lines 16–23: We declare the bodyParameters variable, in which we define the channel ID in the id parameter and pass the updated description in the brandingSettings.channel.description parameter.

Response fields

The endpoint returns updated channel details. Some of the important response fields are as follows:

Name

Type

Description

kind

String

Reflect the resource type of the API call.

etag

ETag

Contains the resource ETag.

id

String

Contains the ID of the channel we are updating.

brandingSettings.channel.description

String

Contains the description of the channel.

brandingSettings.channel.title

String

Contains the title of the channel.