YouTube Capabilities
1. Connecting a YouTube account (authentication & authorization)
- Obtain OAuth 2.0 access tokens for the authenticated user to act on their behalf (channel, videos, etc.).
- Supported scopes cover uploads, channel management, analytics, live streaming, and more.
- Reference: YouTube Data API Authentication Guide.
This works exactly the same as for other social media providers. YouTube accounts are actually Google accounts.
2. Channel management
- Retrieve channel details (ID, branding, statistics snippet, topic details).
- Update channel branding settings, promotions, or "made for kids" status.
- Upload/update the channel banner image.
- Manage channel sections (e.g. "Latest uploads", featured playlists).
- List channel memberships (supporters) and membership levels (if enabled).
Key methods: channels.list, channels.update, channelBanners.insert, channelSections.insert | update | delete | list, members.list, membershipsLevels.list.
Reference: Channels, ChannelBanners, ChannelSections, Members.
In the context of Newsmind Stories, a channel represents a profile.
3. Publishing and managing videos
- Upload new videos (resumable uploads supported, with metadata: title, description, tags, privacy status, category, "made for kids", etc.).
- Update video metadata, status or processing details.
- Delete videos.
- Set custom video thumbnails.
- Upload, update, delete, list or download captions/subtitles.
- Rate videos, report abuse or retrieve user ratings.
Key methods: videos.insert (upload), videos.update, videos.delete, videos.list, thumbnails.set, captions.insert | update | delete | list | download.
Reference: Videos, Uploading a video, Captions, Thumbnails.
Unlike other social media providers, which accept videos on the fly, the YouTube API supports videos larger than 100 GB. Therefore the video cannot first be uploaded to the material before being published on social media. Instead, it must first be uploaded to YouTube via an upload service. To let users decide when the video becomes publicly available, the upload service first uploads videos in an unlisted state, making them previewable before publishing. If the video does not satisfy the user's expectations, they can delete it.

4. Playlists and content organization
- Create, update, delete or list playlists (including private or unlisted).
- Add, remove or reorder videos within playlists (including the channel's automatic "Uploads" playlist).
Key methods: playlists.insert | update | delete | list, playlistItems.insert | update | delete | list.
Reference: Playlists, PlaylistItems.
Not very relevant for Newsmind Stories for now.
5. Live streaming
- Schedule, update, delete or list live broadcasts (events).
- Create and manage live streams (ingest settings, bound to broadcasts).
- Control the broadcast lifecycle (transition between ready/testing/live/complete).
- Bind streams to broadcasts and insert cue points.
Key methods: liveBroadcasts.insert | update | delete | list | bind | transition, liveStreams.insert | update | delete | list.
Reference: Live Streaming API overview, Live Streaming API reference, LiveBroadcasts.
Not very relevant for Newsmind Stories for now.
6. Statistics and analytics
- Retrieve basic video/channel statistics (view count, likes, comments, etc.) directly via the Data API (when requesting the
statisticspart on authorized resources). - Advanced analytics via dedicated APIs:
- YouTube Analytics API — targeted, real-time custom reports (views, watch time, audience demographics, traffic sources, device type, etc.) for videos, playlists or the entire channel.
- YouTube Reporting API — bulk/downloadable predefined reports (daily/aggregated data for long-term storage and custom dashboards).
- Group management for organizing content in reports.
Key methods: Data API videos.list or channels.list with part=statistics; Analytics API report queries; Reporting API bulk reports.
Reference: Analytics & Reporting APIs, Analytics sample requests, Reporting API reports.
This feature is important for Insights.
7. Interactions and community features
- List channel or video activity (uploads, likes, favorites, etc.).
- Manage comments: list threads, post/reply to comments, moderate, update or delete.
- Manage subscriptions (subscribe/unsubscribe to channels).
Key methods: activities.list, commentThreads.list | insert, comments.list | insert | update | delete | setModerationStatus, subscriptions.insert | delete | list.
Reference: Activities, CommentThreads, Comments, Subscriptions.
This feature is important to add a first comment when creating a post from Newsmind Stories.
8. Collaborations and co-publishing
- Current limitation: YouTube's native "Collaborations" feature (invite up to 5 creators to a video for shared credits, subscriber-feed distribution and shared analytics in YouTube Studio) is not yet exposed in the public YouTube Data API or Live Streaming API.
- Workarounds available on the platform: share videos via playlists or direct links, or instruct users to use YouTube Studio directly for collaboration invitations.
- Video metadata does not include collaborator fields at this time.
- Reference: no API endpoint — see Invite collaborators to your video. Monitor the Data API changelog for future support.
The collab-partner feature supported by Instagram, for example, is not possible with YouTube.
9. Additional / search features
- Search for videos, channels or playlists.
- Retrieve supported categories, languages and regions.
- Manage watermarks (overlay images during playback).
- Report abusive content or retrieve abuse report reasons.
Key methods: search.list, videoCategories.list, i18nLanguages.list, i18nRegions.list, watermarks.set | unset.
Reference: Search, Watermarks.
This feature is important because it allows providing a dropdown to users so they can choose the video category and the default language.
YouTube video metadata attributes
| Name | Description | Required | Constraints |
|---|---|---|---|
snippet.title | The title of the video | Yes (for insert and when updating snippet) | Max 100 characters; cannot be empty; cannot contain < or > |
snippet.description | The description of the video | No | Max 5000 bytes (UTF-8); cannot contain < or > |
snippet.tags[] | List of keyword tags associated with the video | No | Max 500 characters total (including commas); no empty string tags |
snippet.categoryId | YouTube video category ID | Yes (for insert and when updating snippet) | Must be a valid category ID (retrieved via videoCategories.list) |
snippet.defaultLanguage | Language of the video's metadata (title, description) – BCP-47 code | Yes, if localizations are used | Required when providing localized metadata |
snippet.defaultAudioLanguage | Language of the default audio track – BCP-47 code | No | BCP-47 language code |
localizations.(key).title | Localized title for a specific language | No | Requires snippet.defaultLanguage; key = valid language code |
localizations.(key).description | Localized description for a specific language | No | Requires snippet.defaultLanguage; key = valid language code |
status.privacyStatus | Privacy setting of the video | Yes | Enum: public, private, unlisted |
status.publishAt | Scheduled publish date/time (ISO 8601) | No | Only for private videos; must be a future date (or publish immediately if past) |
status.embeddable | Whether the video can be embedded on other websites | No | Boolean |
status.license | License type for the video | No | Enum: youtube, creativeCommon |
status.publicStatsViewable | Whether extended statistics are publicly viewable | No | Boolean; default true |
status.selfDeclaredMadeForKids | Self-declared "made for kids" status | No | Boolean |
status.containsSyntheticMedia | Indicates the video contains synthetic or altered media | No | Boolean |
recordingDetails.recordingDate | Date and time when the video was recorded (ISO 8601) | No | Valid timestamp |
contentDetails.regionRestriction.allowed | List of country codes where the video is allowed | No | ISO 3166-1 alpha-2; mutually exclusive with blocked |
contentDetails.regionRestriction.blocked | List of country codes where the video is blocked | No | ISO 3166-1 alpha-2; mutually exclusive with allowed |
contentDetails.contentRating.* | Various content ratings (e.g. MPAA rating, TVPG rating) | No | Country-specific enum values (e.g. G, PG, PG-13, R) |