Uploads a watermark image to YouTube and sets it for a channel.
This method supports media upload. Uploaded files must conform to these constraints:
- Maximum file size: 10MB
- Accepted Media MIME types:
image/jpeg
,image/png
,application/octet-stream
Quota impact: A call to this method has a quota cost of approximately 50 units.
Request
HTTP request
POST https://www.googleapis.com/upload/youtube/v3/watermarks/set
Authorization
This request requires authorization with at least one of the following scopes (read more about authentication and authorization).
Scope |
---|
https://www.googleapis.com/auth/youtubepartner |
https://www.googleapis.com/auth/youtube.upload |
https://www.googleapis.com/auth/youtube |
https://www.googleapis.com/auth/youtube.force-ssl |
Parameters
The following table lists the parameters that this query supports. All of the parameters listed are query parameters.
Parameters | ||
---|---|---|
Required parameters | ||
channelId |
string The channelId parameter specifies the YouTube channel ID for which the watermark is being provided. |
|
Optional parameters | ||
onBehalfOfContentOwner |
string Note: This parameter is intended exclusively for YouTube content partners. The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner. |
Request body
Provide a watermark resource in the request body.
Response
If successful, this method returns an HTTP 204
response code (No Content
).
Examples
Note: The following code samples may not represent all supported programming languages. See the client libraries documentation for a list of supported languages.
Python
This sample calls the API'swatermarks.set
method to upload an image and set it as the
watermark image for a channel. The request must be authorized by the channel that owns the video.
This example uses the Python client library.
#!/usr/bin/python # Usage example: # python set_watermark.py --channelid='<channel_id>' --file='<file_name>' # --metadata='{ "position": { "type": "corner", "cornerPosition": "topRight" }, # "timing": { "type": "offsetFromStart", "offsetMs": 42 } }' import json import os import sys import httplib2 from apiclient.discovery import build from apiclient.errors import HttpError from oauth2client.file import Storage from oauth2client.client import flow_from_clientsecrets from oauth2client.tools import argparser, run_flow # The CLIENT_SECRETS_FILE variable specifies the name of a file that contains # the OAuth 2.0 information for this application, including its client_id and # client_secret. You can acquire an OAuth 2.0 client ID and client secret from # the Google Developers Console at # https://console.developers.google.com/project/_/apiui/credential # Please ensure that you have enabled the YouTube Data API for your project. # For more information about using OAuth2 to access the YouTube Data API, see: # https://developers.google.com/youtube/v3/guides/authentication # For more information about the client_secrets.json file format, see: # https://developers.google.com/api-client-library/python/guide/aaa_client_secrets CLIENT_SECRETS_FILE = "client_secrets.json" # This OAuth 2.0 access scope allows for full read/write access to the # authenticated user's account. YOUTUBE_READ_WRITE_SCOPE = "https://www.googleapis.com/auth/youtube" YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" # This variable defines a message to display if the CLIENT_SECRETS_FILE is # missing. MISSING_CLIENT_SECRETS_MESSAGE = """ WARNING: Please configure OAuth 2.0 To make this sample run you will need to populate the client_secrets.json file found at: %s with information from the Developers Console https://console.developers.google.com For more information about the client_secrets.json file format, please visit: https://developers.google.com/api-client-library/python/guide/aaa_client_secrets """ % os.path.abspath(os.path.join(os.path.dirname(__file__), CLIENT_SECRETS_FILE)) # Authorize the request and store authorization credentials. def get_authenticated_service(args): flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE, scope=YOUTUBE_READ_WRITE_SCOPE, message=MISSING_CLIENT_SECRETS_MESSAGE) storage = Storage("%s-oauth2.json" % sys.argv[0]) credentials = storage.get() if credentials is None or credentials.invalid: credentials = run_flow(flow, storage, args) return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, http=credentials.authorize(httplib2.Http())) # Call the API's watermarks.set method to upload the watermark image and # associate it with the proper channel. def set_watermark(youtube, channel_id, file, metadata): try: youtube.watermarks().set( channelId=channel_id, media_body=file, body=metadata, ).execute() except HttpError as e: print "Error while setting watermark: %s" % e.content raise e if __name__ == "__main__": # The "channelid" option specifies the YouTube channel ID that uniquely # identifies the channel for which the watermark image is being updated. argparser.add_argument("--channelid", dest="channelid", help="Required; ID for channel that is having its watermark updated.") # The "file" option specifies the path to the image being uploaded. argparser.add_argument("--file", dest="file", help="Required; path to watermark image file.") # The "metadata" option specifies the JSON for the watermark resource # provided with the request. argparser.add_argument("--metadata", dest="metadata", help="Required; watermark metadata in JSON format.") args = argparser.parse_args() if not args.channelid: argparser.print_help() exit() youtube = get_authenticated_service(args) if not args.file or not os.path.exists(args.file): exit("Please specify a valid file using the --file= parameter.") if not args.metadata: exit("Please specify watermark metadata using the --metadata= parameter.") set_watermark(youtube, args.channelid, args.file, json.loads(args.metadata)) print "The watermark was successfully set."
Errors
The following table identifies error messages that the API could return in response to a call to this method. Please see the error message documentation for more detail.
Error type | Error detail | Description |
---|---|---|
badRequest (400) |
imageFormatUnsupported |
The image you provided is in an unsupported format. |
badRequest (400) |
imageTooTall |
The image you provided is too tall. |
badRequest (400) |
imageTooWide |
The image you provided is too wide. |
badRequest (400) |
mediaBodyRequired |
The request does not include the image content. |
forbidden (403) |
forbidden |
The watermark can't be set for the specified channel. The request may not be properly authorized, or the channelId parameter is set to an invalid value. |