API
Same rate limit as the website: 100 unique source videos per IP per hour. Watching the same video again does not count. Videos over 3 hours or 50 GB are rejected.
Resolve a URL
POST /api/resolve
Content-Type: application/json
{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}
Returns id, title, vrchat_url, thumbnail, formats. For playlists, items is the list.
Look up
GET /api/info/{id}
GET /api/formats/{id}
Mux / download
POST /api/prepare
{"id":"…","mode":"mux|video|audio","video_format":"137","audio_format":"140"}
Then GET /dl/{id}/{quality_key} when status is complete.
Play in VRChat
Players should request HLS:
https://uwu.tv/watch?v=VIDEO_ID https://uwu.tv/VIDEO_ID.m3u8 https://uwu.tv/https://www.youtube.com/watch?v=VIDEO_ID https://uwu.tv/https://youtu.be/VIDEO_ID
Browsers opening /{id} get a preview page instead of a stream.
Supported sites
Anything yt-dlp can read. See the full provider list for names and known limits.