Files
MoviePilot/skills/moviepilot-api/SKILL.md

27 KiB

name, description
name description
moviepilot-api Use this skill when you need to call MoviePilot REST API endpoints directly. Covers all 237 API endpoints across 27 categories including media search, downloads, subscriptions, library management, site management, system administration, plugins, workflows, and more. Use this skill whenever the user asks to interact with MoviePilot via its HTTP API, or when the moviepilot-cli skill cannot cover a specific operation.

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

  • By default, the key is sent via the X-API-KEY header.
  • For endpoints suffixed with 2 (e.g. /api/v1/dashboard/statistic2), use --token-param to send the key as ?token=.
  • Both methods validate against the same API_TOKEN value.

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.