> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# API

> API reference for YouTube: every `youtube.api.*` operation with input and output types.

Every `youtube.api.*` operation is listed below with parameter shapes and return types from the plugin Zod schemas.

<Info>
  **New to Corsair?** See [API access](/concepts/api), [authentication](/concepts/auth), and [error handling](/concepts/error-handling).
</Info>

## Captions

### list

`captions.list`

List caption tracks for a video

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.captions.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `video_id` | `string` | Yes | The YouTube video ID to list captions for |
| `part` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `eventId` | `string` | No | — |
| `visitorId` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### load

`captions.load`

Download a caption track

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.captions.load({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The caption track ID to download |
| `tfmt` | `string` | No | Caption format (srt, vtt, etc.) |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `captions_text` | `string` | No | — |

***

### update

`captions.update`

Update a caption track

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.captions.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The caption track ID to update |
| `snippet` | `object` | Yes | Updated caption snippet |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      isDraft?: boolean
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      videoId?: string,
      lastUpdated?: string,
      trackKind?: string,
      language?: string,
      name?: string,
      audioTrackType?: string,
      isCC?: boolean,
      isLarge?: boolean,
      isEasyReader?: boolean,
      isDraft?: boolean,
      isAutoSynced?: boolean,
      status?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Channels

### getActivities

`channels.getActivities`

Get a channel's activity feed

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.channels.getActivities({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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?: {
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getIdByHandle

`channels.getIdByHandle`

Get channel ID by handle

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.channels.getIdByHandle({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `channel_handle` | `string` | Yes | YouTube channel handle (e.g. @channelname) |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
        }
      }
    }[]
    ```
  </Accordion>

  <Accordion title="channels full type">
    ```ts theme={null}
    {
      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
        }
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getStatistics

`channels.getStatistics`

Get channel statistics and details

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.channels.getStatistics({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
        }
      }
    }[]
    ```
  </Accordion>

  <Accordion title="channels full type">
    ```ts theme={null}
    {
      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
        }
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`channels.update`

Update channel branding settings

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.channels.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The channel ID to update |
| `part` | `string` | No | — |
| `brandingSettings` | `object` | No | — |
| `localizations` | `object` | No | — |
| `onBehalfOfContentOwner` | `string` | No | — |

<AccordionGroup>
  <Accordion title="brandingSettings full type">
    ```ts theme={null}
    {
      channel?: {
        title?: string,
        description?: string,
        keywords?: string,
        country?: string
      }
    }
    ```
  </Accordion>

  <Accordion title="localizations full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="statistics full type">
    ```ts theme={null}
    {
      viewCount?: string,
      subscriberCount?: string,
      videoCount?: string
    }
    ```
  </Accordion>

  <Accordion title="brandingSettings full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>

  <Accordion title="localizations full type">
    ```ts theme={null}
    {
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Channel Sections

### create

`channelSections.create`

Create a new channel section

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.channelSections.create({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `snippet` | `object` | Yes | Section snippet |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      type: allPlaylists | completedEvents | liveEvents | multipleChannels | multiplePlaylists | popularUploads | recentUploads | singlePlaylist | subscriptions | upcomingEvents,
      title?: string,
      position?: number
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      channels?: string[],
      playlists?: string[]
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      type?: string,
      title?: string,
      position?: number,
      channelId?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      playlists?: string[],
      channels?: string[]
    }
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`channelSections.delete`

Delete a channel section

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.channelSections.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the channel section to delete |
| `onBehalfOfContentOwner` | `string` | No | — |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.channelSections.list({});
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `eventId` | `string` | No | — |
| `visitorId` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      etag?: string,
      kind?: string,
      snippet?: {
        type?: string,
        title?: string,
        position?: number,
        channelId?: string
      },
      contentDetails?: {
        playlists?: string[],
        channels?: string[]
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### update

`channelSections.update`

Update a channel section

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.channelSections.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the channel section to update |
| `snippet` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      type?: string,
      title?: string,
      position?: number
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      playlists?: string[],
      channels?: string[]
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      type?: string,
      title?: string,
      position?: number,
      channelId?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      playlists?: string[],
      channels?: string[]
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Comments

### createReply

`comments.createReply`

Post a reply to a comment

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.comments.createReply({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `parentId` | `string` | Yes | The ID of the parent comment thread to reply to |
| `textOriginal` | `string` | Yes | The reply text |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`comments.delete`

Delete a comment

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.comments.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the comment to delete |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.comments.list({});
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### markSpam

`comments.markSpam`

Mark a comment as spam

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.comments.markSpam({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the comment to mark as spam |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.comments.post({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
        }
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***

### setModerationStatus

`comments.setModerationStatus`

Set moderation status for a comment

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.comments.setModerationStatus({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `success` | `boolean` | No | — |
| `message` | `string` | No | — |

***

### threadsList

`comments.threadsList`

List comment threads (deprecated)

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.comments.threadsList({});
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
          }
        }[]
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### threadsList2

`comments.threadsList2`

List comment threads

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.comments.threadsList2({});
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
          }
        }[]
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`comments.update`

Update a comment

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.comments.update({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the comment to update |
| `textOriginal` | `string` | Yes | The updated comment text |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>
</AccordionGroup>

***

## I18n

### listLanguages

`i18n.listLanguages`

List supported i18n languages

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.i18n.listLanguages({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `hl` | `string` | No | Language to use for the response |
| `part` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      etag?: string,
      kind?: string,
      snippet?: {
        hl?: string,
        name?: string
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listRegions

`i18n.listRegions`

List supported i18n regions

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.i18n.listRegions({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `hl` | `string` | No | — |
| `part` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      etag?: string,
      kind?: string,
      snippet?: {
        gl?: string,
        name?: string
      }
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Live Chat

### listMessages

`liveChat.listMessages`

List messages in a live chat

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.liveChat.listMessages({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listSuperChatEvents

`liveChat.listSuperChatEvents`

List Super Chat events

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.liveChat.listSuperChatEvents({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `hl` | `string` | No | — |
| `part` | `string` | No | — |
| `pageToken` | `string` | No | — |
| `maxResults` | `number` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      snippet?: {
        displayString?: string,
        amountMicros?: string,
        currency?: string,
        channelId?: string,
        createdAt?: string
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Playlist Images

### list

`playlistImages.list`

List playlist images

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.playlistImages.list({});
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      kind?: string,
      snippet?: {
        type?: string,
        width?: number,
        height?: number,
        url?: string
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Playlist Items

### add

`playlistItems.add`

Add a video to a playlist

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.playlistItems.add({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `status` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      videoId?: string,
      videoPublishedAt?: string,
      note?: string,
      startAt?: string,
      endAt?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`playlistItems.delete`

Remove an item from a playlist

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.playlistItems.delete({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The ID of the playlist item to delete |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.playlistItems.list({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`playlistItems.update`

Update a playlist item

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.playlistItems.update({});
```

**Input**

| 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 | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      playlistId: string,
      resourceId?: {
        kind?: string,
        videoId?: string,
        channelId?: string,
        playlistId?: string
      },
      position?: number
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      note?: string,
      startAt?: string,
      endAt?: string
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `status` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      videoId?: string,
      videoPublishedAt?: string,
      note?: string,
      startAt?: string,
      endAt?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Playlists

### create

`playlists.create`

Create a new playlist

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.playlists.create({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `status` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
      }
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      itemCount?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### delete

`playlists.delete`

Delete a playlist

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.playlists.delete({});
```

**Input**

| 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 | — |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.playlists.list({});
```

**Input**

| 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) |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`playlists.update`

Update an existing playlist

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.playlists.update({});
```

**Input**

| 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 | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      title?: string,
      description?: string
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `status` | `object` | No | — |
| `contentDetails` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
      }
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      itemCount?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Search

### youtube

`search.youtube`

Search YouTube for videos, channels, and playlists

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.search.youtube({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Subscriptions

### list

`subscriptions.list`

List the authenticated user's subscriptions

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.subscriptions.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `part` | `string` | No | — |
| `pageToken` | `string` | No | — |
| `maxResults` | `number` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
          }
        }
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### subscribe

`subscriptions.subscribe`

Subscribe to a YouTube channel

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.subscriptions.subscribe({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `channelId` | `string` | Yes | The ID of the channel to subscribe to |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>

  <Accordion title="contentDetails full type">
    ```ts theme={null}
    {
      totalItemCount?: number,
      newItemCount?: number
    }
    ```
  </Accordion>

  <Accordion title="subscriberSnippet full type">
    ```ts theme={null}
    {
      title?: string,
      channelId?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### unsubscribe

`subscriptions.unsubscribe`

Unsubscribe from a YouTube channel

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.subscriptions.unsubscribe({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `subscriptionId` | `string` | Yes | The ID of the subscription to remove |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.videoActions.getRating({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The YouTube video ID to get the rating for |
| `onBehalfOfContentOwner` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      videoId?: string,
      rating?: string
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### listAbuseReasons

`videoActions.listAbuseReasons`

List available video abuse report reasons

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.videoActions.listAbuseReasons({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `hl` | `string` | No | Language for the response |
| `part` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `eventId` | `string` | No | — |
| `visitorId` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      label?: string,
      secondaryReasons?: {
        id?: string,
        label?: string
      }[]
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

### rate

`videoActions.rate`

Rate a video (like, dislike, or remove rating)

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.videoActions.rate({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | Yes | The YouTube video ID to rate |
| `rating` | `like \| dislike \| none` | Yes | The rating to apply |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.videoActions.reportAbuse({});
```

**Input**

| 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 | — |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.videoActions.updateThumbnail({});
```

**Input**

| 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 |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `eventId` | `string` | No | — |
| `visitorId` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      url?: string,
      width?: number,
      height?: number
    }[]
    ```
  </Accordion>
</AccordionGroup>

***

## Video Categories

### list

`videoCategories.list`

List video categories

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.videoCategories.list({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `hl` | `string` | No | — |
| `id` | `string` | No | Category ID(s), comma-separated |
| `part` | `string` | No | — |
| `regionCode` | `string` | No | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      id?: string,
      etag?: string,
      kind?: string,
      snippet?: {
        channelId?: string,
        title?: string,
        assignable?: boolean
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Videos

### delete

`videos.delete`

Delete a video

**Risk:** `destructive`

```ts theme={null}
await corsair.youtube.api.videos.delete({});
```

**Input**

| 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 | — |

**Output**

| 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`

```ts theme={null}
await corsair.youtube.api.videos.get({});
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `video_id` | `string` | Yes | The YouTube video ID |
| `part` | `string` | No | Comma-separated list of resource parts |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `items` | `object[]` | No | — |
| `pageInfo` | `object` | No | — |
| `nextPageToken` | `string` | No | — |
| `prevPageToken` | `string` | No | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### getBatch

`videos.getBatch`

Get details for multiple videos in one request

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.videos.getBatch({});
```

**Input**

| 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 |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### list

`videos.list`

List videos for a channel

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.videos.list({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### listMostPopular

`videos.listMostPopular`

List most popular videos on YouTube

**Risk:** `read`

```ts theme={null}
await corsair.youtube.api.videos.listMostPopular({});
```

**Input**

| 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 | — |

**Output**

| 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 | — |

<AccordionGroup>
  <Accordion title="items full type">
    ```ts theme={null}
    {
      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
      }
    }[]
    ```
  </Accordion>

  <Accordion title="pageInfo full type">
    ```ts theme={null}
    {
      totalResults?: number,
      resultsPerPage?: number
    }
    ```
  </Accordion>
</AccordionGroup>

***

### update

`videos.update`

Update video metadata

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.videos.update({});
```

**Input**

| 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) |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `id` | `string` | No | — |
| `etag` | `string` | No | — |
| `kind` | `string` | No | — |
| `snippet` | `object` | No | — |
| `status` | `object` | No | — |
| `statistics` | `object` | No | — |

<AccordionGroup>
  <Accordion title="snippet full type">
    ```ts theme={null}
    {
      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
    }
    ```
  </Accordion>

  <Accordion title="status full type">
    ```ts theme={null}
    {
      privacyStatus?: string,
      uploadStatus?: string
    }
    ```
  </Accordion>

  <Accordion title="statistics full type">
    ```ts theme={null}
    {
      viewCount?: string,
      likeCount?: string
    }
    ```
  </Accordion>
</AccordionGroup>

***

### upload

`videos.upload`

Upload a new video

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.videos.upload({});
```

**Input**

| 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 |

<AccordionGroup>
  <Accordion title="videoFilePath full type">
    ```ts theme={null}
    {
      name?: string,
      content_type?: string,
      s3_key?: string,
      s3_url?: string,
      storage_type?: string,
      content_length?: number
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `response_data` | `any` | No | — |

***

### uploadMultipart

`videos.uploadMultipart`

Upload a new video using multipart upload

**Risk:** `write`

```ts theme={null}
await corsair.youtube.api.videos.uploadMultipart({});
```

**Input**

| 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 |

<AccordionGroup>
  <Accordion title="videoFile full type">
    ```ts theme={null}
    {
      name?: string,
      content_type?: string,
      s3_key?: string,
      s3_url?: string,
      storage_type?: string,
      content_length?: number
    }
    ```
  </Accordion>
</AccordionGroup>

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `video` | `object` | No | — |

<AccordionGroup>
  <Accordion title="video full type">
    ```ts theme={null}
    {
      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
      }
    }
    ```
  </Accordion>
</AccordionGroup>

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.