Every piece of content returned by InnerTube browse, search, and player endpoints is represented as a subclass of theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/faraasaaay/innertube-v1/llms.txt
Use this file to discover all available pages before exploring further.
YTItem sealed class. The sealed hierarchy lets you exhaustively branch on content type at compile time while sharing a common contract — every item has an id, a title, an optional thumbnail, an explicit flag, and a shareLink that deep-links into YouTube Music. Six concrete subclasses cover the full range of YouTube Music content: SongItem, AlbumItem, ArtistItem, PlaylistItem, PodcastItem, and EpisodeItem.
YTItem (sealed class)
The abstract base for all InnerTube content items. All fields are abstract and must be implemented by each subclass.
Unique identifier for the item. For songs and episodes this is a YouTube video ID; for albums, playlists, artists, and podcasts it is a browse or playlist ID.
Display title of the item as returned by the InnerTube API.
URL of the item’s thumbnail image.
null when the API does not supply one (for example, some artist results).true when the item carries an explicit content badge (MUSIC_EXPLICIT_BADGE). Always false for types that cannot be explicit (artists, playlists, podcasts).Canonical
music.youtube.com URL for sharing the item. Computed from id without a network call.SongItem
Represents a track — either an audio-only song (MUSIC_VIDEO_TYPE_ATV) or a music video. The computed property isVideoSong distinguishes the two at runtime.
YouTube video ID.
Track title.
One or more performing artists. Each
Artist carries a name and an optional channel id.Album the track belongs to.
null for standalone singles or when the API omits the album link. Each Album carries a name and a browse id.Track length in seconds.
null when the renderer does not include duration text (e.g., some home-feed cards).Raw InnerTube
musicVideoType string such as MUSIC_VIDEO_TYPE_ATV (audio) or MUSIC_VIDEO_TYPE_OMV (official music video). null when not present in the renderer.Numeric chart rank. Only populated for items sourced from a
ChartsPage response.Chart trend indicator string (e.g.,
"UP", "DOWN", "SAME"). Only populated for items sourced from a ChartsPage response.Thumbnail URL. Non-nullable for songs — the parser returns
null (drops the item) if the thumbnail is missing.true when the track carries a MUSIC_EXPLICIT_BADGE. Defaults to false.Preferred playback endpoint taken from the overlay play button. May differ from the item’s own
id in playlist contexts.Playlist-scoped video ID used when adding or removing the item from a user playlist.
Feedback token sent to the
feedback endpoint to add this song to the user’s library (Like). Sourced from a toggle menu item in its default state.Feedback token sent to the
feedback endpoint to remove this song from the user’s library (Unlike). Sourced from a toggle menu item in its toggled state.Feedback token for
REMOVE_FROM_HISTORY. Only present on items returned inside a HistoryPage.true when the song item was created from a podcast episode renderer. Defaults to false.Entity ID for user-uploaded songs, extracted from the
musicDeletePrivatelyOwnedEntityCommand in the item menu. null for standard catalogue tracks.Computed property
true when musicVideoType is non-null and is not MUSIC_VIDEO_TYPE_ATV. Use this to filter or display music-video items differently from audio-only tracks.AlbumItem
Represents a release (album, EP, or single). InnerTube identifies albums by a browseId (for the detail page) and a playlistId (for the track listing).
InnerTube browse ID (e.g.,
MPREb_…) used to navigate to the album detail page.Playlist ID (e.g.,
OLAK5uy_…) used for playback and the AlbumPage track-list fetch.Alias for
browseId. Set automatically from the primary constructor default.Album title.
Contributing artists.
null in some contexts (e.g., LibraryAlbumsPage) where the renderer does not include artist links.Release year as a four-digit integer. Parsed from the last subtitle run;
null when absent.Thumbnail URL.
true when the album carries a MUSIC_EXPLICIT_BADGE. Defaults to false.PlaylistItem
Represents a user-created or editorial playlist. The explicit property is always false since playlists themselves are never badged.
Playlist ID with the
VL prefix stripped.Playlist display title.
Playlist creator.
null when the renderer does not provide an author run.Localised track-count string (e.g.,
"42 songs"). null in contexts that omit this label.Thumbnail URL. Can be
null for some programmatically created playlists.Endpoint for starting sequential playback from the first track.
Endpoint for starting shuffled playback.
Endpoint for starting a radio/mix seeded by this playlist.
true when the authenticated user owns the playlist and the EDIT menu item is present.true when this PlaylistItem was created by PodcastItem.asPlaylistItem(). Used to distinguish podcast show playlists from regular playlists in the UI.Optional free-text description of the playlist.
URL of the author’s channel avatar image, when supplied by the renderer.
ArtistItem
Represents a music artist channel or user channel (profile). The explicit property is always false.
Browse ID of the artist channel (e.g.,
UCxxxxxx…).Artist display name.
Artist profile thumbnail URL. May be
null for user-channel results.Raw YouTube channel ID extracted from the subscribe endpoint. Used for subscription management.
Endpoint for the artist’s top-tracks playlist. Not always present in search results.
Endpoint for shuffled playback of the artist’s catalogue.
Endpoint for a radio seeded by this artist.
true when this item was identified as a MUSIC_PAGE_TYPE_USER_CHANNEL rather than a standard artist page (e.g., a podcast host’s profile).PodcastItem
Represents a podcast show. A PodcastItem can be converted to a PlaylistItem for uniform treatment in list views via .asPlaylistItem().
Browse ID of the podcast show page.
Podcast show title.
Show host or publisher.
null when the renderer omits the subtitle runs.Localised episode-count string (e.g.,
"120 episodes"). Sourced from the last subtitle run.Show artwork thumbnail URL.
Endpoint for sequential playback of the show’s episode list.
Endpoint for shuffled playback of the show’s episodes.
Feedback token to add this podcast to the user’s library.
Feedback token to remove this podcast from the user’s library.
Optional channel ID of the podcast host.
Method
PlaylistItem so that generic playlist UI components can display it without special-casing. Sets isPodcast = true and maps episodeCountText to songCountText.
EpisodeItem
Represents a single podcast episode. Like PodcastItem, episodes can be surfaced as SongItem instances via .asSongItem() for playback in song-oriented contexts.
YouTube video ID of the episode.
Episode title.
Host or publisher. Often
null in search results where the podcast itself is the attribution source.The parent podcast show, represented as an
Album (name + browse ID). null when the renderer does not include a podcast link.Episode length in seconds. Parsed from the last subtitle group;
null when absent.Localised publication date string (e.g.,
"Jan 2025"). Sourced from the subtitle section immediately before the podcast link.Episode thumbnail URL. The parser discards the item if this is missing.
true when the episode carries a MUSIC_EXPLICIT_BADGE. Defaults to false.Playback endpoint. Falls back to the item’s own
watchEndpoint when the overlay play button is absent (common in filtered search results).Feedback token to add this episode to the user’s library.
Feedback token to remove this episode from the user’s library.
Feedback token to mark this episode as played in the podcast progress tracker.
Feedback token to mark this episode as unplayed.
Method
SongItem with isEpisode = true, mapping author to the artists list and podcast to album. Preserves duration, thumbnail, explicit, endpoint, libraryAddToken, and libraryRemoveToken.
Helper types
Artist
Display name of the artist.
Browse ID of the artist channel (
UCxxxxxx…). null when the run carries no navigation endpoint (e.g., plain-text artist names on label-uploaded tracks).Album
Album display name.
Browse ID of the album (
MPREb_…). Used to navigate to the AlbumPage.Extension functions
Three list-level filter helpers are defined onList<T : YTItem>. All return a new list — the receiver is never mutated.
filterExplicit
enabled is true, removes every item whose explicit property is true. Pass false to return the list unchanged (useful for toggling the filter via a user preference).
filterVideoSongs
disableVideos is true, removes every SongItem where isVideoSong == true. All non-SongItem elements and audio-only tracks are always retained.
filterYoutubeShorts
enabled is true, removes every PlaylistItem whose id starts with "SS" — the prefix used by YouTube Shorts playlists. All other item types are always retained.