InnerTube is a Kotlin Android library (Documentation 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.
com.metrolist.innertube) that wraps YouTube Music’s private InnerTube HTTP API hosted at https://music.youtube.com/youtubei/v1/. It provides a fully typed, coroutine-based interface for searching tracks, browsing artists and albums, resolving playback streams, managing playlists, and interacting with a user’s library — all without requiring an official Google API key.
Architecture
The library is built in two layers designed so most callers only ever need to touch the upper one.InnerTube — low-level HTTP client
The InnerTube class owns the Ktor/OkHttp HTTP client and maps one-to-one with the raw InnerTube endpoints: search, browse, player, next, feedback, and more. Each method constructs the JSON request body (including context, client, and authentication headers) and returns the raw Ktor HttpStatement. You interact with this class directly only when building custom integrations.
YouTube — high-level singleton API
The YouTube Kotlin object holds a private InnerTube instance and exposes fully parsed, typed results as Kotlin Result<T> values. Every public method calls one or more InnerTube endpoints, deserializes the raw JSON response into domain model objects (pages, items, and continuations), and returns the result inside a runCatching wrapper. All configuration properties on YouTube (locale, cookie, proxy, etc.) are delegated transparently to the underlying InnerTube instance.
Key capabilities
- Typed search — query songs, videos, albums, artists, playlists, podcasts, and episodes using
SearchFilterconstants. - Playback stream resolution — resolve audio/video streams for a given video ID with multi-client fallback across
WEB_REMIX,IOS,ANDROID_VR, and embedded player clients. - Artist and album browsing — fetch complete
ArtistPageandAlbumPageobjects including biography, subscriber count, song lists, and related releases. - Playlist management — create, rename, delete, and edit playlists; add or remove individual tracks; reorder songs; upload custom thumbnails.
- User library — browse liked songs, saved playlists, recently played items, and upload personal audio files.
- Home, Explore, and Charts — load the personalised home feed, mood & genre categories, and regional chart sections.
- Podcast support — browse podcast pages, fetch episode lists with continuation, and manage channel subscriptions.
- PoToken / BotGuard support — pass a
poTokenstring toYouTube.player()for clients that require it (WEB_REMIX,TVHTML5_SIMPLY). - Cipher deobfuscation — integrates with NewPipe Extractor for stream URL deobfuscation where needed.
- Proxy support — route all HTTP traffic through any
java.net.Proxyinstance with optional base64 credentials.
Quick navigation
Quickstart
Add InnerTube to your Android project and make your first API call in a few minutes.
Configuration
Configure locale, authentication cookies, proxy settings, and network timeouts.