Every InnerTube API request is stamped with a client identity — a bundle ofDocumentation 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.
clientName, clientVersion, clientId, and userAgent that YouTube uses to route requests to the correct response format and apply the appropriate service restrictions. Inner ships 21 named presets covering web, Android, iOS, TV, and VR surfaces.
For most browse and search operations you do not need to specify a client — Inner uses
WEB_REMIX by default. Client selection matters most for the player() call.Client structure
loginSupported— whentrueandsetLogin = true, Inner attaches thecookieandAuthorization: SAPISIDHASHheaders to requests made with this client.loginRequired— whentrue, the client will not return useful responses without an authenticated session.useSignatureTimestamp— whentrue, the player request body includes asignatureTimestampfrom the player’s JS file, which is needed to decrypt stream signatures.isEmbedded— whentrue, the player request body includes athirdParty.embedUrlfield pointing to the request origin.
Built-in presets
| Name | clientName | clientId | loginSupported | useSignatureTimestamp | Notes |
|---|---|---|---|---|---|
WEB | WEB | 1 | ❌ | ❌ | Standard web client; used for transcript endpoint |
WEB_REMIX | WEB_REMIX | 67 | ✅ | ✅ | YouTube Music web; default for all browse, search, and next |
WEB_CREATOR | WEB_CREATOR | 62 | ✅ | ✅ | YouTube Studio; login required |
WEB_MUSIC | WEB_REMIX | 67 | ✅ | ✅ | Alias for WEB_REMIX with a friendlyName label |
WEB_SAFARI | WEB | 1 | ❌ | ❌ | WEB with a macOS Safari user-agent |
WEB_EMBEDDED | WEB_EMBEDDED_PLAYER | 56 | ❌ | ❌ | Embedded player; isEmbedded = true |
MWEB | MWEB | 2 | ❌ | ❌ | Mobile web (Chrome/Android) |
IOS | IOS | 5 | ❌ | ❌ | iOS YouTube app (iPhone) |
IPADOS | IOS | 5 | ❌ | ❌ | iOS YouTube app (iPad), same clientId as IOS |
IOS_MUSIC | IOS_MUSIC | 26 | ❌ | ❌ | iOS YouTube Music app |
MOBILE | ANDROID | 3 | ✅ | ✅ | Android YouTube app (Pixel 9 Pro) |
ANDROID_MUSIC | ANDROID_MUSIC | 21 | ✅ | ✅ | Android YouTube Music app (Pixel 9 Pro) |
ANDROID_CREATOR | ANDROID_CREATOR | 14 | ✅ | ✅ | Android YouTube Studio app |
ANDROID_TESTSUITE | ANDROID_TESTSUITE | 30 | ❌ | ❌ | Internal test client; no login |
ANDROID_UNPLUGGED | ANDROID_UNPLUGGED | 29 | ✅ | ✅ | Android YouTube TV (live/cable) |
ANDROID_VR_NO_AUTH | ANDROID_VR | 28 | ❌ | ❌ | Quest 3 VR client v1.37; no login |
ANDROID_VR_1_61_48 | ANDROID_VR | 28 | ❌ | ❌ | Quest 3 VR client v1.61.48; no login |
ANDROID_VR_1_43_32 | ANDROID_VR | 28 | ❌ | ❌ | Quest 3 VR client v1.43.32; no login |
TVHTML5 | TVHTML5 | 7 | ✅ | ✅ | Smart TV (Samsung); login required |
TVHTML5_SIMPLY_EMBEDDED_PLAYER | TVHTML5_SIMPLY_EMBEDDED_PLAYER | 85 | ✅ | ✅ | PlayStation TV; login required, isEmbedded = true |
VISIONOS | VISIONOS | 101 | ❌ | ❌ | Apple Vision Pro; no login |
Default clients
Inner selects clients automatically for most operations:WEB_REMIX— used for all search, browse, home feed, artist, album, playlist, queue, library, search-suggestion, andnext(related queue) endpoints.WEB— used for thetranscriptendpoint where the full YouTube web client context is expected.
player() calls you always supply the client explicitly because the choice directly affects stream availability and service integrity requirements.
Choosing a client for playback
Web clients
WEB, WEB_REMIX, WEB_CREATOR, MWEB, WEB_EMBEDDEDBroad stream availability. PoTokens required for service integrity (see the PoTokens concept). WEB_REMIX and WEB_CREATOR support login and use a signature timestamp.iOS clients
IOS, IOS_MUSIC, IPADOSTypically work without PoTokens. loginSupported = false on all three, so they cannot attach session cookies. Good choice when you want reliable playback without token overhead.Android clients
MOBILE (ANDROID), ANDROID_MUSIC, ANDROID_CREATOR, ANDROID_UNPLUGGEDAndroid-specific user-agents. MOBILE, ANDROID_MUSIC, ANDROID_CREATOR, and ANDROID_UNPLUGGED all support login. Do not require PoTokens under normal conditions.TV clients
TVHTML5, TVHTML5_SIMPLY_EMBEDDED_PLAYERRequire login (loginRequired = true). Use the youtube.com origin rather than music.youtube.com. Subject to service integrity checks similar to web clients.Example — passing a client to the player
YouTubeClient.IOS for any of the presets in the table above. If the chosen client has useSignatureTimestamp = true you should also pass a valid signatureTimestamp obtained from the player JavaScript file; otherwise Inner passes null and YouTube may reject cipher-protected streams.