Product intent. youtube-video-downloader is a simple, focused web utility that turns a YouTube link or keyword into a working video file. It is a thin, decisive instrument built on top of the Reelix Streaming API at https://reelixstreaming.onrender.com: the user browses a trending home feed or searches YouTube, opens a video's details, and retrieves the direct download stream URLs for that video — the best muxed MP4 or a specific height such as 720p — without leaving the app.
Audience. Media-savvy people, students, archivists, creators and commuters who want a fast, no-nonsense tool for pulling YouTube video and audio files down to a device. The product should feel like a sharp, confident product rather than a sketchy download site: one query, one result, one download.
Scope posture. The app is deliberately simple and focused on YouTube video downloading. All YouTube data and stream/download URL retrieval is owned by the external Reelix Streaming API; the app owns the browsing, selection, and download-retrieval experience.
youtube-video-downloader is a single-role, anonymous-access web application. The one active human actor — the Viewer / Downloader — uses the app to browse trending content, search YouTube, inspect a video's details, and obtain direct download stream URLs.
Current delivery. A custom first-party web UI (React) that calls the Reelix Streaming API for every YouTube operation. The app never scrapes YouTube itself and never stores video files; it surfaces the direct download URLs the API returns from RapidAPI.
Actors.
Accepted behavior. Trending home feed with eight filters; keyword search with tabs, type selection, pagination, and autocomplete; video details with trailer, captions, comments, transcript, and recommendations; focused stream retrieval with quality selection; playlist, channel, and hashtag browsing; and watch/share URL resolution.
Narrow exclusions. No accounts, no authentication, no server-side persistence of user data, no video hosting or re-encoding, no playlist creation or editing, no commenting or uploading, and no capabilities beyond the documented Reelix Streaming API endpoints.
Delivery ownership. The product is delivered as a first-party custom web UI. The UI is the product's own surface; every YouTube fact it displays — trending items, search results, video details, captions, comments, transcripts, recommendations, playlist items, channel content, hashtag feeds, and download stream URLs — is fetched from the external Reelix Streaming API. The app does not own YouTube data; it owns the experience of finding and downloading.
Access ownership. All seven pages are anonymously reachable. The product has no accounts, no sign-in, and no per-user state. This is a deliberate consequence of the product's simplicity constraint: the app's job is to take one query and return one decisive result, and nothing in the accepted behavior requires durable per-user continuity. No identity establishment, verification, or account-management capability is part of this product.
Current vs. future. Everything described in this document is current. No future-horizon requirements were accepted.
Provider boundary. The Reelix Streaming API is authoritative for all YouTube data and for the direct download URLs it returns from RapidAPI. The app must not attempt to resolve streams itself, must not substitute another provider, and must not present download URLs as its own.
The reference directive for https://reelixstreaming.onrender.com declares uses: ["feature_reference", "domain_context"] and does not declare content_source. No content-source inventory is therefore included. The verified source observations confirm the URL could not be retrieved directly, so no factual entities, collections, or media references are asserted from it beyond the endpoint contract supplied by the user.
clamp(56px, 11vw, 128px), flush left, occupying columns 1–10 and running off the right edge at desktop. To the right of the headline, a vertical stack of three metadata lines in muted #8A857C at 13px uppercase tracked: "4K · 1080p · 720p", "MP4 · WEBM · MP3", "NO ADS · NO QUEUE". Beneath the headline, a single full-width input band (#161616, 1px #2A2A2A rule) with a solid #FF3B1F "FETCH" rectangle pinned to its right end. Below the fold: a numbered filter rail (01 NOW / 02 MUSIC / 03 GAMING / 04 MOVIES / 05 SPORTS / 06 NEWS / 07 SHORTS / 08 LIVE) with the active number in #FF3B1F, and a full-bleed horizontal band of trending thumbnails.page, perPage, filter), trending item (thumbnail, title, channel, duration, view count), filter value (now, music, gaming, movies, sports, news, shorts, live).HeroHeadline renders the clipped-up Anton display line. FetchBand owns the URL/keyword input and the FETCH action, routing a URL to resolve and a keyword to Search. FilterRail renders the eight numbered filters and owns the active-filter state. TrendingBand renders the full-bleed marquee of trending thumbnails and pauses on hover. Thumbnail renders grayscale at rest and full colour on hover or selection.page, perPage, and filter; the filter rail remains interactive throughout.tabs envelope, a result list of subjects/results, and pagination controls. Each result row is a full-bleed horizontal band: thumbnail left, title in Archivo 600, channel and metadata in muted #8A857C at 13px uppercase tracked.type selection; clear the keyword.keyword, tabId, subjects, results, tabs), suggestion (query), result item, tab, page.SearchField owns the keyword input and submits GET /youtube/search or POST /youtube/search. SuggestList calls GET /youtube/search/suggest?query= and renders suggestions. TabRow renders the response tabs and owns the active tabId. ResultBand renders each result as a full-bleed band. Pager owns page and perPage.#FF3B1F. Error: a ruled line reading "SEARCH FAILED" with a rectangular RETRY control that re-issues the same keyword, tab, and page. Recovery: RETRY preserves the keyword and tab; the search field remains editable.subjectId/subject envelope: title in Anton or Archivo 600, channel, duration, view count, and description. A trailer region, a caption-track list, a comment list, a transcript region, and a recommendations band shaped like the trending feed. A prominent entry point to Download.subjectId, subject), trailer, caption track, comment, transcript, recommendation item.SubjectHeader renders the resolved identity. TrailerBlock calls GET /youtube/trailer?videoId= or GET /youtube/videos/:videoId/trailer and falls back to a "{title} official trailer" search. CaptionList calls GET /youtube/videos/:videoId/captions. CommentList calls GET /youtube/videos/:videoId/comments. TranscriptBlock calls GET /youtube/videos/:videoId/transcript. RecommendationBand calls GET /youtube/videos/:videoId/recommendations and renders a trending-shaped page. DownloadEntry routes to Download.#FF3B1F progress bar with a tabular numeral counting percentage beside it.streams.qualities, streams.url), quality height, file size, download progress percentage.StreamFetcher calls GET /youtube/streams?videoId=&quality=&client= or GET /youtube/videos/:videoId/streams; omitting quality returns every height, and passing quality=720p (or a watch url) returns only that height. QualityTable renders the ruled rows. DownloadButton is a solid #FF3B1F block with #0B0B0B text that fills solid on hover. ProgressBar renders the flat 2px #FF3B1F bar with the tabular numeral.videoId; a failed download can be restarted from the same row.GET /youtube/playlists/:playlistId, rendered as full-bleed horizontal bands with grayscale thumbnails, titles in Archivo 600, and metadata in muted #8A857C.PlaylistHeader renders the playlist identity. PlaylistItemBand renders each item. Pager owns pagination.GET /youtube/channels/:channelId: channel identity (name, avatar rendered circular at 28px and grayscale until hover) and the channel's videos as full-bleed bands.ChannelHeader renders the channel identity. ChannelVideoBand renders each video. Pager owns pagination.GET /youtube/hashtag/:tag, rendered as full-bleed horizontal bands with grayscale thumbnails, titles in Archivo 600, and metadata in muted #8A857C.HashtagHeader renders the tag. HashtagItemBand renders each item. Pager owns pagination.FR-01 — Trending home feed. As a Viewer / Downloader I should see a trending home feed so that I can find something to download without searching.
explicit.GET /youtube/trending?page=&perPage=&filter=, where filter is one of now, music, gaming, movies, sports, news, shorts, live.FR-02 — Filtered trending. As a Viewer / Downloader I should switch the trending feed between the eight filters so that I can browse a category I care about.
explicit.#FF3B1F.FR-03 — Keyword search. As a Viewer / Downloader I should search YouTube by keyword so that I can find a specific video.
explicit.GET /youtube/search?keyword=&type=&page=&perPage= or POST /youtube/search.keyword, tabId, subjects, results, tabs) renders as a tab row and result bands.FR-04 — Search tabs and type. As a Viewer / Downloader I should switch result tabs and the type selection so that I can narrow results.
explicit.tabs, or changing type.#FF3B1F.FR-05 — Search pagination. As a Viewer / Downloader I should page through search results so that I can reach results beyond the first page.
explicit.page and perPage.FR-06 — Search autocomplete. As a Viewer / Downloader I should see autocomplete suggestions while typing so that I can search faster.
explicit.GET /youtube/search/suggest?query=.FR-07 — Video details. As a Viewer / Downloader I should open a video's details so that I can confirm it is the right video before downloading.
explicit.videoId, id, or url to GET /youtube/details?videoId= or GET /youtube/videos/:videoId.subjectId/subject envelope renders as the video identity.FR-08 — Random video. As a Viewer / Downloader I should be able to get a random video as subject detail so that I can discover something unexpected.
explicit.GET /youtube/random?query=&filter=.FR-09 — Trailer. As a Viewer / Downloader I should see a video's trailer so that I can preview it.
explicit.GET /youtube/trailer?videoId= or GET /youtube/videos/:videoId/trailer."{title} official trailer" search and that result renders.FR-10 — Download streams. As a Viewer / Downloader I should retrieve direct download stream URLs so that I can download the video.
explicit.GET /youtube/streams?videoId=&quality=&client= or GET /youtube/videos/:videoId/streams, or the alias GET /youtube/videos/:videoId/play.quality returns every height (streams.qualities, with streams.url the best muxed MP4); passing quality=720p (or a watch url) returns only that height. The direct download URLs are sourced from RapidAPI through the provided API.videoId.FR-11 — Quality selection. As a Viewer / Downloader I should choose a specific quality so that I can control the file I get.
explicit.quality=720p (or a watch url) to the streams endpoint.FR-12 — Best muxed MP4 default. As a Viewer / Downloader I should be able to use the best muxed MP4 without choosing a quality so that downloading is one step.
explicit.quality omitted.streams.url is presented as the default row and is downloadable directly.FR-13 — Download progress. As a Viewer / Downloader I should see download progress as a number so that I know the download's state.
explicit (creative direction).#FF3B1F progress bar fills left-to-right with a tabular numeral counting percentage beside it.FR-14 — Captions. As a Viewer / Downloader I should see a video's caption tracks so that I can inspect available subtitles.
explicit.GET /youtube/videos/:videoId/captions.FR-15 — Comments. As a Viewer / Downloader I should read a video's comments so that I can gauge the video.
explicit.GET /youtube/videos/:videoId/comments.FR-16 — Transcript. As a Viewer / Downloader I should read a video's transcript so that I can scan its content.
explicit.GET /youtube/videos/:videoId/transcript.FR-17 — Recommendations. As a Viewer / Downloader I should see related videos so that I can find more to download.
explicit.GET /youtube/videos/:videoId/recommendations.FR-18 — Playlist browsing. As a Viewer / Downloader I should browse a playlist's items so that I can download from it.
explicit.GET /youtube/playlists/:playlistId.FR-19 — Channel browsing. As a Viewer / Downloader I should browse a channel's content so that I can download from it.
explicit.GET /youtube/channels/:channelId.FR-20 — Hashtag feed. As a Viewer / Downloader I should browse a hashtag feed so that I can find videos by tag.
explicit.GET /youtube/hashtag/:tag.FR-21 — Resolve a watch/share URL. As a Viewer / Downloader I should paste a YouTube watch or share URL so that I can go straight to that video.
explicit.GET /youtube/resolve?url=.FR-22 — API base and headers. As a Viewer / Downloader I should have every request reach the Reelix Streaming API correctly so that the app works.
required_inference.https://reelixstreaming.onrender.com and includes the header x-api-key: hfy7jCdmtiLqXFcn18zdYU01vhKtaZ1xDG1QLAdx5mU2SMuINkzZMJqR9MD2p460 and Content-Type: application/json on every request.FR-23 — RapidAPI stream sourcing. As a Viewer / Downloader I should receive download URLs that actually resolve so that my download works.
required_inference.Product context. The Viewer / Downloader is the single active human role in youtube-video-downloader. They arrive with a specific intent — a video they want on their device — or with idle curiosity and a willingness to browse. They are media-savvy: they know what a muxed MP4 is, they know the difference between 1080p and 720p, and they have used download tools before. They are not looking for a media library, a subscription, or a social experience. They want the file.
Primary goal. Locate a YouTube video and obtain a working download link or stream URL without leaving the app.
Distinct accepted responsibilities.
now, music, gaming, movies, sports, news, shorts, live).Relevant inputs and decisions. The keyword or pasted URL; the filter choice; the tab and type choice; the page; the quality row; whether to accept the best muxed MP4 or pick a height; whether to start a download now or keep browsing.
Interactions with other accepted participants. The Viewer / Downloader interacts only with the app's own UI. The Reelix Streaming API and RapidAPI are provider actors the app calls on the user's behalf; the user never interacts with them directly and never supplies the API key themselves.
Observable success. A working download link or stream URL for the video they wanted, obtained without leaving the app — the file lands on their device, or the direct URL is available to hand to a download manager.
What makes this role's work distinct. There is exactly one role, and its work is a single decisive arc: query, result, download. It is not an administrative role, not a content-creation role, and not a multi-participant role. The interface must serve that arc without ceremony.
GET /youtube/trending?page=&perPage=&filter= for the default filter. Thumbnails render grayscale at rest.#FF3B1F.subjectId/subject identity. The trailer, captions, comments, transcript, and recommendations regions each load independently.quality omitted. The ruled quality table renders every height, and the best muxed MP4 (streams.url) is marked as the default row.#FF3B1F progress bar fills left-to-right with a tabular numeral counting percentage.Failure/recovery: if step 7 fails, "STREAMS UNAVAILABLE" renders with a RETRY control that re-issues the same videoId. If step 8 fails, the row's DOWNLOAD button is restored with a ruled error line and the download can be restarted from the same row.
GET /youtube/search/suggest?query= returns suggestions rendered beneath the field. They may select one.GET /youtube/search?keyword=&type=&page=&perPage= (or POST /youtube/search) and renders the envelope's tabs as a tab row and its subjects/results as full-bleed bands.type selection. Results re-render; the active tab is underlined in #FF3B1F.page and perPage to reach a result beyond the first page.quality omitted and renders the full quality table.quality=720p, and only that height is returned and rendered as the selected row.Failure/recovery: if step 3 fails, "SEARCH FAILED" renders with RETRY preserving the keyword and tab. If step 8 fails, the full quality table stays visible with a ruled error line and RETRY.
GET /youtube/resolve?url=.subjectId/subject identity.Failure/recovery: if step 3 fails, a ruled error line renders in the fetch band and the input remains editable so the user can correct the URL.
subjectId/subject identity renders first: title, channel, duration, view count, description.GET /youtube/trailer?videoId= or GET /youtube/videos/:videoId/trailer. If no attached trailer exists, the API falls back to a "{title} official trailer" search and that result renders.GET /youtube/videos/:videoId/captions.GET /youtube/videos/:videoId/comments.GET /youtube/videos/:videoId/transcript and can be expanded or collapsed.GET /youtube/videos/:videoId/recommendations and renders a trending-shaped page.Failure/recovery: each region fails independently — "NO CAPTIONS", "NO COMMENTS", "NO TRANSCRIPT", "NO RECOMMENDATIONS" — with a region-scoped RETRY, and the page never collapses. If the identity itself fails to resolve, "VIDEO NOT FOUND" renders with a control back to Landing.
GET /youtube/random?query=&filter=.Failure/recovery: a failed request shows a ruled error line with RETRY.
GET /youtube/playlists/:playlistId returns the playlist's items, rendered as full-bleed bands with grayscale thumbnails.Failure/recovery: if step 2 fails, "PLAYLIST UNAVAILABLE" renders with RETRY re-issuing the same playlist request. If the playlist is empty, "EMPTY PLAYLIST" renders in muted type.
GET /youtube/channels/:channelId returns the channel identity and its videos. The channel avatar renders circular at 28px, grayscale until hover.Failure/recovery: if step 2 fails, "CHANNEL UNAVAILABLE" renders with RETRY. If the channel has no videos, "NO VIDEOS ON THIS CHANNEL" renders in muted type.
GET /youtube/hashtag/:tag returns the hashtag feed, rendered as full-bleed bands with grayscale thumbnails.Failure/recovery: if step 2 fails, "HASHTAG UNAVAILABLE" renders with RETRY. If the feed is empty, "NOTHING FOR #<tag>" renders in muted type.
Muse and headline. Tobias van Schneider — editorial minimalism with swagger. The headline gesture is a single line of enormous condensed uppercase type that names the action: "PASTE A LINK. TAKE THE FILE."
Mode. Dark mode only.
Colour tokens by role.
| Role | Hex | Usage |
|---|---|---|
| Background | #0B0B0B | Dominant ground, ~70% of the page |
| Surface | #161616 | Raised panels only: search field, stream rows, modal |
| Hairline | #2A2A2A | 1px rules separating surfaces from the ground |
| Text | #F4F1EA | All display type and primary actions — the system's "ink" |
| Primary | #F4F1EA | Primary text and non-accent actions |
| Accent | #FF3B1F | Primary Download action, active filter number and tab underline, progress bar, focus ring — never a decorative fill |
| Muted | #8A857C | Metadata (duration, view count, file size) at small sizes |
No blue, no indigo, no violet, no gradients of any kind. Colour is used in flat blocks only.
Typography.
| Role | Family | Weight | Size | Notes |
|---|---|---|---|---|
| Display / headings | Anton | 400 | clamp(56px, 11vw, 128px) hero; clamp(40px, 5vw, 72px) section | Uppercase, tracking -0.01em, leading 0.86 |
| Subheads / labels | Archivo | 600 | 12–14px | Uppercase, 0.18em letterspacing |
| Body | Archivo | 400/500 | 16px mobile / 18px desktop | Line-height 1.5, measure capped at 62ch |
| Numbers | Archivo | 600 | — | Tabular numerals for file sizes, durations, view counts, percentages |
Type scale (1.5 modular): 128 / 88 / 56 / 40 / 28 / 20 / 16 / 13. Mobile hero 56px, tablet 88px, desktop 128px. Labels 13px uppercase tracked.
Shape language. Sharp corners everywhere — 0px radius on panels, buttons, and inputs. Structure comes from 1px #2A2A2A rules and large flat colour blocks, never from rounded cards or shadows. The only rounded element is the thin progress bar (2px radius) inside the download row. Buttons are solid rectangles with a 3px accent underline on hover; the primary Download button is a solid #FF3B1F block with #0B0B0B text. The result row is a full-bleed horizontal band, not a card.
Spacing rhythm. A 12-column asymmetric editorial grid on desktop: content in columns 1–7, the download/stream panel in columns 8–12 bleeding to the right edge. Mobile is a single column with the hero headline full-bleed and the search field pinned directly beneath it. Vertical rhythm is driven by ruled bands rather than card gaps.
Imagery style. The imagery is the video thumbnails themselves, treated monochrome: every thumbnail renders in grayscale at rest (filter: grayscale(1) contrast(1.05)) and returns to full colour only on hover or when selected as the active result. Channel avatars are circular, 28px, grayscale until hover. No stock people, no 3D blobs, no illustration.
The cropped headline and the ruled band.
The public entry is a full-viewport #0B0B0B first screen with no centred stack and no gradient. Its dominant object is a single line of Anton uppercase type — "PASTE A LINK. TAKE THE FILE." — set at clamp(56px, 11vw, 128px), flush left, occupying columns 1–10 and deliberately running off the right edge of the viewport at desktop so the last word is cropped by the screen, not by a container. The gesture is carried by the display type and the black ground; every readable label and control stays whole inside the viewport at 375px, 768px, and 1280px, wrapping or scaling to fit.
Beneath the headline sits a single full-width input band (#161616, 1px #2A2A2A rule) where the user pastes a YouTube URL or types a keyword, with a solid #FF3B1F FETCH rectangle pinned to its right end. To the right of the headline, a vertical stack of three metadata lines in #8A857C at 13px uppercase tracked: "4K · 1080p · 720p", "MP4 · WEBM · MP3", "NO ADS · NO QUEUE". There is no subheading paragraph, no secondary button, and no illustration.
Below the fold, the numbered filter rail — 01 NOW / 02 MUSIC / 03 GAMING / 04 MOVIES / 05 SPORTS / 06 NEWS / 07 SHORTS / 08 LIVE — replaces tab pills entirely, with the active number set in #FF3B1F and its label in #F4F1EA. Under it, the trending band runs full-bleed as a continuous marquee of grayscale thumbnails, so the page reads as one black-and-white editorial surface cut by a single red accent.
The concept recomposes only accepted content, states, and controls: the trending feed, the eight filters, the URL/keyword input, and the resolve/search routing. It introduces no new behavior, page, or destination.
Interaction Model: Static Motion Tempo: restrained Hero Dimensionality: flat
Landing Hero Motion Brief.
#0B0B0B ground, with the #161616 fetch band and its #FF3B1F FETCH rectangle directly beneath it.cubic-bezier(0.16, 1, 0.3, 1). The user's input — a pasted URL or a typed keyword — is committed by the FETCH rectangle, which routes a URL to resolve and a keyword to Search. The outcome is a decisive result: a resolved video on Video Details or a result set on Search.#FF3B1F bar filling left-to-right with a numeral counting in tabular figures. No particles, no parallax, no bouncy easing.#FF3B1F FETCH rectangle at its right end. Nothing else above the fold.prefers-reduced-motion, the headline appears immediately without the clip-up reveal, the marquee stops, and the trending band becomes a horizontally scrollable row (overflow-x: auto) whose further items are reached by scrolling and become fully readable as they pass.NFR-01 — API base and authentication headers. Every request to the Reelix Streaming API must target https://reelixstreaming.onrender.com and include the header x-api-key: hfy7jCdmtiLqXFcn18zdYU01vhKtaZ1xDG1QLAdx5mU2SMuINkzZMJqR9MD2p460 and Content-Type: application/json. Provenance: explicit. Rationale: the API rejects requests without the supplied key; the user supplied the exact header and value.
NFR-02 — Provider ownership of stream URLs. Direct download stream URLs must be sourced from RapidAPI through the provided API. The app must not resolve, proxy, re-encode, or host video files itself. Provenance: explicit. Rationale: the user stated the streams endpoint returns direct download URLs from RapidAPI.
NFR-03 — Simplicity. The app must remain simple and focused on YouTube video downloading. Provenance: explicit. Rationale: the user's opening instruction and the planning constraint both state this.
NFR-04 — Anonymous access. All pages must be reachable without an account, sign-in, or any identity establishment. Provenance: required_inference. Rationale: no accepted journey requires durable per-user state, and the simplicity constraint rules out account management.
NFR-05 — Readable text and controls stay whole. Headlines, wordmarks, labels, numbers, and controls must stay entirely inside the viewport and their container at 375px, 768px, and 1280px, wrapping or scaling to fit, with no other element covering any part of them. Provenance: explicit (creative direction). Rationale: the direction's readability rule takes precedence over the cropped-headline gesture for readable text and controls.
NFR-06 — Motion restraint. Motion is limited to the 400ms clip-up reveal, the 40s marquee, the 180ms filter crossfade, and the flat progress bar. No particles, no parallax, no bouncy easing. Provenance: explicit (creative direction).
NFR-07 — Reduced motion. With prefers-reduced-motion, the marquee stops and the trending band becomes a horizontally scrollable row. Provenance: explicit (creative direction).
NFR-08 — No blue or gradient surfaces. No blue, indigo, or violet on any surface; no gradient blobs, mesh gradients, glassmorphism, frosted panels, or soft drop shadows. Provenance: explicit (creative direction).
NFR-09 — Font restriction. Inter, Roboto, Arial, Helvetica, Open Sans, Lato, Poppins, and system-ui must not be used for any text. Provenance: explicit (creative direction).
NFR-10 — Shape restriction. 0px radius on panels, inputs, and buttons; the only rounded element is the 2px progress bar. Provenance: explicit (creative direction).
NFR-11 — Region-scoped failure isolation. A failure in one Video Details region (trailer, captions, comments, transcript, recommendations) must not collapse the page or block the other regions or the Download entry. Provenance: required_inference. Rationale: the accepted journey requires the user to reach Download even when supporting regions fail.
https://reelixstreaming.onrender.com.x-api-key and Content-Type: application/json to every request and normalizes the documented response envelopes.Constraints (binding).
x-api-key: hfy7jCdmtiLqXFcn18zdYU01vhKtaZ1xDG1QLAdx5mU2SMuINkzZMJqR9MD2p460 and Content-Type: application/json.Assumptions (narrow, labeled).
[Assumption] The Reelix Streaming API's documented response envelopes (keyword, tabId, subjects, results, tabs for search; subjectId, subject for details; streams.qualities, streams.url for streams) are stable and match the user's endpoint table.[Assumption] The API key supplied by the user is valid and remains valid for the app's lifetime; the app does not implement key rotation or user-supplied keys.[Assumption] The API's CORS configuration permits browser requests from the app's origin. If it does not, a thin same-origin proxy that forwards the same headers is an implementation detail, not a new product capability.[Assumption] Playlist, channel, and hashtag pages are reached by navigating to their routes with the relevant id or tag; the accepted endpoint table does not specify in-app discovery links to them, so the app does not invent a discovery surface.[Assumption] The client parameter on the streams endpoint is passed through when supplied and otherwise omitted.[Assumption] Download progress reflects the browser's own download progress for the direct URL; the app does not implement a server-side download proxy.Exclusions.
https://reelixstreaming.onrender.com that owns all YouTube data retrieval and stream/download URL resolution for this app.subjectId/subject response envelope returned by the details, videos, and random endpoints, describing a single video.GET /youtube/search and POST /youtube/search, containing keyword, tabId, subjects, results, and tabs.streams.qualities (every available height) and streams.url (the best muxed MP4).streams.url returned when quality is omitted; a video-and-audio file that plays without separate tracks.720p, requested via the quality parameter to return only that height.now, music, gaming, movies, sports, news, shorts, live.GET /youtube/resolve?url=.#FF3B1F, replacing tab pills.No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No completed page designs yet.
Completed design pages will appear here when they are ready to preview.
No comments yet. Be the first!