5.2 KiB
5.2 KiB
API Endpoints
Video Download & Search
GET /api/search- Search for videos online (YouTube)- Query params:
query(required),limit(optional, default: 8),offset(optional, default: 1)
- Query params:
POST /api/download- Download a video from supported platforms- Body:
{ url: string, ...options } - Supports: YouTube, Bilibili, MissAV, and all yt-dlp supported sites
- Body:
GET /api/check-video-download- Check if a video has already been downloaded- Query params:
url(required) - Returns:
{ found: boolean, status: 'exists' | 'deleted', videoId?: string, ... }
- Query params:
GET /api/check-bilibili-parts- Check if a Bilibili video has multiple parts- Query params:
url(required)
- Query params:
GET /api/check-bilibili-collection- Check if a Bilibili URL is a collection/series- Query params:
url(required)
- Query params:
GET /api/download-status- Get status of active downloads- Returns:
{ active: [], queued: [] }
- Returns:
Video Management
POST /api/upload- Upload a local video file- Multipart form data:
video(file) - Automatically generates thumbnail
- Multipart form data:
GET /api/videos- Get all downloaded videos- Query params:
page(optional),limit(optional),sortBy(optional),order(optional),search(optional),author(optional),tags(optional)
- Query params:
GET /api/videos/:id- Get a specific video by IDPUT /api/videos/:id- Update video details- Body:
{ title?, author?, tags?, rating?, ... }
- Body:
DELETE /api/videos/:id- Delete a video and its filesGET /api/videos/:id/comments- Get video comments (if available)POST /api/videos/:id/rate- Rate a video (1-5 stars)- Body:
{ rating: number }
- Body:
POST /api/videos/:id/refresh-thumbnail- Refresh video thumbnailPOST /api/videos/:id/view- Increment view countPUT /api/videos/:id/progress- Update playback progress- Body:
{ progress: number }(seconds)
- Body:
GET /api/videos/author-channel-url- Get author channel URL for a video- Query params:
sourceUrl(required) - Returns:
{ success: boolean, channelUrl: string | null } - Checks database first, then fetches from YouTube/Bilibili API if not found
- Query params:
Download Management
POST /api/downloads/cancel/:id- Cancel an active downloadDELETE /api/downloads/queue/:id- Remove a download from queueDELETE /api/downloads/queue- Clear entire download queueGET /api/downloads/history- Get download history- Query params:
page(optional),limit(optional)
- Query params:
DELETE /api/downloads/history/:id- Remove an item from download historyDELETE /api/downloads/history- Clear entire download history
Collections
GET /api/collections- Get all collectionsPOST /api/collections- Create a new collection- Body:
{ name: string, videoIds?: string[] }
- Body:
PUT /api/collections/:id- Update a collection (add/remove videos)- Body:
{ name?: string, videoIds?: string[], action?: 'add' | 'remove' }
- Body:
DELETE /api/collections/:id- Delete a collection
Subscriptions
GET /api/subscriptions- Get all subscriptionsPOST /api/subscriptions- Create a new subscription- Body:
{ authorUrl: string, interval: number, platform?: string } interval: Check interval in minutesplatform: 'YouTube' (default) or 'Bilibili'
- Body:
DELETE /api/subscriptions/:id- Delete a subscription
Settings & System
GET /api/settings- Get application settingsPOST /api/settings- Update application settings- Body:
{ [key: string]: any }- Settings object - Supports:
visitorMode,cloudDriveEnabled,openListApiUrl,openListToken,openListPublicUrl,cloudDrivePath, and other settings
- Body:
GET /api/settings/password-enabled- Check if password protection is enabledPOST /api/settings/verify-password- Verify login password- Body:
{ password: string }
- Body:
POST /api/settings/reset-password- Reset login password- Body:
{ oldPassword: string, newPassword: string }
- Body:
POST /api/settings/migrate- Migrate data from JSON to SQLitePOST /api/settings/delete-legacy- Delete legacy JSON data filesPOST /api/settings/format-filenames- Format video filenames according to settingsPOST /api/settings/upload-cookies- Upload cookies.txt for yt-dlp- Multipart form data:
file(cookies.txt)
- Multipart form data:
POST /api/settings/delete-cookies- Delete cookies.txtGET /api/settings/check-cookies- Check if cookies.txt existsGET /api/settings/export-database- Export database as backup filePOST /api/settings/import-database- Import database from backup file- Multipart form data:
file(database backup file)
- Multipart form data:
GET /api/settings/last-backup-info- Get information about the last database backupPOST /api/settings/restore-from-last-backup- Restore database from the last backupPOST /api/settings/cleanup-backup-databases- Clean up old backup database files
File Management
POST /api/scan-files- Scan for existing video files in uploads directoryPOST /api/cleanup-temp-files- Cleanup temporary download files
Cloud Storage
GET /cloud/videos/:filename- Proxy endpoint to stream videos from cloud storage (OpenList/Alist)GET /cloud/images/:filename- Proxy endpoint to serve images from cloud storage (OpenList/Alist)- Note: These endpoints require cloud storage to be configured in settings