MoviePilot REST API
All script paths are relative to this skill file.
Use
scripts/mp-api.py
to call any MoviePilot REST API endpoint directly.
Setup
Configure the backend host and API key (persisted to
~/.config/moviepilot_api/config
):
python scripts/mp-api.py configure --host http://localhost:3000 --apikey <API_TOKEN>
The API key is the
API_TOKEN
value from MoviePilot settings.
How to Call APIs
General syntax
python scripts/mp-api.py <METHOD> <PATH> [key=value ...] [--json '<body>']
Authentication
Examples
# GET with query params
python scripts/mp-api.py GET /api/v1/media/search title="Avatar" type="movie"
# POST with JSON body
python scripts/mp-api.py POST /api/v1/download/add --json '{"torrent_url":"abc1234:1"}'
# DELETE
python scripts/mp-api.py DELETE /api/v1/subscribe/123
# Endpoints that require ?token= auth
python scripts/mp-api.py GET /api/v1/dashboard/statistic2 --token-param
Complete API Reference
All endpoints are under the base URL
{MP_HOST}
. Path parameters are shown as
{param}
.
Media Search (13 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/media/search
| Search media/person by title. Params: title (required), type , page , count
|
| GET | /api/v1/media/recognize
| Recognize media from torrent title. Params: title (required), subtitle
|
| GET | /api/v1/media/recognize2
| Recognize media (API_TOKEN auth, use --token-param ). Params: title , subtitle
|
| GET | /api/v1/media/recognize_file
| Recognize media from file path. Params: path (required) |
| GET | /api/v1/media/recognize_file2
| Recognize file (API_TOKEN auth). Params: path
|
| POST | /api/v1/media/scrape/{storage}
| Scrape media metadata. Body: FileItem JSON |
| GET | /api/v1/media/category/config
| Get category strategy config |
| POST | /api/v1/media/category/config
| Save category strategy config. Body: CategoryConfig |
| GET | /api/v1/media/category
| Get auto-categorization config |
| GET | /api/v1/media/group/seasons/{episode_group}
| Get episode group seasons |
| GET | /api/v1/media/groups/{tmdbid}
| Get media episode groups |
| GET | /api/v1/media/seasons
| Get media season info. Params: mediaid , title , year , season
|
| GET | /api/v1/media/{mediaid}
| Get media detail. Params: type_name (required: movie/tv), title , year
|
TMDB (8 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/tmdb/seasons/{tmdbid}
| All seasons for a TMDB title |
| GET | /api/v1/tmdb/similar/{tmdbid}/{type_name}
| Similar movies/TV shows |
| GET | /api/v1/tmdb/recommend/{tmdbid}/{type_name}
| Recommended movies/TV shows |
| GET | /api/v1/tmdb/collection/{collection_id}
| Collection details. Params: page , count
|
| GET | /api/v1/tmdb/credits/{tmdbid}/{type_name}
| Cast and crew. Params: page
|
| GET | /api/v1/tmdb/person/{person_id}
| Person details |
| GET | /api/v1/tmdb/person/credits/{person_id}
| Person's filmography. Params: page
|
| GET | /api/v1/tmdb/{tmdbid}/{season}
| All episodes of a season. Params: episode_group
|
Douban (5 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/douban/{doubanid}
| Douban media detail |
| GET | /api/v1/douban/person/{person_id}
| Person detail |
| GET | /api/v1/douban/person/credits/{person_id}
| Person filmography. Params: page
|
| GET | /api/v1/douban/credits/{doubanid}/{type_name}
| Cast info (type_name: movie/tv) |
| GET | /api/v1/douban/recommend/{doubanid}/{type_name}
| Recommendations |
Bangumi (5 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/bangumi/{bangumiid}
| Bangumi detail |
| GET | /api/v1/bangumi/credits/{bangumiid}
| Cast. Params: page , count
|
| GET | /api/v1/bangumi/recommend/{bangumiid}
| Recommendations. Params: page , count
|
| GET | /api/v1/bangumi/person/{person_id}
| Person detail |
| GET | /api/v1/bangumi/person/credits/{person_id}
| Person filmography. Params: page , count
|
Search / Torrents (4 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/search/media/{mediaid}
| Search torrents by media ID (format: tmdb:123 / douban:123 / bangumi:123 ). Params: mtype , area , title , year , season , sites
|
| GET | /api/v1/search/title
| Fuzzy search torrents by keyword. Params: keyword , page , sites
|
| GET | /api/v1/search/last
| Get latest search results |
| POST | /api/v1/search/recommend
| AI recommended resources. Body: filtered_indices , check_only , force
|
Download (7 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/download/
| List active downloads. Params: name (downloader name) |
| POST | /api/v1/download/
| Add download (with media info). Body: JSON |
| POST | /api/v1/download/add
| Add download (without media info). Body: JSON with torrent_url
|
| GET | /api/v1/download/start/{hashString}
| Resume download task |
| GET | /api/v1/download/stop/{hashString}
| Pause download task |
| GET | /api/v1/download/clients
| List available download clients |
| DELETE | /api/v1/download/{hashString}
| Delete download task. Params: name
|
Subscribe (28 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/subscribe/
| List all subscriptions |
| POST | /api/v1/subscribe/
| Add subscription. Body: Subscribe JSON |
| PUT | /api/v1/subscribe/
| Update subscription. Body: Subscribe JSON |
| GET | /api/v1/subscribe/list
| List subscriptions (API_TOKEN auth, use --token-param ) |
| GET | /api/v1/subscribe/{subscribe_id}
| Subscription detail |
| DELETE | /api/v1/subscribe/{subscribe_id}
| Delete subscription |
| PUT | /api/v1/subscribe/status/{subid}
| Update subscription status. Params: state (required) |
| GET | /api/v1/subscribe/media/{mediaid}
| Query subscription by media ID. Params: season , title
|
| DELETE | /api/v1/subscribe/media/{mediaid}
| Delete subscription by media ID. Params: season
|
| GET | /api/v1/subscribe/refresh
| Refresh all subscriptions |
| GET | /api/v1/subscribe/reset/{subid}
| Reset subscription |
| GET | /api/v1/subscribe/check
| Refresh subscription TMDB info |
| GET | /api/v1/subscribe/search
| Search all subscriptions |
| GET | /api/v1/subscribe/search/{subscribe_id}
| Search specific subscription |
| POST | /api/v1/subscribe/seerr
| Overseerr/Jellyseerr notification subscription |
| GET | /api/v1/subscribe/history/{mtype}
| Subscription history. Params: page , count
|
| DELETE | /api/v1/subscribe/history/{history_id}
| Delete subscription history |
| GET | /api/v1/subscribe/popular
| Popular subscriptions. Params: stype (required), page , count , min_sub , genre_id , min_rating , max_rating , sort_type
|
| GET | /api/v1/subscribe/user/{username}
| User's subscriptions |
| GET | /api/v1/subscribe/files/{subscribe_id}
| Subscription related files |
| POST | /api/v1/subscribe/share
| Share subscription. Body: SubscribeShare JSON |
| DELETE | /api/v1/subscribe/share/{share_id}
| Delete shared subscription |
| POST | /api/v1/subscribe/fork
| Fork shared subscription. Body: SubscribeShare JSON |
| GET | /api/v1/subscribe/follow
| List followed share users |
| POST | /api/v1/subscribe/follow
| Follow a share user. Params: share_uid
|
| DELETE | /api/v1/subscribe/follow
| Unfollow a share user. Params: share_uid
|
| GET | /api/v1/subscribe/shares
| List shared subscriptions. Params: name , page , count , genre_id , min_rating , max_rating , sort_type
|
| GET | /api/v1/subscribe/share/statistics
| Share statistics |
Site (24 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/site/
| List all sites |
| POST | /api/v1/site/
| Add site. Body: Site JSON |
| PUT | /api/v1/site/
| Update site. Body: Site JSON |
| GET | /api/v1/site/{site_id}
| Site detail by ID |
| DELETE | /api/v1/site/{site_id}
| Delete site |
| GET | /api/v1/site/domain/{site_url}
| Site detail by domain |
| GET | /api/v1/site/cookiecloud
| Sync CookieCloud |
| GET | /api/v1/site/reset
| Reset sites |
| POST | /api/v1/site/priorities
| Batch update site priorities. Body: array |
| GET | /api/v1/site/cookie/{site_id}
| Update site cookie & UA. Params: username , password , code
|
| POST | /api/v1/site/userdata/{site_id}
| Refresh site user data |
| GET | /api/v1/site/userdata/{site_id}
| Get site user data. Params: workdate
|
| GET | /api/v1/site/userdata/latest
| All sites latest user data |
| GET | /api/v1/site/test/{site_id}
| Test site connection |
| GET | /api/v1/site/icon/{site_id}
| Site icon |
| GET | /api/v1/site/category/{site_id}
| Site categories |
| GET | /api/v1/site/resource/{site_id}
| Site resources. Params: keyword , cat , page
|
| GET | /api/v1/site/statistic/{site_url}
| Specific site statistics |
| GET | /api/v1/site/statistic
| All site statistics |
| GET | /api/v1/site/rss
| RSS subscription sites |
| GET | /api/v1/site/auth
| Check authenticated sites |
| POST | /api/v1/site/auth
| Authenticate a site. Body: SiteAuth |
| GET | /api/v1/site/mapping
| Site domain-to-name mapping |
| GET | /api/v1/site/supporting
| Supported site list |
History (5 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/history/download
| Download history. Params: page , count
|
| DELETE | /api/v1/history/download
| Delete download history. Body: DownloadHistory JSON |
| GET | /api/v1/history/transfer
| Transfer history. Params: title , page , count , status
|
| DELETE | /api/v1/history/transfer
| Delete transfer history. Params: deletesrc , deletedest . Body: TransferHistory |
| GET | /api/v1/history/empty/transfer
| Clear all transfer history |
Media Server (8 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/mediaserver/play/{itemid}
| Play media online |
| GET | /api/v1/mediaserver/exists
| Check if media exists in library. Params: title , year , mtype , tmdbid , season
|
| POST | /api/v1/mediaserver/exists_remote
| Check existing episodes (remote). Body: MediaInfo JSON |
| POST | /api/v1/mediaserver/notexists
| Check missing episodes (remote). Body: MediaInfo JSON |
| GET | /api/v1/mediaserver/latest
| Latest library items. Params: server (required), count
|
| GET | /api/v1/mediaserver/playing
| Currently playing. Params: server (required), count
|
| GET | /api/v1/mediaserver/library
| Library list. Params: server (required), hidden
|
| GET | /api/v1/mediaserver/clients
| Available media servers |
Storage / Files (13 endpoints)
| Method | Path | Description |
|---|
| POST | /api/v1/storage/list
| List directory contents. Params: sort . Body: FileItem JSON |
| POST | /api/v1/storage/mkdir
| Create directory. Params: name (required). Body: FileItem |
| POST | /api/v1/storage/delete
| Delete file or directory. Body: FileItem JSON |
| POST | /api/v1/storage/download
| Download file. Body: FileItem JSON |
| POST | /api/v1/storage/image
| Preview image. Body: FileItem JSON |
| POST | /api/v1/storage/rename
| Rename file/dir. Params: new_name (required), recursive . Body: FileItem |
| GET | /api/v1/storage/usage/{name}
| Storage usage info |
| GET | /api/v1/storage/transtype/{name}
| Supported transfer types |
| GET | /api/v1/storage/qrcode/{name}
| Generate QR code for auth |
| GET | /api/v1/storage/auth_url/{name}
| Get OAuth2 auth URL |
| GET | /api/v1/storage/check/{name}
| Confirm QR login. Params: ck , t
|
| POST | /api/v1/storage/save/{name}
| Save storage config. Body: JSON object |
| GET | /api/v1/storage/reset/{name}
| Reset storage config |
Transfer (5 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/transfer/name
| Preview transfer name. Params: path (required), filetype (required) |
| GET | /api/v1/transfer/queue
| Transfer queue |
| DELETE | /api/v1/transfer/queue
| Remove from transfer queue. Body: FileItem JSON |
| POST | /api/v1/transfer/manual
| Manual transfer. Params: background . Body: ManualTransferItem JSON |
| GET | /api/v1/transfer/now
| Run immediate transfer |
Dashboard (16 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/dashboard/statistic
| Media statistics. Params: name
|
| GET | /api/v1/dashboard/statistic2
| Media statistics (API_TOKEN, use --token-param ) |
| GET | /api/v1/dashboard/storage
| Local storage space |
| GET | /api/v1/dashboard/storage2
| Local storage space (API_TOKEN) |
| GET | /api/v1/dashboard/processes
| Process info |
| GET | /api/v1/dashboard/downloader
| Downloader info. Params: name
|
| GET | /api/v1/dashboard/downloader2
| Downloader info (API_TOKEN) |
| GET | /api/v1/dashboard/schedule
| Scheduled services |
| GET | /api/v1/dashboard/schedule2
| Scheduled services (API_TOKEN) |
| GET | /api/v1/dashboard/transfer
| Transfer statistics. Params: days
|
| GET | /api/v1/dashboard/cpu
| CPU usage |
| GET | /api/v1/dashboard/cpu2
| CPU usage (API_TOKEN) |
| GET | /api/v1/dashboard/memory
| Memory usage |
| GET | /api/v1/dashboard/memory2
| Memory usage (API_TOKEN) |
| GET | /api/v1/dashboard/network
| Network traffic |
| GET | /api/v1/dashboard/network2
| Network traffic (API_TOKEN) |
Plugin (22 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/plugin/
| List plugins. Params: state (installed/market/all), force
|
| GET | /api/v1/plugin/installed
| List installed plugins |
| GET | /api/v1/plugin/statistic
| Plugin install statistics |
| GET | /api/v1/plugin/install/{plugin_id}
| Install plugin. Params: repo_url , force
|
| GET | /api/v1/plugin/reload/{plugin_id}
| Reload plugin |
| GET | /api/v1/plugin/reset/{plugin_id}
| Reset plugin config & data |
| GET | /api/v1/plugin/{plugin_id}
| Get plugin config |
| PUT | /api/v1/plugin/{plugin_id}
| Update plugin config. Body: JSON object |
| DELETE | /api/v1/plugin/{plugin_id}
| Uninstall plugin |
| POST | /api/v1/plugin/clone/{plugin_id}
| Clone plugin. Body: JSON object |
| GET | /api/v1/plugin/form/{plugin_id}
| Plugin form page |
| GET | /api/v1/plugin/page/{plugin_id}
| Plugin data page |
| GET | /api/v1/plugin/remotes
| Plugin federation list. Params: token (required) |
| GET | /api/v1/plugin/dashboard/meta
| All plugin dashboard metadata |
| GET | /api/v1/plugin/dashboard/{plugin_id}/{key}
| Plugin dashboard by key |
| GET | /api/v1/plugin/dashboard/{plugin_id}
| Plugin dashboard |
| GET | /api/v1/plugin/file/{plugin_id}/{filepath}
| Plugin static file |
| GET | /api/v1/plugin/folders
| Plugin folder config |
| POST | /api/v1/plugin/folders
| Save plugin folder config |
| POST | /api/v1/plugin/folders/{folder_name}
| Create plugin folder |
| DELETE | /api/v1/plugin/folders/{folder_name}
| Delete plugin folder |
| PUT | /api/v1/plugin/folders/{folder_name}/plugins
| Update folder plugins. Body: array |
Workflow (16 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/workflow/
| List all workflows |
| POST | /api/v1/workflow/
| Create workflow. Body: Workflow JSON |
| GET | /api/v1/workflow/{workflow_id}
| Workflow detail |
| PUT | /api/v1/workflow/{workflow_id}
| Update workflow. Body: Workflow JSON |
| DELETE | /api/v1/workflow/{workflow_id}
| Delete workflow |
| POST | /api/v1/workflow/{workflow_id}/run
| Run workflow. Params: from_begin
|
| POST | /api/v1/workflow/{workflow_id}/start
| Enable workflow |
| POST | /api/v1/workflow/{workflow_id}/pause
| Disable workflow |
| POST | /api/v1/workflow/{workflow_id}/reset
| Reset workflow |
| GET | /api/v1/workflow/actions
| List all actions |
| GET | /api/v1/workflow/plugin/actions
| Plugin actions. Params: plugin_id
|
| GET | /api/v1/workflow/event_types
| List event types |
| POST | /api/v1/workflow/share
| Share workflow. Body: WorkflowShare JSON |
| DELETE | /api/v1/workflow/share/{share_id}
| Delete shared workflow |
| POST | /api/v1/workflow/fork
| Fork shared workflow. Body: WorkflowShare JSON |
| GET | /api/v1/workflow/shares
| List shared workflows. Params: name , page , count
|
System (20 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/system/env
| Get system configuration |
| POST | /api/v1/system/env
| Update system configuration. Body: JSON object |
| GET | /api/v1/system/setting/{key}
| Get system setting |
| POST | /api/v1/system/setting/{key}
| Update system setting |
| GET | /api/v1/system/global
| Non-sensitive settings. Params: token (required) |
| GET | /api/v1/system/global/user
| User-related settings |
| GET | /api/v1/system/restart
| Restart system |
| GET | /api/v1/system/runscheduler
| Run scheduled service. Params: jobid (required) |
| GET | /api/v1/system/runscheduler2
| Run scheduler (API_TOKEN, use --token-param ). Params: jobid
|
| GET | /api/v1/system/modulelist
| List loaded modules |
| GET | /api/v1/system/moduletest/{moduleid}
| Test module availability |
| GET | /api/v1/system/versions
| List all GitHub releases |
| GET | /api/v1/system/ruletest
| Test filter rule. Params: title (required), rulegroup_name (required), subtitle
|
| GET | /api/v1/system/nettest
| Test network connectivity. Params: url (required), proxy (required), include
|
| GET | /api/v1/system/llm-models
| List LLM models. Params: provider (required), api_key (required), base_url
|
| GET | /api/v1/system/progress/{process_type}
| Real-time progress (SSE) |
| GET | /api/v1/system/message
| Real-time messages (SSE). Params: role
|
| GET | /api/v1/system/logging
| Real-time logs (SSE). Params: length , logfile
|
| GET | /api/v1/system/img/{proxy}
| Image proxy. Params: imgurl (required), cache , use_cookies
|
| GET | /api/v1/system/cache/image
| Cached image. Params: url (required) |
Discover (6 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/discover/source
| Discover data sources |
| GET | /api/v1/discover/bangumi
| Discover Bangumi. Params: type , cat , sort , year , page , count
|
| GET | /api/v1/discover/douban_movies
| Discover Douban movies. Params: sort , tags , page , count
|
| GET | /api/v1/discover/douban_tvs
| Discover Douban TV. Params: sort , tags , page , count
|
| GET | /api/v1/discover/tmdb_movies
| Discover TMDB movies. Params: sort_by , with_genres , with_original_language , page
|
| GET | /api/v1/discover/tmdb_tvs
| Discover TMDB TV. Params: same as movies |
Recommend (14 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/recommend/source
| Recommendation data sources |
| GET | /api/v1/recommend/bangumi_calendar
| Bangumi daily schedule. Params: page , count
|
| GET | /api/v1/recommend/douban_showing
| Douban now showing. Params: page , count
|
| GET | /api/v1/recommend/douban_movies
| Douban movies. Params: sort , tags , page , count
|
| GET | /api/v1/recommend/douban_tvs
| Douban TV. Params: sort , tags , page , count
|
| GET | /api/v1/recommend/douban_movie_top250
| Douban Top 250 movies. Params: page , count
|
| GET | /api/v1/recommend/douban_tv_weekly_chinese
| Douban Chinese TV weekly. Params: page , count
|
| GET | /api/v1/recommend/douban_tv_weekly_global
| Douban Global TV weekly. Params: page , count
|
| GET | /api/v1/recommend/douban_tv_animation
| Douban animation. Params: page , count
|
| GET | /api/v1/recommend/douban_movie_hot
| Douban hot movies. Params: page , count
|
| GET | /api/v1/recommend/douban_tv_hot
| Douban hot TV. Params: page , count
|
| GET | /api/v1/recommend/tmdb_movies
| TMDB movies. Params: sort_by , with_genres , page
|
| GET | /api/v1/recommend/tmdb_tvs
| TMDB TV. Params: sort_by , with_genres , page
|
| GET | /api/v1/recommend/tmdb_trending
| TMDB trending. Params: page
|
Torrent Cache (5 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/torrent/cache
| Get torrent cache |
| DELETE | /api/v1/torrent/cache
| Clear torrent cache |
| DELETE | /api/v1/torrent/cache/{domain}/{torrent_hash}
| Delete specific torrent cache |
| POST | /api/v1/torrent/cache/refresh
| Refresh torrent cache |
| POST | /api/v1/torrent/cache/reidentify/{domain}/{torrent_hash}
| Re-identify torrent. Params: tmdbid , doubanid
|
Message (6 endpoints)
| Method | Path | Description |
|---|
| POST | /api/v1/message/
| Receive user message. Params: token , source
|
| GET | /api/v1/message/
| Callback verification. Params: token , echostr , msg_signature , timestamp , nonce , source
|
| POST | /api/v1/message/web
| Send web message. Params: text (required) |
| GET | /api/v1/message/web
| Get web messages. Params: page , count
|
| POST | /api/v1/message/webpush/subscribe
| WebPush subscribe. Body: Subscription JSON |
| POST | /api/v1/message/webpush/send
| Send WebPush notification. Body: SubscriptionMessage JSON |
User (10 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/user/
| List all users |
| POST | /api/v1/user/
| Create user. Body: UserCreate JSON |
| PUT | /api/v1/user/
| Update user. Body: UserUpdate JSON |
| GET | /api/v1/user/current
| Current logged-in user |
| GET | /api/v1/user/{username}
| User detail |
| DELETE | /api/v1/user/id/{user_id}
| Delete user by ID |
| DELETE | /api/v1/user/name/{user_name}
| Delete user by username |
| POST | /api/v1/user/avatar/{user_id}
| Upload avatar. Body: multipart/form-data |
| GET | /api/v1/user/config/{key}
| Get user config |
| POST | /api/v1/user/config/{key}
| Update user config |
Login (3 endpoints)
| Method | Path | Description |
|---|
| POST | /api/v1/login/access-token
| Get JWT access token. Body: form (username, password) |
| GET | /api/v1/login/wallpaper
| Login page wallpaper |
| GET | /api/v1/login/wallpapers
| Login page wallpaper list |
MCP Tools (6 endpoints)
| Method | Path | Description |
|---|
| POST | /api/v1/mcp
| MCP JSON-RPC 2.0 endpoint |
| DELETE | /api/v1/mcp
| Terminate MCP session |
| GET | /api/v1/mcp/tools
| List all exposed tools |
| POST | /api/v1/mcp/tools/call
| Call a tool. Body: {"tool_name":"...","arguments":{...}}
|
| GET | /api/v1/mcp/tools/{tool_name}
| Get tool definition |
| GET | /api/v1/mcp/tools/{tool_name}/schema
| Get tool input schema |
Webhook (2 endpoints)
| Method | Path | Description |
|---|
| GET | /api/v1/webhook/
| Webhook message (GET). Params: token , source
|
| POST | /api/v1/webhook/
| Webhook message (POST). Params: token , source
|
Servarr Compatibility -- /api/v3 (16 endpoints)
Radarr/Sonarr compatible API for integration with external tools.
| Method | Path | Description |
|---|
| GET | /api/v3/system/status
| System status |
| GET | /api/v3/qualityProfile
| Quality profiles |
| GET | /api/v3/rootfolder
| Root folders |
| GET | /api/v3/tag
| Tags |
| GET | /api/v3/languageprofile
| Languages |
| GET | /api/v3/movie
| All subscribed movies |
| POST | /api/v3/movie
| Add movie subscription. Body: RadarrMovie JSON |
| GET | /api/v3/movie/lookup
| Search movie. Params: term (format: tmdb:123 ) |
| GET | /api/v3/movie/{mid}
| Movie detail |
| DELETE | /api/v3/movie/{mid}
| Delete movie subscription |
| GET | /api/v3/series
| All TV series |
| POST | /api/v3/series
| Add TV subscription. Body: SonarrSeries JSON |
| PUT | /api/v3/series
| Update TV subscription. Body: SonarrSeries JSON |
| GET | /api/v3/series/lookup
| Search TV. Params: term (format: tvdb:123 ) |
| GET | /api/v3/series/{tid}
| TV detail |
| DELETE | /api/v3/series/{tid}
| Delete TV subscription |
CookieCloud -- /cookiecloud (5 endpoints)
| Method | Path | Description |
|---|
| GET | /cookiecloud/
| Root |
| POST | /cookiecloud/
| Root |
| POST | /cookiecloud/update
| Upload cookie data. Body: CookieData JSON |
| GET | /cookiecloud/get/{uuid}
| Download encrypted data |
| POST | /cookiecloud/get/{uuid}
| Download encrypted data (POST) |
Common Workflows
Search and download a movie
# 1. Search TMDB for the movie
python scripts/mp-api.py GET /api/v1/media/search title="Inception" type="movie"
# 2. Get media detail (replace {tmdbid} with actual ID)
python scripts/mp-api.py GET /api/v1/media/27205 type_name="movie"
# 3. Search torrents
python scripts/mp-api.py GET /api/v1/search/media/tmdb:27205 mtype="movie"
# 4. Get latest search results
python scripts/mp-api.py GET /api/v1/search/last
# 5. Add download
python scripts/mp-api.py POST /api/v1/download/add --json '{"torrent_url":"<url_from_search>"}'
Add a subscription
# 1. Search for the show
python scripts/mp-api.py GET /api/v1/media/search title="Breaking Bad" type="tv"
# 2. Check if already subscribed
python scripts/mp-api.py GET /api/v1/subscribe/media/tmdb:1396
# 3. Check if already in library
python scripts/mp-api.py GET /api/v1/mediaserver/exists tmdbid=1396 mtype="tv"
# 4. Add subscription
python scripts/mp-api.py POST /api/v1/subscribe/ --json '{"name":"Breaking Bad","year":"2008","type":"tv","tmdbid":1396}'
System monitoring
# CPU, memory, network
python scripts/mp-api.py GET /api/v1/dashboard/cpu
python scripts/mp-api.py GET /api/v1/dashboard/memory
python scripts/mp-api.py GET /api/v1/dashboard/network
# Storage
python scripts/mp-api.py GET /api/v1/dashboard/storage
# Active downloads
python scripts/mp-api.py GET /api/v1/download/
# Run a scheduled task
python scripts/mp-api.py GET /api/v1/system/runscheduler jobid="subscribe_search_all"
Site management
# List all sites
python scripts/mp-api.py GET /api/v1/site/
# Test site connectivity
python scripts/mp-api.py GET /api/v1/site/test/1
# Get site user data
python scripts/mp-api.py GET /api/v1/site/userdata/1
# Sync CookieCloud
python scripts/mp-api.py GET /api/v1/site/cookiecloud
Error Handling
| Scenario | Action |
|---|
| HTTP 401 | API key is invalid or missing. Re-run configure with correct --apikey . |
| HTTP 403 | Insufficient permissions. The API key grants superuser access; check if the endpoint requires special auth. |
| HTTP 404 | Endpoint or resource not found. Verify the path and path parameters. |
| HTTP 422 | Validation error. Check required parameters and JSON body format. |
| Connection error | Verify --host URL is reachable. Check if MoviePilot is running. |
| Missing config | Run python scripts/mp-api.py configure --host <HOST> --apikey <KEY> first. |