All endpoints are under /api/v1/. An interactive, always-current version is available at /docs (Swagger UI) on a running instance.
GET /channels- List all channels (supports search)POST /channels- Add a new channelGET /channels/{id}- Get channel detailsPUT /channels/{id}- Update channel settings (quality, download dir, enabled)DELETE /channels/{id}- Delete a channel (optionally delete files)POST /channels/{id}/scan- Trigger a manual scanGET /channels/{id}/videos- List channel videos (filterable by status)POST /channels/{id}/download-all- Queue all pending videosPOST /channels/{id}/videos/bulk-queue- Queue selected videosPOST /channels/{id}/videos/bulk-skip- Skip selected videosPOST /channels/{id}/videos/bulk-unskip- Unskip selected videosPOST /channels/{id}/refresh-metadata- Re-fetch channel metadata from platformPOST /channels/{id}/import/scan- Scan folder for existing video filesPOST /channels/{id}/import/confirm- Import matched filesPOST /channels/download-all-missing- Queue all pending/failed videos across all channelsGET /channels/{id}/shorts- List videos identified as shortsPOST /channels/{id}/shorts/detect- Scan existing videos and mark shortsPOST /channels/{id}/shorts/detect-clean/preview- Preview detect and clean operationPOST /channels/{id}/shorts/detect-clean/confirm- Detect shorts, delete files, renumber episodesPOST /channels/{id}/shorts/delete- Delete downloaded shorts from diskPOST /channels/{id}/download-subtitles- Download subtitles for all completed videosPOST /channels/{id}/videos/{vid}/download-subtitles- Download subtitles for a single videoPOST /channels/{id}/move-files/preview- Preview file move operationPOST /channels/{id}/force-rescan- Clear all video records and re-scan from scratch
GET /downloads/queue- Current download queue with progressPOST /downloads/queue- Add video to queueDELETE /downloads/queue/{id}- Remove from queuePOST /downloads/queue/bulk-remove- Remove multiple items from queuePOST /downloads/queue/{id}/priority- Set queue item priorityPOST /downloads/queue/{id}/download-now- Start download immediately, bypassing queuePOST /downloads/clear-queue- Clear all queued (non-active) downloadsGET /downloads/active- Currently downloadingGET /downloads/paused- Check if queue is pausedPOST /downloads/pause- Pause the download queuePOST /downloads/resume- Resume the download queueGET /downloads/history- Filterable download historyPOST /downloads/retry/{id}- Retry a failed downloadPOST /downloads/retry-all-failed- Retry all failed downloadsPOST /downloads/standalone- Download a standalone video by URL (auto-creates uploader channel)POST /downloads/standalone/reorganize- Migrate legacy standalone downloads to per-uploader channels
GET /dashboard/stats- Aggregate statisticsGET /dashboard/recent- Recent downloadsGET /dashboard/storage- Storage breakdown by channel
POST /auth/cookies/upload- Upload cookies.txt filePOST /auth/cookies/push- Push cookies as JSON (for browser extensions and scripts)GET /auth/cookies/status- Cookie file statusPOST /auth/cookies/validate- Force a cookie health checkDELETE /auth/cookies- Remove cookiesPUT /auth/api-key- Set YouTube API keyPUT /auth/player-client- Set yt-dlp player client strategyGET /auth/status- Overall auth status
GET /settings- Get all settingsPUT /settings- Update settingsGET /settings/userscript.user.js- Download pre-configured Tampermonkey scriptGET /settings/export- Export config backup (JSON)POST /settings/import- Import config backupPOST /settings/webhook/test- Test notification delivery
GET /system/health- Health check with versionGET /system/diagnostics- Full diagnostic reportGET /system/diagnostics/{video_id}- Per-video diagnostic reportGET /system/logs- System logs with filteringGET /system/pot-server-log- PO token server logs and process statusPOST /system/test-download- Test download capability (multi-strategy)POST /system/scan-all- Scan all enabled channelsGET /system/ytdlp/version- Current yt-dlp version
WS /ws/progress- Real-time download progress updates