Total Items
—
all sources
New (24h)
—
first seen today
Updated (24h)
—
new links added
Removed
—
call-added
New (7d)
—
this week
📡 Sources
| Source | Active | Removed | Last Seen | |
|---|---|---|---|---|
| Loading… | ||||
📋 Recent Changelog
Loading…
Loading…
| # | Source | Type | Status | Progress | New | Updated | Started | Duration | |
|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||
API Reference
Library
GET
/api/librarypublicPaginated list of all items. Query params:
source, type (movie/tv), search, page, per_page (max 500, default 48).Request
curl "/api/library?type=movie&search=batman&page=1&per_page=48"
Response
{
"success": true,
"data": {
"total": 1854, "page": 1, "per_page": 48, "pages": 39,
"items": [{
"imdb_id": "tt0903747", "post_id": "breaking-bad",
"source_slug": "movieland", "title": "Breaking Bad",
"year": "2008", "type": "series", "poster": "https://...",
"rating": "9.5", "is_added": false, "enriched": true,
"file_count": 62, "sources": ["movieland"],
"resolutions": ["1080p","720p"], "qualities": []
}]
}
}GET
/api/library/:imdbpublicFull detail by IMDB ID (
tt…) or TMDB ID (tmdb:12345). Returns title, poster, rating, description, genres, dubbed flags, sources, and grouped download links.Request
curl "/api/library/tt0903747"
Response
{
"success": true,
"data": {
"imdb_id": "tt0903747", "tmdb_id": "1396",
"title": "Breaking Bad", "year": "2008", "type": "series",
"poster": "https://...", "rating": "9.5",
"description": "A chemistry teacher...", "country": "USA",
"genres": ["drama","crime"], "dubbed": false,
"bilingual": false, "has_subtitle": true,
"duration_h": null, "duration_m": null,
"cover_url": "https://...", "trailer_url": "https://...",
"sources": ["movieland"], "enriched_from": "tmdb",
"file_count": 62, "resolutions": ["1080p","720p"],
"is_added": false, "added_at": null,
"groups": [{"quality":"1080p","resolutions":[{
"resolution":"1080p","files":[{
"id":1,"href":"https://cdn1.movieland.af/...",
"name":"file","file_type":"dubbed","codec":"",
"resolution":"1080p","quality":"1080p",
"season":"01","episode":"01","size_human":"537 MB",
"source_slug":"movieland","fs_status":null
}]
}]}]
}
}GET
/api/library/:imdb/subspublicSubtitles for an item from YTS-Subs. Returns list of subtitle objects with language, uploader, rating, download URL, and caption lines.
Response
{
"success": true,
"data": { "subtitles": [{
"language": "English", "lang_emoji": "🇬🇧",
"uploader": "user123", "rating": "Trusted",
"hearing_impaired": false,
"url": "https://yts-subs.com/subtitles/...",
"url_file": "https://cdn.yts-subs.com/...",
"captions": ["Movie.2023.1080p.WEB-DL"]
}]}
}GET
/api/library-post/:source/:post_idpublicDetail for items with no IMDB/TMDB ID — looked up by scraper source slug + post_id. Redirects internally to
/api/library/:imdb if the item later gains an IMDB ID.Request
curl "/api/library-post/movieland/constantinople"
POST
/api/library/:imdb/enrichTrigger TMDB enrichment for an item. Stores title, poster, type, overview from TMDB. Auto-triggered on first
GET /api/library/:imdb for real IMDB IDs.Items
GET
/api/items/statsAggregate counts: total items, new this week, by_source breakdown with active/removed counts.
Response
{
"success": true,
"data": {
"total": 1854, "new_this_week": 42,
"by_source": [{"slug":"movieland","active":1854,"removed":0}]
}
}GET
/api/itemsRaw item list with full DB row data. Params:
source, type, search, page, limit.GET
/api/items/newItems added in the last N days. Param:
since (ISO date), limit.GET
/api/items/updatedItems with new links since a date. Param:
since (ISO date), limit.GET
/api/items/:idSingle item by database ID.
GET
/api/items/:id/linksAll download links for an item by database ID.
GET
/api/imdb/:imdb/linksAll download links for an IMDB ID across all sources.
POST
/api/items/mark-addedMark an item as added/unadded. Body:
{"imdb_id":"tt…","added":true}POST
/api/items/mark-added/bulkBulk mark items as added. Body:
{"imdb_ids":["tt…"],"added":true}POST
/api/links/:id/mark-addedMark a single link as added. Body:
{"added":true}DELETE
/api/items/:idSoft-delete (mark as removed) an item by ID.
POST
/api/items/bulkBulk action on items. Body:
{"ids":[1,2,3],"action":"remove"|"restore"}POST
/api/links/scan-sizesHEAD-request links to detect file sizes. Body:
{"imdb_id":"tt…"} or {"link_ids":[1,2,3]}POST
/api/links/:id/scan-sizeHEAD-request a single link to detect its file size.
GET
/api/changelogRecent add/update/remove events. Param:
limit, source.POST
/api/maintenance/normalize-linksRe-parse and normalize all link quality/resolution/codec fields from stored raw_urls.
Scraper
POST
/api/scrapeStart a scrape job. Body:
{"source":"movieland","type":"incremental","pages":3}. Type is incremental or full.Request
curl -X POST "/api/scrape" -H "Content-Type: application/json" \
-d '{"source":"movieland","type":"incremental","pages":3}'Response
{"success":true,"data":{"job_id":42,"status":"running"}}GET
/api/jobsList recent scrape jobs. Param:
limit (default 20). Returns status, progress, new/updated counts, duration.GET
/api/jobs/:idSingle job detail by ID.
GET
/api/jobs/:id/logsLog lines for a job. Returns JSON array of
{level, message, created_at}.GET
/api/jobs/:id/streamSSE stream of live job log lines.
Content-Type: text/event-stream. Each event is a JSON log line.DELETE
/api/jobs/:idCancel a running or pending job.
Filestore
POST
/api/filestore/push/:link_idPush a single link to filestore by link database ID.
POST
/api/filestore/push-imdb/:imdbPush all links for an IMDB ID to filestore. Body:
{"only_unadded":true}POST
/api/filestore/sync-imdb/:imdbPull filestore status back into local link rows. Updates
fs_status, fs_file_uuid on each link.GET
/api/filestore/status/:link_idFilestore push status for a single link. Returns
pending, running, done, or failed.