Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/faraasaaay/inner/llms.txt

Use this file to discover all available pages before exploring further.

The browse API covers every major content surface in YouTube Music. All methods are suspend functions that return Result<T> — call getOrThrow() inside a coroutine or use onSuccess/onFailure to handle the outcome safely.

Home feed

home(continuation, params)

Fetches the personalised YouTube Music home feed. When called with a continuation token, it transparently delegates to the internal homeContinuation path and returns additional sections.
// Initial load
val homePage = YouTube.home().getOrThrow()
homePage.chips?.forEach { println("Chip: ${it}") }
homePage.sections.forEach { section -> println(section) }

// Load next page
val continuation = homePage.continuation
if (continuation != null) {
    val moreSections = YouTube.home(continuation = continuation).getOrThrow()
    println("Additional sections: ${moreSections.sections.size}")
}
continuation
String?
default:"null"
Continuation token from a previous home() call. When provided, the function loads the next set of sections instead of the initial feed.
params
String?
default:"null"
Optional InnerTube params field forwarded to the browse request. Used to request chip-filtered home feed variants.
HomePage
object

Explore & new releases

explore()

Returns the Explore page, which contains a preview of new-release albums and the mood & genres categories.
val explore = YouTube.explore().getOrThrow()
println("New release albums: ${explore.newReleaseAlbums.size}")
println("Mood & genres: ${explore.moodAndGenres.size}")
ExplorePage
object

newReleaseAlbums()

Fetches the full new-releases albums page (FEmusic_new_releases_albums), returning a flat list of AlbumItem values.
val albums = YouTube.newReleaseAlbums().getOrThrow()
albums.forEach { println("${it.title}${it.year}") }

moodAndGenres()

Fetches the full moods and genres page (FEmusic_moods_and_genres). Each MoodAndGenres entry has a title and a list of navigation params you can pass to browse().
val categories = YouTube.moodAndGenres().getOrThrow()
categories.forEach { println(it.title) }

Charts

getChartsPage(continuation)

Fetches the YouTube Music charts page (FEmusic_charts). Sections are classified into ChartType.TRENDING, ChartType.TOP, ChartType.GENRE, or ChartType.NEW_RELEASES based on their title.
val charts = YouTube.getChartsPage().getOrThrow()
charts.sections.forEach { section ->
    println("${section.title} [${section.chartType}]: ${section.items.size} items")
}
continuation
String?
default:"null"
Continuation token for loading additional chart sections.
ChartsPage
object

Artist methods

artist(browseId)

Fetches a full artist page including sections (songs, albums, singles, videos, playlists) and description.
val artistPage = YouTube.artist("UCT9zcQNlyht7fRlcjmflRSA").getOrThrow()
println(artistPage.artist.title)
println(artistPage.description)
artistPage.sections.forEach { println(it) }
browseId
String
required
The artist’s InnerTube browse ID (format: UC...).
ArtistPage
object

artistItems(endpoint)

Fetches a full listing (grid or list) for one section of an artist’s page — e.g. all albums or all songs.
val browseEndpoint = BrowseEndpoint(browseId = "...", params = "...")
val itemsPage = YouTube.artistItems(browseEndpoint).getOrThrow()
println("${itemsPage.title}: ${itemsPage.items.size} items")
endpoint
BrowseEndpoint
required
Browse endpoint obtained from an ArtistPage.Section (contains browseId and params).
ArtistItemsPage
object

artistItemsContinuation(continuation)

Loads the next page of items from an artist section.
val page = YouTube.artistItems(endpoint).getOrThrow()
val more = page.continuation?.let { YouTube.artistItemsContinuation(it).getOrThrow() }
more?.items?.forEach { println(it) }
continuation
String
required
Continuation token from ArtistItemsPage.continuation.
ArtistItemsContinuationPage
object

Album methods

album(browseId, withSongs)

Fetches a full album page. When withSongs is true (the default), Inner automatically follows all song-list continuations to build a complete track listing.
val albumPage = YouTube.album("MPREb_abc123").getOrThrow()
println("${albumPage.album.title} (${albumPage.album.year})")
albumPage.songs.forEach { println("  ${it.title}") }
println(albumPage.description)
browseId
String
required
Album browse ID (format: MPREb_...).
withSongs
Boolean
default:"true"
When true, Inner fetches and assembles the complete song list. Set to false for metadata-only lookups.
AlbumPage
object

albumSongs(playlistId, album)

Fetches the song list for an album’s underlying playlist, following all continuations. Called internally by album() but also useful when you already have the playlistId.
val songs = YouTube.albumSongs("OLAK5uy_abc123").getOrThrow()
songs.forEach { println("${it.title}${it.duration}") }
playlistId
String
required
The album’s playlist ID (format: OLAK5uy_...).
album
AlbumItem?
default:"null"
Optional album metadata used to backfill artist and thumbnail fields on SongItem instances.

Playlist methods

playlist(playlistId)

Fetches a playlist page including its metadata and the first page of songs. Sends the login cookie when available.
val page = YouTube.playlist("PLxxx").getOrThrow()
println("${page.playlist.title} by ${page.playlist.author?.name}")
page.songs.forEach { println(it.title) }
playlistId
String
required
Playlist ID (without the VL prefix — Inner adds it automatically).
PlaylistPage
object

playlistContinuation(continuation)

Loads the next page of songs for a playlist.
val first = YouTube.playlist("PLxxx").getOrThrow()
var cont = first.songsContinuation ?: first.continuation
while (cont != null) {
    val more = YouTube.playlistContinuation(cont).getOrThrow()
    more.songs.forEach { println(it.title) }
    cont = more.continuation
}
continuation
String
required
Continuation token from PlaylistPage.songsContinuation or PlaylistPage.continuation.
PlaylistContinuationPage
object

Generic browse

browse(browseId, params)

Low-level generic browse endpoint. Returns a BrowseResult with a title and a list of items grouped by shelf or grid. Useful for navigating mood & genre sub-pages or other arbitrary InnerTube browse destinations.
// Browse a mood/genre sub-page
val result = YouTube.browse("FEmusic_moods_and_genres_category", "params_string").getOrThrow()
println(result.title)
result.items.forEach { group ->
    println("  ${group.title}: ${group.items.size} items")
}
browseId
String
required
The InnerTube browse ID for the target page.
params
String?
required
Optional InnerTube params value. Pass null when not required.
BrowseResult
object

Build docs developers (and LLMs) love