This document identifies the different types of errors that YouTube Live Streaming API operations can return. You can also find a list of errors for any individual method in the reference documentation for that method.
fanFundingEvents
The following tables identify error messages that the API returns in response to calls related to fanFundingEvents
resources.
fanFundingEvents.list
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
insufficientPermissions
|
You do not have the necessary permissions to view the channel's Fan Funding events. |
invalidValue (400)
|
fanFundingNotEnabledForChannelId
|
The channel does not have Fan Funding enabled. |
liveBroadcasts
The following tables identify error messages that the API returns in response to calls related to liveBroadcasts
resources.
liveBroadcasts.bind
Error type | Error detail | Description |
---|---|---|
backendError
|
internalError
|
An internal error occurred during the bind. |
forbidden (403)
|
liveBroadcastBindingNotAllowed
|
The current status of the live broadcast does not allow it to be bound to a stream. |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to retrieve the specified live broadcast. For more information, see Implementing OAuth2 authentication . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
notFound (404)
|
liveBroadcastNotFound
|
The broadcast specified by the id
parameter does not exist. |
notFound (404)
|
liveStreamNotFound
|
The stream specified by the streamId
parameter does not exist. |
rateLimitExceeded
|
userRequestsExceedRateLimit
|
The user has sent too many requests in a given timeframe. |
required (400)
|
idRequired
|
The required id
parameter must identify the broadcast to bind. |
liveBroadcasts.delete
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
liveBroadcastDeletionNotAllowed
|
The current status of the live broadcast does not allow it to be deleted. |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to delete the specified live broadcast. For more information, see Implementing OAuth2 authentication . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
notFound (404)
|
liveBroadcastNotFound
|
The id
property specified in the liveBroadcast resource
did not identify a broadcast. |
liveBroadcasts.insert
Error type | Error detail | Description |
---|---|---|
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to create the live broadcast. |
insufficientPermissions
|
livePermissionBlocked
|
The user that authorized the request is unable to stream live video on YouTube at this time. Details explaining why the user cannot stream live video may be available in the user's channel settings at https://www.youtube.com/features . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
invalidValue (400)
|
invalidAutoStart
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enableAutoStart
property.
Not all broadcasts support this setting. |
invalidValue (400)
|
invalidAutoStop
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enableAutoStop
property. You
cannot modify the enableAutoStop
setting for a persistent broadcast. |
invalidValue (400)
|
invalidDescription
|
The liveBroadcast resource
did not specify a valid value for the snippet.description
property. The property's value can contain up to 5000 characters. |
invalidValue (400)
|
invalidEmbedSetting
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enable_embed
property. You cannot embed this broadcast. |
invalidValue (400)
|
invalidLatencyPreferenceOptions
|
The liveBroadcast resource
contained an invalid value for the contentDetails.latencyPreference
property.
Not all settings are supported with this latency preference. |
invalidValue (400)
|
invalidPrivacyStatus
|
The liveBroadcast resource
contained an invalid value for the status.privacy_status
property. |
invalidValue (400)
|
invalidProjection
|
The liveBroadcast resource
contained an invalid value for the contentDetails.projection
property. A default broadcast's projection cannot be set to 360
. |
invalidValue (400)
|
invalidScheduledEndTime
|
The liveBroadcast resource
contained an invalid value for the snippet.scheduledEndTime
property. The scheduled end time must follow the scheduled start time. |
invalidValue (400)
|
invalidScheduledStartTime
|
The liveBroadcast resource
contained an invalid value for the snippet.scheduledStartTime
property. The scheduled start time must be in the future and close enough to the current date that a broadcast could be reliably scheduled at that time. |
invalidValue (400)
|
invalidTitle
|
The liveBroadcast resource
did not specify a valid value for the snippet.title
property. The property's value must be between 1 and 100 characters long. |
limitExceeded
|
userBroadcastsExceedLimit
|
The user has created too many live or scheduled broadcasts and must stop or delete some. |
rateLimitExceeded
|
userRequestsExceedRateLimit
|
The user has sent too many requests in a given timeframe. |
required (400)
|
privacyStatusRequired
|
The liveBroadcast resource
must specify a privacy status. See valid privacyStatus
values
. |
required (400)
|
scheduledEndTimeRequired
|
The liveBroadcast resource
must specify the snippet.scheduledEndTime
property. |
required (400)
|
scheduledStartTimeRequired
|
The liveBroadcast resource
must specify the snippet.scheduledStartTime
property. |
required (400)
|
titleRequired
|
The liveBroadcast resource
must specify the snippet.title
property. |
liveBroadcasts.list
Error type | Error detail | Description |
---|---|---|
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to retrieve the live broadcast. |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
liveBroadcasts.transition
Error type | Error detail | Description |
---|---|---|
backendError
|
errorExecutingTransition
|
An error occurred while changing the broadcast's status. |
forbidden (403)
|
errorStreamInactive
|
The requested transition is not allowed when the stream that is bound to the broadcast is inactive. |
forbidden (403)
|
invalidTransition
|
The live broadcast can't transition from its current status to the requested status. |
forbidden (403)
|
redundantTransition
|
The live broadcast is already in the requested status or processing to the requested status. |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to transition the live broadcast. |
insufficientPermissions
|
livePermissionBlocked
|
The user that authorized the request is unable to stream live video on YouTube at this time. Details explaining why the user cannot stream live video may be available in the user's channel settings at https://www.youtube.com/features . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
notFound (404)
|
liveBroadcastNotFound
|
The broadcast specified by the id
parameter does not exist. |
rateLimitExceeded (403)
|
userRequestsExceedRateLimit
|
The user has sent too many requests in a given timeframe. |
required (400)
|
idRequired
|
The required id
parameter must identify the broadcast whose status you want to transition. |
required (400)
|
statusRequired
|
The API request must specify a value for the status
parameter. |
liveBroadcasts.update
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
closedCaptionsTypeModificationNotAllowed
|
The contentDetails.closedCaptionsType
value can only be modified when the broadcast is in the created
or ready
status. |
forbidden (403)
|
enableAutoStartModificationNotAllowed
|
The contentDetails.enableAutoStart
value can only be modified when the stream is inactive and the broadcast is in the created
or ready
status. |
forbidden (403)
|
enableClosedCaptionsModificationNotAllowed
|
The contentDetails.enableClosedCaptions
value can only be modified when the broadcast's status is created
or ready
. |
forbidden (403)
|
enableDvrModificationNotAllowed
|
The contentDetails.
value can be modified only when the broadcast's status is created
or ready
. |
forbidden (403)
|
enableMonitorStreamModificationNotAllowed
|
The contentDetails.
value can be modified only when the broadcast's status is created
or ready
. |
forbidden (403)
|
recordFromStartModificationNotAllowed
|
The contentDetails.
value can be modified only when the broadcast's status is created
or ready
. |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to update the specified live broadcast. For more information, see Implementing OAuth2 authentication . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
invalidValue (400)
|
invalidAutoStart
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enableAutoStart
property.
You cannot modify the enableAutoStart
setting for a persistent broadcast. |
invalidValue (400)
|
invalidAutoStop
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enableAutoStop
property. You
cannot modify the enableAutoStop
setting for a persistent broadcast. |
invalidValue (400)
|
invalidDescription
|
The liveBroadcast resource
did not specify a valid value for the snippet.description
property. snippet.description
can contain up to 5000 characters. |
invalidValue (400)
|
invalidEmbedSetting
|
The liveBroadcast resource
contained an invalid value for the contentDetails.enable_embed
property. You cannot embed this broadcast. |
invalidValue (400)
|
invalidEnableClosedCaptions
|
In the liveBroadcast resource
, the value of the contentDetails.enableClosedCaptions
property is incompatible with the value of the contentDetails.closedCaptionType
setting. Modify the resource to only include one of the two properties, and then resubmit the request. |
invalidValue (400)
|
invalidLatencyPreferenceOptions
|
The liveBroadcast resource
contained an invalid value for the contentDetails.latencyPreference
property.
Not all settings are supported with this latency preference. |
invalidValue (400)
|
invalidPrivacyStatus
|
The liveBroadcast resource
did not specify a valid privacy status. See valid privacyStatus
values
. |
invalidValue (400)
|
invalidProjection
|
The liveBroadcast resource
contained an invalid value for the contentDetails.projection
property. A persistent broadcast's projection cannot be set to 360. |
invalidValue (400)
|
invalidScheduledEndTime
|
The liveBroadcast resource
contained an invalid value for the snippet.scheduledEndTime
property. The scheduled end time must follow the scheduled start time. |
invalidValue (400)
|
invalidScheduledStartTime
|
The liveBroadcast resource
contained an invalid value for the snippet.scheduledStartTime
property. The scheduled start time must be in the future. |
invalidValue (400)
|
invalidTitle
|
The liveBroadcast resource
did not specify a valid value for the snippet.title
property. snippet.title
must be between 1 and 100 characters long. |
notFound (404)
|
liveBroadcastNotFound
|
The id
property specified in the liveBroadcast resource
did not identify a broadcast. |
required (400)
|
broadcastStreamDelayMsRequired
|
The liveBroadcast resource
did not specify the contentDetails.
property. |
required (400)
|
enableMonitorStreamRequired
|
The liveBroadcast resource
did not specify the contentDetails.
property. |
required (400)
|
idRequired
|
The liveBroadcast resource
must include and specify a value for the id
property. |
required (400)
|
privacyStatusRequired
|
The liveBroadcast resource
did not specify a privacy status. See for valid privacyStatus
values
. |
required (400)
|
scheduledEndTimeRequired
|
The liveBroadcast resource
did not specify the snippet.scheduledEndTime
property. |
required (400)
|
scheduledStartTimeRequired
|
The liveBroadcast resource
did not specify the snippet.scheduledStartTime
property. |
required (400)
|
titleRequired
|
The liveBroadcast resource
did not specify the snippet.title
property. |
liveBroadcasts.cuepoint
Error type | Error detail | Description |
---|---|---|
insufficientPermissions (403)
|
insufficientLivePermissions
|
The request is not authorized to insert a cuepoint in the live broadcast. |
insufficientPermissions (403)
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://support.google.com/youtube/answer/2474026 and https://www.youtube.com/features . |
rateLimitExceeded (403)
|
userRequestsExceedRateLimit
|
The user has sent too many requests in a given timeframe. |
required (400)
|
idRequired
|
The required id
parameter must identify the broadcast
in which you want to insert a cuepoint. |
required (400)
|
cueTypeRequired
|
The required cueType
field must be specified in the
API request body. |
notFound (404)
|
liveBroadcastNotFound
|
The broadcast specified by the id
parameter does not exist. |
invalidValue (400)
|
conflictingTimeFields
|
Only one of insertionOffsetTimeMs
and walltimeMs
may be specified. Setting both values causes an error. If you do
not set either value, YouTube will use the default insertionOffsetTimeMs
time
( 0
), which means that the cuepoint will be inserted as soon as possible. |
invalidValue (400)
|
invalidInsertionOffsetTimeMs
|
The cuepoint
resource specified an invalid value for the insertionOffsetTimeMs
property. The value must be 0
or a positive
integer. |
invalidValue (400)
|
invalidWalltimeMs
|
The cuepoint
resource specified an invalid value for the walltimeMs
property. The value must be an integer that represents an epoch
timestamp. |
backendError (5xx)
|
serviceUnavailable
|
The service is unavailable. Try your request again after a few minutes. |
liveChatBans
The following tables identify error messages that the API returns in response to calls related to liveChatBans
resources.
liveChatBans.delete
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
forbidden
|
The specified ban cannot be removed. This error can occur if the request is authorized by one moderator who is attempting to remove a ban on another moderator. |
forbidden (403)
|
insufficientPermissions
|
You do not have the necessary permissions to remove the specified ban. |
invalidValue (400)
|
invalidLiveChatBanId
|
The id
parameter specifies an invalid value. |
notFound (404)
|
liveChatBanNotFound
|
The specified ban cannot be found. |
liveChatBans.insert
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
insufficientPermissions
|
You do not have the necessary permissions to ban a user from the specified live chat. |
forbidden (403)
|
liveChatBanInsertionNotAllowed
|
The specified ban cannot be created. This error can occur if the request attempts to ban the chat owner or another moderator. |
invalidValue (400)
|
invalidChannelId
|
The specified channel ID cannot be found. |
invalidValue (400)
|
invalidLiveChatId
|
The snippet.liveChatId
value specified in the request is invalid. Check the associated liveBroadcast
resource to ensure that you have the correct value. |
notFound (404)
|
liveChatNotFound
|
The specified live chat cannot be found. Check the associated liveBroadcast
resource to ensure that you are setting the snippet.liveChatId
property to the correct value. |
notFound (404)
|
liveChatUserNotFound
|
The live chat user you are trying to ban cannot be found. |
required (400)
|
bannedUserChannelIdRequired
|
The liveChatBan
resource submitted in the request body must specify a value for the snippet.bannedUserDetails.channelId
property. |
required (400)
|
liveChatIdRequired
|
The liveChatBan
resource submitted in the request body must specify a value for the snippet.liveChatId
property. |
liveChatMessages
The following tables identify error messages that the API returns in response to calls related to liveChatMessages
resources.
liveChatMessages.delete
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
forbidden
|
You do not have the permissions required to delete the specified message. |
forbidden (403)
|
modificationNotAllowed
|
The specified liveChatMessage
resource cannot be deleted. The id
parameter might identify a message created by a moderator or another user whose messages cannot be deleted. |
notFound (404)
|
liveChatMessageNotFound
|
The message that you are trying to delete cannot be found. Check the value of the id
parameter to ensure it is correct. |
liveChatMessages.insert
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
forbidden
|
You do not have the permissions required to create the specified message. |
forbidden (403)
|
liveChatDisabled
|
The specified live chat has been disabled by the owner, which means messages cannot be added to the chat. |
forbidden (403)
|
liveChatEnded
|
The specified live chat is no longer live. |
notFound (404)
|
liveChatNotFound
|
The live chat identified in the API request does not exist. This error occurs if the chat has been deleted by the owner. |
rateLimitExceeded
|
rateLimitExceeded
|
The user has posted too many chat messages in a given timeframe. |
required (400)
|
liveChatIdRequired
|
The liveChatMessage resource
must include and specify a value for the snippet.liveChatId
property. |
required (400)
|
typeRequired
|
The liveChatMessage resource
must include and specify a value for the snippet.type
property. Set the parameter value to text
|
liveChatMessages.list
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
forbidden
|
You do not have the permissions required to retrieve messages for the specified live chat. |
forbidden (403)
|
liveChatDisabled
|
Live chat is not enabled for the specified broadcast. |
forbidden (403)
|
liveChatEnded
|
The specified live chat is no longer live. |
notFound (404)
|
liveChatNotFound
|
The live chat that you are trying to retrieve cannot be found. Check the value of the request's liveChatId
parameter to ensure that it is correct. |
rateLimitExceeded
|
rateLimitExceeded
|
The request was sent too quickly after the previous request. This error occurs when API requests to retrieve messages are being sent more frequently than YouTube's refresh rates, which unnecessarily wastes bandwidth. |
liveCuepoints
The following tables identify error messages that the API returns in response to calls related to liveCuepoints
resources.
liveCuepoints.insert
Error type | Error detail | Description |
---|---|---|
invalidValue (400)
|
conflictingTimeFields
|
Only one of offsetTimeMs
and walltime
may be specified. |
liveChatMessages.streamlist
Error type | Error detail | Description |
---|---|---|
INVALID_ARGUMENT (3)
|
LIVE_CHAT_ENDED
|
You can't retrieve messages for the ended live chat. |
PERMISSION_DENIED (7)
|
forbidden
|
You do not have the permissions required to retrieve messages for the specified live chat. |
PERMISSION_DENIED (7)
|
liveChatDisabled
|
Live chat is not enabled for the specified broadcast. |
PERMISSION_DENIED (7)
|
liveChatEnded
|
The specified live chat is no longer live. |
NOT_FOUND (5)
|
liveChatNotFound
|
The live chat that you are trying to retrieve cannot be found. Check the value of the request's liveChatId
parameter to ensure that it is correct. |
RESOURCE_EXHAUSTED (8)
|
rateLimitExceeded
|
The request was sent too quickly after the previous request. This error occurs when API requests to retrieve messages are being sent more frequently than YouTube's refresh rates, which unnecessarily wastes bandwidth. |
liveCuepoints
The following tables identify error messages that the API returns in response to calls related to liveCuepoints
resources.
liveCuepoints.insert
Error type | Error detail | Description |
---|---|---|
invalidValue (400)
|
conflictingTimeFields
|
Only one of offsetTimeMs
and walltime
may be specified. |
liveStreams
The following tables identify error messages that the API returns in response to calls related to liveStreams
resources.
liveStreams.delete
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
liveStreamDeletionNotAllowed
|
The specified live stream cannot be deleted because it is bound to a broadcast that has still not completed. |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to delete the specified live stream. For more information, see Implementing OAuth 2.0 authentication . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. For more information, see Feature eligibility . |
notFound (404)
|
liveStreamNotFound
|
The specified live stream doesn't exist. |
liveStreams.insert
Error type | Error detail | Description |
---|---|---|
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to create the specified live stream. |
insufficientPermissions
|
livePermissionBlocked
|
The user that authorized the request is unable to stream live video on YouTube at this time. Details explaining why the user cannot stream live video may be available in the user's channel settings at https://www.youtube.com/features . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
invalidValue (400)
|
invalidDescription
|
The snippet.description
property's value in the liveStream
resource can have up to 10000 characters. |
invalidValue (400)
|
invalidFormat
|
The cdn.format
property's value in the liveStream
resource is invalid. |
invalidValue (400)
|
invalidFrameRate
|
The cdn.frameRate
property's value in the liveStream
resource is invalid. |
invalidValue (400)
|
invalidIngestionType
|
The cdn.ingestionType
property's value in the liveStream
resource is invalid. |
invalidValue (400)
|
invalidResolution
|
The cdn.resolution
property's value in the liveStream
resource is invalid. |
invalidValue (400)
|
invalidTitle
|
The snippet.title
property's value in the liveStream
resource must be between 1 and 128 characters long. |
rateLimitExceeded
|
userRequestsExceedRateLimit
|
The user has sent too many requests in a given timeframe. |
required (400)
|
cdnRequired
|
The liveStream
resource must contain the cdn
object. |
required (400)
|
frameRateRequired
|
The API returns this error if you specify a value for the cdn.resolution
property but not for the cdn.frameRate
property. |
required (400)
|
ingestionTypeRequired
|
The liveStream
resource must specify a value for the cdn.ingestionType
property>. |
required (400)
|
resolutionRequired
|
The API returns this error if you specify a value for the cdn.frameRate
property but not for the cdn.resolution
property. |
required (400)
|
titleRequired
|
The liveStream
resource must specify a value for the snippet.title
property. |
liveStreams.list
Error type | Error detail | Description |
---|---|---|
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to retrieve the specified live stream. |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
liveStreams.update
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
liveStreamModificationNotAllowed
|
The specified live stream cannot be modified in its current state. For more information, see Life of a Broadcast . |
forbidden (403)
|
liveStreamModificationNotAllowed
|
The API does not allow you to change the value of the cdn.format
, cdn.frameRate
, cdn.ingestionType
, or cdn.resolution
fields after the stream is created. |
forbidden (403)
|
liveStreamModificationNotAllowed
|
The API does not allow you to change a reusable stream to be non-reusable, or vice versa. For more information, see Understanding Broadcasts and Streams . |
insufficientPermissions
|
insufficientLivePermissions
|
The request is not authorized to update the specified live stream. For more information, see Implementing OAuth2 authentication . |
insufficientPermissions
|
liveStreamingNotEnabled
|
The user that authorized the request is not enabled to stream live video on YouTube. The user can find more information at https://www.youtube.com/features . |
invalidValue (400)
|
invalidDescription
|
The snippet.description
property's value in the liveStream resource
can have up to 10000 characters. |
invalidValue (400)
|
invalidTitle
|
The snippet.title
property's value in the liveStream resource
must be between 1 and 128 characters long. |
notFound (404)
|
liveStreamNotFound
|
The specified live stream doesn't exist. |
required (400)
|
idRequired
|
The liveStream resource
must specify a value for the id
property. |
required (400)
|
ingestionTypeRequired
|
The liveStream resource
must specify a value for the cdn.ingestionType
property. |
required (400)
|
titleRequired
|
The liveStream resource
must specify a value for the snippet.title
property. |
sponsors
The following tables identify error messages that the API returns in response to calls related to sponsors
resources.
sponsors.list
Error type | Error detail | Description |
---|---|---|
forbidden (403)
|
insufficientPermissions
|
You do not have the necessary permissions to view the channel's sponsors. |
invalidValue (400)
|
invalidValueInRequest
|
The request contains an invalid value. |
invalidValue (400)
|
sponsorshipNotEnabledForChannelId
|
The channel does not have sponsorships enabled. |