Downloads Compatibility
The supplied deployment uses the native Rust downloader. Standalone Telegram and media adapters remain disabled until explicitly configured.
Engine support, an exposed command, and successful live-provider delivery are separate facts. The native worker supports more than a single progressive video path, but it does not promise complete legacy parity.
| Command | Behavior |
|---|---|
/download URL |
Single video with saved preferences. No flags. |
/video URL |
Video download. |
/audio URL |
Audio extraction. |
/image URL |
Gallery/image extraction. |
/playlist URL |
Entries 1 through 20 by default. |
/list URL |
Bounded source format report without media download. |
/link URL |
Private stream-link report without media download. |
/subs URL |
Standalone subtitle documents. |
/cut URL START END |
Immediate clip request. |
/job UUID, /cancel UUID
|
Caller-owned operation inspection or cancellation. |
Unknown or malformed arguments create no operation. Credentials and source query values stay out of public errors.
/playlist N URL selects entries 1 through N. /video N URL and /audio N URL select entry N.
An explicit A-B range preserves order. -N selects the final N entries. Protocol ranges allow at most 100 entries. Configured item and byte limits can be tighter.
A range before the URL is a playlist selector, not a timestamp.
For immediate /cut, a numeric END smaller than START means duration. Otherwise it is absolute. A colon-form END is always absolute.
For trailing URL START DURATION on video/audio commands, a numeric final value means duration. These grammars are intentionally distinct.
/cut URL and /cut URL START open the private clip dialog. Confirmation freezes the selected ranges and quality.
A visible Telegram URL entity can follow the video path. Hidden text-link targets, captions, and content inserted through another bot do not trigger implicit downloading.
In groups, the URL must reply to this bot or originate through its inline mode. Normal group/topic authorization still applies.
Supported timestamp suffixes can open or complete a private clip workflow. Active clip input takes precedence. Use /cancel before starting an unrelated implicit download.
Music domains remain reserved for Music. An inline result does not bypass destination checks.
A saved quality of ask opens a durable private chooser for a ready video request. Explicit height overrides avoid the prompt.
The chooser supports height, Audio, and Cut where eligible. Cut transfers a single-video request into the durable clip editor without admitting the full source.
Stale or replaced callbacks cannot create a second operation. Restart preserves the linked draft. A linked quality menu resumes the existing clip editor instead of restarting the source.
Groups and direct HTTP admission require concrete quality rather than an interactive private prompt.
Saved video preferences apply height, codec, container, and file delivery. Audio uses its audio preference and ignores video-only fields.
Image requests use gallery ZIP and file-delivery preferences. Subtitle requests use subtitle language and automatic-track selection.
Explicit command overrides differ from stored settings:
| Flag | Accepted values |
|---|---|
--height |
best or integer 1 through 100000. |
--video-codec |
h264, h265, av1, vp9, any. |
--audio-codec |
best, aac, mp3, opus. |
--container |
mp4, mkv, webm. |
--send-as-file |
true or false. |
--gallery-zip |
true or false, image mode only. |
--subtitle-language |
Exact supported language tag. |
--subtitle-auto |
true or false, subtitle mode only. |
Mode-inappropriate, duplicate, unknown, and incomplete flags fail validation. WebM requires compatible video and explicit Opus audio.
Explicit best and false override saved values. They do not mean inheritance.
Settings changes after admission cannot change an immutable queued request or its cache identity. Changed intent under the same message ID conflicts.
See settings for stored values, ETags, clearing a proxy, and presentation controls.
Bare /subs opens the private language and automatic-track menu. /subs URL works independently of the stored embedding preference.
The worker prefers SRT, then VTT, then ASS, then SSA. It returns at most two validated UTF-8 text documents.
Language selection is exact, not a regular expression or wildcard. Manual tracks take priority. Automatic tracks require explicit permission.
ASS/SSA remain text documents. The worker does not render tags, load fonts, embed subtitles, or burn them into video.
Minute, hour, and day quotas default to 5, 30, and 100 accepted operations. Windows begin at their first accepted operation.
Quota rows survive restart. Only the exact configured owner bypasses time quotas.
Charging commits with new admission. Replay, conflicts, invalid requests, and rejected capacity do not consume quota. Worker retries do not charge again.
A separate active-work limit defaults to three running or delivering operations per actor. It includes the owner and cache hits.
Pending queue capacity remains separate. See configuration for native setting ownership.
Personal cookie operations require the actor's own authorized private context. Shared pool administration has separate authority.
Document and URL imports validate Netscape data and enforce capacity. Replacing or deleting a selected cookie invalidates frozen references.
Cookie URL import uses a separate direct guarded client. It rejects private destinations by default, HTTPS downgrade, invalid encoding, and bodies above 512 KiB.
/proxy toggles use of existing proxy configuration. It does not accept or reveal proxy credentials. Stale callbacks cannot undo a newer revision.
Automatic system-proxy routing is independent of the personal toggle. A configured proxy failure cannot silently become direct egress.
See cookies, history and routing, and the browser extension.
Groups require explicit enablement and current registered policy. Discovery events create disabled groups rather than enabling access.
Global bans override local grants. Group enablement and topic policy also apply to the owner.
Replies, uploads, albums, and cached sends retain the original chat/topic. There is no silent redirect to the actor's private chat or General topic.
/job and /cancel require the original actor, bot, chat, and topic. A receipt for another destination remains unconfirmed.
Confirmed private success removes eligible source input and progress notices. Group source messages remain.
An input reference does not authorize editing a bot message. Unknown message IDs cannot be guessed or reconstructed.
Progress edits are separate from media sends. Safe edit retries do not authorize repeating an uncertain upload.
New automatic requests freeze routing table v1 at admission. Explicit engine intent stays explicit.
YouTube selects yt-dlp. Selected gallery hosts select gallery first. VK wall/album paths have specific routing. Instagram can use guarded yt-dlp-to-gallery fallback.
Matching uses canonical hosts and path prefixes, not embedded URL text or query strings.
Fallback applies only to recognized extraction failures. Policy denial, cancellation, resource limits, credential setup, and local processing failures cannot authorize another provider.
Typed auto_*_v1 values enter persisted requests and cache identity without a new schema version. Older binaries or workers can reject them.
Keep runtime and worker revisions paired. Never rewrite frozen routing or delivery journals to force rollback.
just --justfile backend/justfile verify-media runs the real worker path against isolated sources, Bot API, proxy, and native storage.
Focused scenarios cover quality/cut, quotas, subtitles, cookies, NSFW policy, routing, albums, cache, replay, and cancellation.
Synthetic provider responses do not establish every live provider, authentication flow, or production edge configuration.
See media fixtures, inline search, content policy, and deferred media.
- Native backup and restore
- Configuration
- Deployment and rollback
- PostgreSQL data import
- Installation
- Image publication
- Local releases
- User-mode Telegram session
- YouTube services
- Downloads
- Downloader commands and compatibility
- Cookies and YouTube authentication
- Native deferred private media
- Download history and automatic proxy routing
- Native downloader inline lookup
- Native downloader NSFW policy
- Downloader settings
- Inbox
- Inbox content processing
- Inbox durability and compatibility
- Inbox runtime
- Inbox Telegram delivery
- Access control and identity
- HTTP API
- Frontend architecture
- Runtime architecture
- Persistence and recovery
- Native Music and Stats composition
- Worker protocol
- Documentation and Wiki
- Local GitHub CI
- Media acceptance fixtures
- Development and verification
- Worker development