youtube.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
Captions
list
captions.list
List caption tracks for a video
Risk: read
await corsair.youtube.api.captions.list({});
| Name | Type | Required | Description |
|---|---|---|---|
video_id | string | Yes | The YouTube video ID to list captions for |
part | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
eventId | string | No | — |
visitorId | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
lastUpdated?: string,
trackKind?: string,
language?: string,
name?: string,
audioTrackType?: string,
isCC?: boolean,
isLarge?: boolean,
isEasyReader?: boolean,
isDraft?: boolean,
isAutoSynced?: boolean,
status?: string
}
}[]
load
captions.load
Download a caption track
Risk: read
await corsair.youtube.api.captions.load({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The caption track ID to download |
tfmt | string | No | Caption format (srt, vtt, etc.) |
| Name | Type | Required | Description |
|---|---|---|---|
captions_text | string | No | — |
update
captions.update
Update a caption track
Risk: write
await corsair.youtube.api.captions.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The caption track ID to update |
snippet | object | Yes | Updated caption snippet |
snippet full type
snippet full type
{
isDraft?: boolean
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
snippet full type
snippet full type
{
videoId?: string,
lastUpdated?: string,
trackKind?: string,
language?: string,
name?: string,
audioTrackType?: string,
isCC?: boolean,
isLarge?: boolean,
isEasyReader?: boolean,
isDraft?: boolean,
isAutoSynced?: boolean,
status?: string
}
Channels
getActivities
channels.getActivities
Get a channel’s activity feed
Risk: read
await corsair.youtube.api.channels.getActivities({});
| Name | Type | Required | Description |
|---|---|---|---|
channelId | string | Yes | The channel ID to get activities for |
part | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
publishedAfter | string | No | RFC 3339 datetime - only return activities after this time |
publishedBefore | string | No | RFC 3339 datetime - only return activities before this time |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
channelId?: string,
title?: string,
description?: string,
publishedAt?: string,
type?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
},
contentDetails?: {
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
getIdByHandle
channels.getIdByHandle
Get channel ID by handle
Risk: read
await corsair.youtube.api.channels.getIdByHandle({});
| Name | Type | Required | Description |
|---|---|---|---|
channel_handle | string | Yes | YouTube channel handle (e.g. @channelname) |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
channels | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
customUrl?: string,
publishedAt?: string,
country?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
},
statistics?: {
viewCount?: string,
subscriberCount?: string,
videoCount?: string,
hiddenSubscriberCount?: boolean
},
contentDetails?: {
relatedPlaylists?: {
uploads?: string,
likes?: string
}
},
brandingSettings?: {
channel?: {
title?: string,
description?: string,
keywords?: string
}
}
}[]
channels full type
channels full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
customUrl?: string,
publishedAt?: string,
country?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
},
statistics?: {
viewCount?: string,
subscriberCount?: string,
videoCount?: string,
hiddenSubscriberCount?: boolean
},
contentDetails?: {
relatedPlaylists?: {
uploads?: string,
likes?: string
}
},
brandingSettings?: {
channel?: {
title?: string,
description?: string,
keywords?: string
}
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
getStatistics
channels.getStatistics
Get channel statistics and details
Risk: read
await corsair.youtube.api.channels.getStatistics({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | Channel ID(s), comma-separated |
mine | boolean | No | Get statistics for the authenticated user’s channel |
part | string | No | — |
forHandle | string | No | Channel handle (e.g. @channelname) |
forUsername | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
channels | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
customUrl?: string,
publishedAt?: string,
country?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
},
statistics?: {
viewCount?: string,
subscriberCount?: string,
videoCount?: string,
hiddenSubscriberCount?: boolean
},
contentDetails?: {
relatedPlaylists?: {
uploads?: string,
likes?: string
}
},
brandingSettings?: {
channel?: {
title?: string,
description?: string,
keywords?: string
}
}
}[]
channels full type
channels full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
customUrl?: string,
publishedAt?: string,
country?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
},
statistics?: {
viewCount?: string,
subscriberCount?: string,
videoCount?: string,
hiddenSubscriberCount?: boolean
},
contentDetails?: {
relatedPlaylists?: {
uploads?: string,
likes?: string
}
},
brandingSettings?: {
channel?: {
title?: string,
description?: string,
keywords?: string
}
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
update
channels.update
Update channel branding settings
Risk: write
await corsair.youtube.api.channels.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The channel ID to update |
part | string | No | — |
brandingSettings | object | No | — |
localizations | object | No | — |
onBehalfOfContentOwner | string | No | — |
brandingSettings full type
brandingSettings full type
{
channel?: {
title?: string,
description?: string,
keywords?: string,
country?: string
}
}
localizations full type
localizations full type
{
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
statistics | object | No | — |
brandingSettings | object | No | — |
localizations | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
customUrl?: string,
publishedAt?: string,
country?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
}
statistics full type
statistics full type
{
viewCount?: string,
subscriberCount?: string,
videoCount?: string
}
brandingSettings full type
brandingSettings full type
{
}
localizations full type
localizations full type
{
}
Channel Sections
create
channelSections.create
Create a new channel section
Risk: write
await corsair.youtube.api.channelSections.create({});
| Name | Type | Required | Description |
|---|---|---|---|
snippet | object | Yes | Section snippet |
contentDetails | object | No | — |
snippet full type
snippet full type
{
type: allPlaylists | completedEvents | liveEvents | multipleChannels | multiplePlaylists | popularUploads | recentUploads | singlePlaylist | subscriptions | upcomingEvents,
title?: string,
position?: number
}
contentDetails full type
contentDetails full type
{
channels?: string[],
playlists?: string[]
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
type?: string,
title?: string,
position?: number,
channelId?: string
}
contentDetails full type
contentDetails full type
{
playlists?: string[],
channels?: string[]
}
delete
channelSections.delete
Delete a channel section
Risk: destructive
await corsair.youtube.api.channelSections.delete({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the channel section to delete |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
deleted | boolean | No | — |
channel_section_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
list
channelSections.list
List channel sections
Risk: read
await corsair.youtube.api.channelSections.list({});
| Name | Type | Required | Description |
|---|---|---|---|
part | string | Yes | Comma-separated list of parts (snippet,contentDetails) |
hl | string | No | — |
id | string | No | Section ID(s), comma-separated |
mine | boolean | No | — |
channelId | string | No | — |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
eventId | string | No | — |
visitorId | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
type?: string,
title?: string,
position?: number,
channelId?: string
},
contentDetails?: {
playlists?: string[],
channels?: string[]
}
}[]
update
channelSections.update
Update a channel section
Risk: write
await corsair.youtube.api.channelSections.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the channel section to update |
snippet | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
type?: string,
title?: string,
position?: number
}
contentDetails full type
contentDetails full type
{
playlists?: string[],
channels?: string[]
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
type?: string,
title?: string,
position?: number,
channelId?: string
}
contentDetails full type
contentDetails full type
{
playlists?: string[],
channels?: string[]
}
Comments
createReply
comments.createReply
Post a reply to a comment
Risk: write
await corsair.youtube.api.comments.createReply({});
| Name | Type | Required | Description |
|---|---|---|---|
parentId | string | Yes | The ID of the parent comment thread to reply to |
textOriginal | string | Yes | The reply text |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
snippet full type
snippet full type
{
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
delete
comments.delete
Delete a comment
Risk: destructive
await corsair.youtube.api.comments.delete({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the comment to delete |
| Name | Type | Required | Description |
|---|---|---|---|
deleted | boolean | No | — |
comment_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
list
comments.list
List comments
Risk: read
await corsair.youtube.api.comments.list({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | Comment ID(s), comma-separated |
part | string | No | — |
parentId | string | No | Parent comment thread ID to list replies for |
pageToken | string | No | — |
maxResults | number | No | — |
textFormat | html | plainText | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
markSpam
comments.markSpam
Mark a comment as spam
Risk: write
await corsair.youtube.api.comments.markSpam({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the comment to mark as spam |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | No | — |
comment_ids | string[] | No | — |
http_status | number | No | — |
post
comments.post
Post a comment on a video
Risk: write
await corsair.youtube.api.comments.post({});
| Name | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | The ID of the video to comment on |
channelId | string | Yes | The channel ID that owns the video |
textOriginal | string | Yes | The comment text |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
snippet full type
snippet full type
{
channelId?: string,
videoId?: string,
totalReplyCount?: number,
isPublic?: boolean,
topLevelComment?: {
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}
}
setModerationStatus
comments.setModerationStatus
Set moderation status for a comment
Risk: write
await corsair.youtube.api.comments.setModerationStatus({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the comment to moderate |
moderationStatus | heldForReview | published | rejected | Yes | The moderation status to set |
banAuthor | boolean | No | Ban the author from the channel |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | No | — |
message | string | No | — |
threadsList
comments.threadsList
List comment threads (deprecated)
Risk: read
await corsair.youtube.api.comments.threadsList({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
part | string | No | — |
order | time | relevance | No | — |
videoId | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
textFormat | html | plainText | No | — |
searchTerms | string | No | — |
allThreadsRelatedToChannelId | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
channelId?: string,
videoId?: string,
totalReplyCount?: number,
isPublic?: boolean,
topLevelComment?: {
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}
},
replies?: {
comments?: {
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}[]
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
threadsList2
comments.threadsList2
List comment threads
Risk: read
await corsair.youtube.api.comments.threadsList2({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
part | string | Yes | Comma-separated list of parts |
order | time | relevance | No | — |
videoId | string | No | — |
channelId | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
textFormat | html | plainText | No | — |
searchTerms | string | No | — |
moderationStatus | heldForReview | likelySpam | published | rejected | No | — |
allThreadsRelatedToChannelId | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
channelId?: string,
videoId?: string,
totalReplyCount?: number,
isPublic?: boolean,
topLevelComment?: {
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}
},
replies?: {
comments?: {
id?: string,
etag?: string,
kind?: string,
snippet?: {
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
}[]
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
update
comments.update
Update a comment
Risk: write
await corsair.youtube.api.comments.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the comment to update |
textOriginal | string | Yes | The updated comment text |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
snippet full type
snippet full type
{
videoId?: string,
textDisplay?: string,
textOriginal?: string,
authorDisplayName?: string,
authorProfileImageUrl?: string,
authorChannelUrl?: string,
authorChannelId?: {
value?: string
},
likeCount?: number,
publishedAt?: string,
updatedAt?: string,
parentId?: string,
canRate?: boolean,
viewerRating?: string
}
I18n
listLanguages
i18n.listLanguages
List supported i18n languages
Risk: read
await corsair.youtube.api.i18n.listLanguages({});
| Name | Type | Required | Description |
|---|---|---|---|
hl | string | No | Language to use for the response |
part | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
hl?: string,
name?: string
}
}[]
listRegions
i18n.listRegions
List supported i18n regions
Risk: read
await corsair.youtube.api.i18n.listRegions({});
| Name | Type | Required | Description |
|---|---|---|---|
hl | string | No | — |
part | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
gl?: string,
name?: string
}
}[]
Live Chat
listMessages
liveChat.listMessages
List messages in a live chat
Risk: read
await corsair.youtube.api.liveChat.listMessages({});
| Name | Type | Required | Description |
|---|---|---|---|
liveChatId | string | Yes | The ID of the live chat to list messages for |
hl | string | No | — |
part | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
profileImageSize | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
offlineAt | string | No | — |
nextPageToken | string | No | — |
activePollItem | any | No | — |
pollingIntervalMillis | number | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
type?: string,
liveChatId?: string,
authorChannelId?: string,
publishedAt?: string,
hasDisplayContent?: boolean,
displayMessage?: string,
textMessageDetails?: {
messageText?: string
}
},
authorDetails?: {
channelId?: string,
channelUrl?: string,
displayName?: string,
profileImageUrl?: string,
isVerified?: boolean,
isChatOwner?: boolean,
isChatModerator?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
listSuperChatEvents
liveChat.listSuperChatEvents
List Super Chat events
Risk: read
await corsair.youtube.api.liveChat.listSuperChatEvents({});
| Name | Type | Required | Description |
|---|---|---|---|
hl | string | No | — |
part | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
items full type
items full type
{
id?: string,
snippet?: {
displayString?: string,
amountMicros?: string,
currency?: string,
channelId?: string,
createdAt?: string
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
Playlist Images
list
playlistImages.list
List playlist images
Risk: read
await corsair.youtube.api.playlistImages.list({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
part | string | No | — |
parent | string | No | The parent playlist ID |
pageToken | string | No | — |
maxResults | number | No | — |
onBehalfOfContentOwner | string | No | — |
onBehalfOfContentOwnerChannel | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
kind?: string,
snippet?: {
type?: string,
width?: number,
height?: number,
url?: string
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
Playlist Items
add
playlistItems.add
Add a video to a playlist
Risk: write
await corsair.youtube.api.playlistItems.add({});
| Name | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | The YouTube video ID to add to the playlist |
playlistId | string | Yes | The ID of the playlist to add the video to |
position | number | No | Zero-based position to insert the video |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
status | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
position?: number,
channelId?: string,
channelTitle?: string,
playlistId?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
videoOwnerChannelId?: string,
videoOwnerChannelTitle?: string
}
status full type
status full type
{
privacyStatus?: string
}
contentDetails full type
contentDetails full type
{
videoId?: string,
videoPublishedAt?: string,
note?: string,
startAt?: string,
endAt?: string
}
delete
playlistItems.delete
Remove an item from a playlist
Risk: destructive
await corsair.youtube.api.playlistItems.delete({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the playlist item to delete |
| Name | Type | Required | Description |
|---|---|---|---|
deleted | boolean | No | — |
playlist_item_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
list
playlistItems.list
List items in a playlist
Risk: read
await corsair.youtube.api.playlistItems.list({});
| Name | Type | Required | Description |
|---|---|---|---|
playlistId | string | Yes | The ID of the playlist to list items for |
part | string | No | — |
fields | string | No | — |
videoId | string | No | Filter by video ID |
pageToken | string | No | — |
maxResults | number | No | — |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
eventId | string | No | — |
visitorId | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
position?: number,
channelId?: string,
channelTitle?: string,
playlistId?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
videoOwnerChannelId?: string,
videoOwnerChannelTitle?: string
},
status?: {
privacyStatus?: string
},
contentDetails?: {
videoId?: string,
videoPublishedAt?: string,
note?: string,
startAt?: string,
endAt?: string
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
update
playlistItems.update
Update a playlist item
Risk: write
await corsair.youtube.api.playlistItems.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the playlist item to update |
snippet | object | Yes | Updated snippet |
part | string | No | — |
contentDetails | object | No | — |
onBehalfOfContentOwner | string | No | — |
snippet full type
snippet full type
{
playlistId: string,
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
position?: number
}
contentDetails full type
contentDetails full type
{
note?: string,
startAt?: string,
endAt?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
status | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
position?: number,
channelId?: string,
channelTitle?: string,
playlistId?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
videoOwnerChannelId?: string,
videoOwnerChannelTitle?: string
}
status full type
status full type
{
privacyStatus?: string
}
contentDetails full type
contentDetails full type
{
videoId?: string,
videoPublishedAt?: string,
note?: string,
startAt?: string,
endAt?: string
}
Playlists
create
playlists.create
Create a new playlist
Risk: write
await corsair.youtube.api.playlists.create({});
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Playlist title (max 150 characters) |
description | string | No | Playlist description |
privacyStatus | public | private | unlisted | No | Privacy status of the playlist |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
status | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
localized?: {
title?: string,
description?: string
}
}
status full type
status full type
{
privacyStatus?: string
}
contentDetails full type
contentDetails full type
{
itemCount?: number
}
delete
playlists.delete
Delete a playlist
Risk: destructive
await corsair.youtube.api.playlists.delete({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the playlist to delete |
confirmDelete | boolean | Yes | Confirm that you want to delete the playlist |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
deleted | boolean | No | — |
playlist_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
list
playlists.list
List the authenticated user’s playlists
Risk: read
await corsair.youtube.api.playlists.list({});
| Name | Type | Required | Description |
|---|---|---|---|
part | string | No | Comma-separated list of resource parts (snippet,status,contentDetails) |
pageToken | string | No | Token for the next page of results |
maxResults | number | No | Maximum number of results to return (1-50) |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
localized?: {
title?: string,
description?: string
}
},
status?: {
privacyStatus?: string
},
contentDetails?: {
itemCount?: number
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
update
playlists.update
Update an existing playlist
Risk: write
await corsair.youtube.api.playlists.update({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the playlist to update |
snippet | object | Yes | Updated snippet fields |
part | string | No | Comma-separated list of parts to update |
status | object | No | — |
onBehalfOfContentOwner | string | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string
}
status full type
status full type
{
privacyStatus?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
status | object | No | — |
contentDetails | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
localized?: {
title?: string,
description?: string
}
}
status full type
status full type
{
privacyStatus?: string
}
contentDetails full type
contentDetails full type
{
itemCount?: number
}
Search
youtube
search.youtube
Search YouTube for videos, channels, and playlists
Risk: read
await corsair.youtube.api.search.youtube({});
| Name | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query |
part | string | No | — |
type | string | No | Resource type to search (video, channel, playlist) |
pageToken | string | No | — |
maxResults | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
regionCode | string | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
etag?: string,
kind?: string,
snippet?: {
publishedAt?: string,
channelId?: string,
title?: string,
description?: string,
channelTitle?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
liveBroadcastContent?: string
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
Subscriptions
list
subscriptions.list
List the authenticated user’s subscriptions
Risk: read
await corsair.youtube.api.subscriptions.list({});
| Name | Type | Required | Description |
|---|---|---|---|
part | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
publishedAt?: string,
title?: string,
description?: string,
channelId?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
channelTitle?: string
},
contentDetails?: {
totalItemCount?: number,
newItemCount?: number,
activityType?: string
},
subscriberSnippet?: {
title?: string,
description?: string,
channelId?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
}
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
subscribe
subscriptions.subscribe
Subscribe to a YouTube channel
Risk: write
await corsair.youtube.api.subscriptions.subscribe({});
| Name | Type | Required | Description |
|---|---|---|---|
channelId | string | Yes | The ID of the channel to subscribe to |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
contentDetails | object | No | — |
subscriberSnippet | object | No | — |
already_subscribed | boolean | No | — |
composio_execution_message | string | No | — |
snippet full type
snippet full type
{
publishedAt?: string,
title?: string,
description?: string,
channelId?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
resourceId?: {
kind?: string,
videoId?: string,
channelId?: string,
playlistId?: string
},
channelTitle?: string
}
contentDetails full type
contentDetails full type
{
totalItemCount?: number,
newItemCount?: number
}
subscriberSnippet full type
subscriberSnippet full type
{
title?: string,
channelId?: string
}
unsubscribe
subscriptions.unsubscribe
Unsubscribe from a YouTube channel
Risk: destructive
await corsair.youtube.api.subscriptions.unsubscribe({});
| Name | Type | Required | Description |
|---|---|---|---|
subscriptionId | string | Yes | The ID of the subscription to remove |
| Name | Type | Required | Description |
|---|---|---|---|
unsubscribed | boolean | No | — |
subscription_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
Video Actions
getRating
videoActions.getRating
Get the authenticated user’s rating for a video
Risk: read
await corsair.youtube.api.videoActions.getRating({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The YouTube video ID to get the rating for |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
items full type
items full type
{
videoId?: string,
rating?: string
}[]
listAbuseReasons
videoActions.listAbuseReasons
List available video abuse report reasons
Risk: read
await corsair.youtube.api.videoActions.listAbuseReasons({});
| Name | Type | Required | Description |
|---|---|---|---|
hl | string | No | Language for the response |
part | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
eventId | string | No | — |
visitorId | string | No | — |
items full type
items full type
{
id?: string,
label?: string,
secondaryReasons?: {
id?: string,
label?: string
}[]
}[]
rate
videoActions.rate
Rate a video (like, dislike, or remove rating)
Risk: write
await corsair.youtube.api.videoActions.rate({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The YouTube video ID to rate |
rating | like | dislike | none | Yes | The rating to apply |
| Name | Type | Required | Description |
|---|---|---|---|
rating | string | No | — |
success | boolean | No | — |
video_id | string | No | — |
http_status | number | No | — |
reportAbuse
videoActions.reportAbuse
Report a video for abuse
Risk: write
await corsair.youtube.api.videoActions.reportAbuse({});
| Name | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | The YouTube video ID to report |
reasonId | string | Yes | The ID of the abuse reason |
comments | string | No | Additional comments about the abuse |
language | string | No | — |
secondaryReasonId | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | No | — |
message | string | No | — |
http_status | number | No | — |
updateThumbnail
videoActions.updateThumbnail
Update the thumbnail for a video
Risk: write
await corsair.youtube.api.videoActions.updateThumbnail({});
| Name | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | The ID of the video to update the thumbnail for |
thumbnailUrl | string | Yes | URL of the new thumbnail image |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
eventId | string | No | — |
visitorId | string | No | — |
items full type
items full type
{
url?: string,
width?: number,
height?: number
}[]
Video Categories
list
videoCategories.list
List video categories
Risk: read
await corsair.youtube.api.videoCategories.list({});
| Name | Type | Required | Description |
|---|---|---|---|
hl | string | No | — |
id | string | No | Category ID(s), comma-separated |
part | string | No | — |
regionCode | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
channelId?: string,
title?: string,
assignable?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
Videos
delete
videos.delete
Delete a video
Risk: destructive
await corsair.youtube.api.videos.delete({});
| Name | Type | Required | Description |
|---|---|---|---|
videoId | string | Yes | The ID of the video to delete |
confirmDelete | boolean | Yes | Confirm that you want to delete the video |
onBehalfOfContentOwner | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
deleted | boolean | No | — |
video_id | string | No | — |
http_status | number | No | — |
error | string | No | — |
get
videos.get
Get details for a single video
Risk: read
await corsair.youtube.api.videos.get({});
| Name | Type | Required | Description |
|---|---|---|---|
video_id | string | Yes | The YouTube video ID |
part | string | No | Comma-separated list of resource parts |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
},
status?: {
privacyStatus?: string,
uploadStatus?: string,
publishAt?: string,
license?: string,
embeddable?: boolean,
publicStatsViewable?: boolean
},
statistics?: {
viewCount?: string,
likeCount?: string,
dislikeCount?: string,
favoriteCount?: string,
commentCount?: string
},
contentDetails?: {
duration?: string,
dimension?: string,
definition?: string,
caption?: string,
licensedContent?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
getBatch
videos.getBatch
Get details for multiple videos in one request
Risk: read
await corsair.youtube.api.videos.getBatch({});
| Name | Type | Required | Description |
|---|---|---|---|
id | string[] | Yes | Array of YouTube video IDs to retrieve (max 50) |
hl | string | No | Language for localized metadata |
parts | string[] | No | Resource parts to include |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
found_count | number | No | — |
not_found_count | number | No | — |
requested_count | number | No | — |
not_found_video_ids | string[] | No | — |
requested_video_ids | string[] | No | — |
partial_failure | boolean | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
composio_execution_message | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
},
status?: {
privacyStatus?: string,
uploadStatus?: string,
publishAt?: string,
license?: string,
embeddable?: boolean,
publicStatsViewable?: boolean
},
statistics?: {
viewCount?: string,
likeCount?: string,
dislikeCount?: string,
favoriteCount?: string,
commentCount?: string
},
contentDetails?: {
duration?: string,
dimension?: string,
definition?: string,
caption?: string,
licensedContent?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
list
videos.list
List videos for a channel
Risk: read
await corsair.youtube.api.videos.list({});
| Name | Type | Required | Description |
|---|---|---|---|
mine | boolean | No | List videos for the authenticated user |
channelId | string | No | Filter by channel ID |
part | string | No | — |
pageToken | string | No | — |
maxResults | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
regionCode | string | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
},
status?: {
privacyStatus?: string,
uploadStatus?: string,
publishAt?: string,
license?: string,
embeddable?: boolean,
publicStatsViewable?: boolean
},
statistics?: {
viewCount?: string,
likeCount?: string,
dislikeCount?: string,
favoriteCount?: string,
commentCount?: string
},
contentDetails?: {
duration?: string,
dimension?: string,
definition?: string,
caption?: string,
licensedContent?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
listMostPopular
videos.listMostPopular
List most popular videos on YouTube
Risk: read
await corsair.youtube.api.videos.listMostPopular({});
| Name | Type | Required | Description |
|---|---|---|---|
part | string | No | — |
chart | string | No | Chart to use (mostPopular) |
pageToken | string | No | — |
maxResults | number | No | — |
regionCode | string | No | — |
videoCategoryId | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
etag | string | No | — |
kind | string | No | — |
items | object[] | No | — |
pageInfo | object | No | — |
regionCode | string | No | — |
nextPageToken | string | No | — |
prevPageToken | string | No | — |
items full type
items full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
},
status?: {
privacyStatus?: string,
uploadStatus?: string,
publishAt?: string,
license?: string,
embeddable?: boolean,
publicStatsViewable?: boolean
},
statistics?: {
viewCount?: string,
likeCount?: string,
dislikeCount?: string,
favoriteCount?: string,
commentCount?: string
},
contentDetails?: {
duration?: string,
dimension?: string,
definition?: string,
caption?: string,
licensedContent?: boolean
}
}[]
pageInfo full type
pageInfo full type
{
totalResults?: number,
resultsPerPage?: number
}
update
videos.update
Update video metadata
Risk: write
await corsair.youtube.api.videos.update({});
| Name | Type | Required | Description |
|---|---|---|---|
video_id | string | Yes | The ID of the video to update |
title | string | No | Updated video title |
description | string | No | Updated video description |
tags | string[] | No | Updated video tags |
categoryId | string | No | Updated category ID |
privacy_status | string | No | Updated privacy status (public, private, unlisted) |
composio_execution_message | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
id | string | No | — |
etag | string | No | — |
kind | string | No | — |
snippet | object | No | — |
status | object | No | — |
statistics | object | No | — |
snippet full type
snippet full type
{
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
}
status full type
status full type
{
privacyStatus?: string,
uploadStatus?: string
}
statistics full type
statistics full type
{
viewCount?: string,
likeCount?: string
}
upload
videos.upload
Upload a new video
Risk: write
await corsair.youtube.api.videos.upload({});
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Video title |
categoryId | string | Yes | Video category ID |
description | string | Yes | Video description |
privacyStatus | public | private | unlisted | Yes | Privacy status |
tags | string[] | Yes | Video tags |
videoFilePath | object | Yes | Video file reference |
videoFilePath full type
videoFilePath full type
{
name?: string,
content_type?: string,
s3_key?: string,
s3_url?: string,
storage_type?: string,
content_length?: number
}
| Name | Type | Required | Description |
|---|---|---|---|
response_data | any | No | — |
uploadMultipart
videos.uploadMultipart
Upload a new video using multipart upload
Risk: write
await corsair.youtube.api.videos.uploadMultipart({});
| Name | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Video title |
videoFile | object | Yes | Video file reference |
categoryId | string | Yes | Video category ID |
description | string | Yes | Video description |
privacyStatus | public | private | unlisted | Yes | Privacy status |
tags | string[] | No | Video tags |
videoFile full type
videoFile full type
{
name?: string,
content_type?: string,
s3_key?: string,
s3_url?: string,
storage_type?: string,
content_length?: number
}
| Name | Type | Required | Description |
|---|---|---|---|
video | object | No | — |
video full type
video full type
{
id?: string,
etag?: string,
kind?: string,
snippet?: {
title?: string,
description?: string,
channelId?: string,
channelTitle?: string,
publishedAt?: string,
thumbnails?: {
default?: {
url?: string,
width?: number,
height?: number
},
medium?: {
url?: string,
width?: number,
height?: number
},
high?: {
url?: string,
width?: number,
height?: number
},
standard?: {
url?: string,
width?: number,
height?: number
},
maxres?: {
url?: string,
width?: number,
height?: number
}
},
tags?: string[],
categoryId?: string,
defaultLanguage?: string,
liveBroadcastContent?: string
},
status?: {
privacyStatus?: string,
uploadStatus?: string,
publishAt?: string,
license?: string,
embeddable?: boolean,
publicStatsViewable?: boolean
},
statistics?: {
viewCount?: string,
likeCount?: string,
dislikeCount?: string,
favoriteCount?: string,
commentCount?: string
},
contentDetails?: {
duration?: string,
dimension?: string,
definition?: string,
caption?: string,
licensedContent?: boolean
}
}