🚀 API Endpoints
The following API endpoints are available.
Authentication:
- Option 1 (Recommended): Add ?api_key=YOUR_KEY to the URL.
- Option 2: Use the X-API-Key: YOUR_KEY header.
- Option 3: Use Basic Authentication (username/password).
- http://admin:posterizarr@YOUR_IP:8000/api/webhook/tautulli
⚙️ System
/api
Returns the basic status of the API server.
/api/system-info
Returns hardware and OS information about the host system.
View Response
/api/version
Checks installed version against remote GitHub version.
/api/releases
Fetches the latest release notes from GitHub.
View Response
{
"success": true,
"releases": [
{
"version": "2.1.15",
"name": "v2.1.15",
"published_at": "2025-11-21T11:00:57Z",
"days_ago": 4,
"is_prerelease": false,
"is_draft": false,
"html_url": "[https://github.com/fscorrupt/posterizarr/releases/tag/2.1.15](https://github.com/fscorrupt/posterizarr/releases/tag/2.1.15)",
"body": "## What's Changed\r\n* Fix missing assets in gallery..."
}
]
}
📊 Status & Monitoring
/api/status
Returns the current execution status of the script.
View Response
{
"running": false,
"manual_running": false,
"scheduler_running": false,
"scheduler_is_executing": false,
"last_logs": [
"[2025-11-25 16:34:18] [INFO] |L.33500| Finished, Total images created: 0",
"[2025-11-25 16:34:18] [INFO] |L.6718 | Text-size cache: hits='0', misses='0' (0%); magick_calls='0' in '0 ms'; est_saved='0h 0m 0s'",
"[2025-11-25 16:34:18] [INFO] |L.33561| Script execution time: 0h 4m 14s",
"[2025-11-25 16:34:20] [INFO] |L.6705 | Uptime Kuma webhook sent: Status=up, Msg=OK, Ping=254627"
],
"script_exists": true,
"config_exists": true,
"pid": null,
"current_mode": null,
"active_log": "Scriptlog.log",
"already_running_detected": false,
"running_file_exists": false,
"start_time": null
}
/api/scheduler/status
Details regarding the internal scheduler, next run times, and active jobs.
View Response
{
"success": true,
"enabled": true,
"running": true,
"is_executing": false,
"schedules": [
{
"time": "01:30",
"description": "30min before Kometa"
},
{
"time": "04:30",
"description": "30min before Kometa"
}
],
"timezone": "Europe/Berlin",
"last_run": "2025-11-25T16:30:00.002702",
"next_run": "2025-11-25T19:30:00+01:00",
"active_jobs": [
{
"id": "posterizarr_normal_6",
"name": "Posterizarr Normal Mode @ 19:30",
"next_run": "2025-11-25T19:30:00+01:00"
}
]
}
/api/runtime-history
Returns a full history of previous script executions.
View Response
{
"success": true,
"history": [
{
"id": 327,
"timestamp": "2025-11-25T16:30:03",
"mode": "scheduled",
"runtime_seconds": 254,
"runtime_formatted": "0h 4m 14s",
"total_images": 0,
"posters": 0,
"seasons": 0,
"backgrounds": 0,
"titlecards": 0,
"collections": 0,
"errors": 0,
"status": "completed"
}
],
"count": 50,
"total": 327,
"limit": 50,
"offset": 0,
"mode_filter": null
}
/api/runtime-history?limit=10
Returns a limited history of previous script executions.
View Response
🔧 Configuration
/api/config
Returns the full configuration.
Security Note
Sensitive keys (API Tokens, Passwords, Webhooks) have been redacted in the example below.
View Response
{
"success": true,
"config": {
"tvdbapi": "<REDACTED>",
"tmdbtoken": "<REDACTED>",
"FanartTvAPIKey": "<REDACTED>",
"PlexToken": "<REDACTED>",
"JellyfinAPIKey": "<REDACTED>",
"EmbyAPIKey": "<REDACTED>",
"FavProvider": "tmdb",
"PreferredLanguageOrder": [
"xx",
"en",
"de"
],
"PlexUrl": "http://plex:32400",
"UsePlex": "true",
"JellyfinUrl": "http://jellyfin:8096",
"UseJellyfin": "false",
"EmbyUrl": "http://192.168.1.93:8096/emby",
"UseEmby": "false",
"SendNotification": "true",
"AppriseUrl": "<REDACTED>",
"UptimeKumaUrl": "<REDACTED>",
"AssetPath": "/assets",
"logLevel": "2",
"basicAuthEnabled": "false",
"basicAuthUsername": "admin",
"basicAuthPassword": "<REDACTED>"
},
"ui_groups": {
"WebUI Settings": [
"basicAuthEnabled",
"basicAuthUsername",
"basicAuthPassword"
]
},
"display_names": {
"tvdbapi": "TVDB API Key",
"tmdbtoken": "TMDB API Token"
},
"tooltips": {},
"using_flat_structure": true
}
📁 Assets & File Management
/api/assets/overview
Returns a categorized overview of assets (missing, non-primary language, etc.).
View Response
{
"categories": {
"missing_assets": {
"count": 0,
"assets": []
},
"non_primary_lang": {
"count": 13,
"assets": [
{
"id": 54766,
"Title": "Jurassic World: Die Chaostheorie | Season 2",
"Type": "Season",
"Rootfolder": "Jurassic World - Chaos Theory (2024) [tvdb-440997]",
"LibraryName": "Kids Shows",
"Language": "en",
"has_poster": true
}
]
},
"resolved": {
"count": 34,
"assets": [
{
"id": 53663,
"Title": "S01E01 | WILLKOMMEN IN PARADISE",
"Type": "Episode",
"LibraryName": "TV Shows",
"Language": "Textless",
"has_poster": true
}
]
}
},
"config": {
"primary_language": "xx",
"primary_provider": "tmdb"
}
}
/api/assets/stats
Returns storage usage and file counts per library folder.
View Response
{
"success": true,
"stats": {
"posters": 2313,
"backgrounds": 0,
"seasons": 2179,
"titlecards": 34425,
"total_size": 83481927747,
"folders": [
{
"name": "Anime Shows",
"path": "Anime Shows",
"poster_count": 355,
"files": 16519,
"size": 31830640233
},
{
"name": "TV Shows",
"path": "TV Shows",
"poster_count": 382,
"files": 13795,
"size": 32606586825
}
]
}
}
/api/assets-folders
Returns a specific list of asset folders and their counts.
View Response
/api/manual-assets-gallery
Returns a structure for the manual asset selector UI.
View Response
{
"libraries": [
{
"name": "4K TV Shows",
"folders": [
{
"name": "Dexter - Original Sin (2024) [tvdb-430780]",
"path": "4K TV Shows/Dexter - Original Sin (2024) [tvdb-430780]",
"assets": [
{
"name": "poster.jpg",
"path": "4K TV Shows/Dexter - Original Sin (2024) [tvdb-430780]/poster.jpg",
"type": "poster",
"url": "/manual_poster_assets/4K%20TV%20Shows/Dexter%20-%20Original%20Sin%20%282024%29%20%5Btvdb-430780%5D/poster.jpg"
}
],
"asset_count": 1
}
],
"folder_count": 3
}
],
"total_assets": 226
}
/api/overlayfiles
Lists available overlay image files and fonts.
View Response
/api/folder-view/browse
Browses the root folder structure of assets.
View Response
🎬 Plex Export
/api/plex-export/statistics
Statistics regarding the Plex library export CSVs.
View Response
/api/plex-export/runs
List of timestamps for previous Plex export runs.
View Response
🎞️ Other Media Export
/api/other-media-export/statistics
Statistics regarding non-Plex media exports.
View Response
/api/other-media-export/runs
List of timestamps for previous non-Plex export runs.
🖥️ Dashboard & Logs
/api/dashboard/all
A combined endpoint used to populate the main dashboard (Status + Version + System Info).
View Response
{
"success": true,
"status": {
"running": false,
"manual_running": false,
"scheduler_running": false,
"active_log": "Scriptlog.log"
},
"version": {
"local": "2.1.15",
"remote": "2.1.15",
"is_update_available": false
},
"scheduler_status": {
"enabled": true,
"next_run": "2025-11-25T19:30:00+01:00"
},
"system_info": {
"platform": "Linux",
"cpu_cores": 8,
"memory_percent": 15.0,
"is_docker": true
}
}
/api/logs
Lists available log files on the server.
View Response
🔔 Webhooks
/api/webhook/arr
Endpoint for Sonarr and Radarr On Import and On Upgrade webhooks. Converts the Arr JSON payload into a trigger file.
View Response
/api/webhook/tautulli
Endpoint for Tautulli notifications. Maps incoming JSON keys directly to script arguments.
View Response
?? Authentication & Onboarding
/api/onboarding/complete
Submits data or triggers an action at /api/onboarding/complete.
/api/auth/check
Retrieves data from /api/auth/check.
/api/auth/keys
Retrieves data from /api/auth/keys.
/api/auth/keys
Submits data or triggers an action at /api/auth/keys.
/api/auth/keys/{key_id}
Deletes a resource at /api/auth/keys/{key_id}.
?? Connection Validation
/api/validate/plex
Submits data or triggers an action at /api/validate/plex.
/api/validate/jellyfin
Submits data or triggers an action at /api/validate/jellyfin.
/api/validate/emby
Submits data or triggers an action at /api/validate/emby.
/api/validate/tmdb
Submits data or triggers an action at /api/validate/tmdb.
/api/validate/tvdb
Submits data or triggers an action at /api/validate/tvdb.
/api/validate/fanart
Submits data or triggers an action at /api/validate/fanart.
/api/validate/discord
Submits data or triggers an action at /api/validate/discord.
/api/validate/apprise
Submits data or triggers an action at /api/validate/apprise.
/api/validate/uptimekuma
Submits data or triggers an action at /api/validate/uptimekuma.
/api/validate/agregarr
Validates the Agregarr URL and API key against its read-only Posterizarr
integration status endpoint (GET /api/v1/posterizarr/status).
(Note: Requires the bitr8/agregarr fork image bitr8/agregarr:develop with PR #103. Official/stock Agregarr releases without this PR will return HTTP 404 with a message explaining the requirement).
View Response (Success)
View Response (Missing bitr8 Fork / 404)
{
"valid": false,
"message": "Agregarr is reachable, but its Posterizarr integration endpoint is unavailable. Requires the bitr8 Agregarr fork (Docker image bitr8/agregarr:develop) with PR #103. Upstream agregarr/agregarr does not have this endpoint.",
"details": {
"status_code": 404,
"required_image": "bitr8/agregarr:develop",
"fork_url": "https://github.com/bitr8/agregarr-dev",
"pending_pr": "https://github.com/bitr8/agregarr-dev/pull/103"
}
}
?? Library & Server Management
/api/plex/action
Submits data or triggers an action at /api/plex/action.
/api/jellyfin-emby/action
Submits data or triggers an action at /api/jellyfin-emby/action.
/api/libraries/{server_type}/cached
Retrieves data from /api/libraries/{server_type}/cached.
/api/libraries/{server_type}/exclusions
Submits data or triggers an action at /api/libraries/{server_type}/exclusions.
/api/libraries/plex
Submits data or triggers an action at /api/libraries/plex.
/api/libraries/jellyfin
Submits data or triggers an action at /api/libraries/jellyfin.
/api/libraries/emby
Submits data or triggers an action at /api/libraries/emby.
/api/libraries/plex/items
Submits data or triggers an action at /api/libraries/plex/items.
?? Script Execution & Control
/api/run/{mode}
Submits data or triggers an action at /api/run/{mode}.
/api/run-manual
Submits data or triggers an action at /api/run-manual.
/api/run-manual-upload
Submits data or triggers an action at /api/run-manual-upload.
/api/run-logoupdater
Submits data or triggers an action at /api/run-logoupdater.
/api/run-restore
Submits data or triggers an action at /api/run-restore.
/api/reset-posters
Submits data or triggers an action at /api/reset-posters.
/api/tmdb/search-posters
Submits data or triggers an action at /api/tmdb/search-posters.
/api/stop
Submits data or triggers an action at /api/stop.
/api/force-kill
Submits data or triggers an action at /api/force-kill.
??? Asset Galleries & Image Choices
/api/assets/skip
Adds the skip_posterizarr tag/label to the specified asset in the active media server and removes it from the Action Center.
Payload:
/api/gallery
Retrieves data from /api/gallery.
/api/gallery/{path:path}
Deletes a resource at /api/gallery/{path:path}.
/api/gallery/bulk-delete
Submits data or triggers an action at /api/gallery/bulk-delete.
/api/backgrounds-gallery
Retrieves data from /api/backgrounds-gallery.
/api/backgrounds/{path:path}
Deletes a resource at /api/backgrounds/{path:path}.
/api/backgrounds/bulk-delete
Submits data or triggers an action at /api/backgrounds/bulk-delete.
/api/seasons-gallery
Retrieves data from /api/seasons-gallery.
/api/seasons/{path:path}
Deletes a resource at /api/seasons/{path:path}.
/api/seasons/bulk-delete
Submits data or triggers an action at /api/seasons/bulk-delete.
/api/titlecards-gallery
Retrieves data from /api/titlecards-gallery.
/api/titlecards/{path:path}
Deletes a resource at /api/titlecards/{path:path}.
/api/titlecards/bulk-delete
Submits data or triggers an action at /api/titlecards/bulk-delete.
/api/manual-assets/{path:path}
Deletes a resource at /api/manual-assets/{path:path}.
/api/manual-assets/bulk-delete
Submits data or triggers an action at /api/manual-assets/bulk-delete.
/api/backup-assets-gallery
Retrieves data from /api/backup-assets-gallery.
/api/backup-assets/{path:path}
Deletes a resource at /api/backup-assets/{path:path}.
/api/backup-assets/bulk-delete
Submits data or triggers an action at /api/backup-assets/bulk-delete.
/api/thumbnail
Retrieves data from /api/thumbnail.
/api/assets-folder-images/{image_type}/{folder_path:path}
Retrieves data from /api/assets-folder-images/{image_type}/{folder_path:path}.
/api/recent-assets
Retrieves data from /api/recent-assets.
/api/asset-type-lookup
Retrieves data from /api/asset-type-lookup.
/api/test-gallery
Retrieves data from /api/test-gallery.
/api/imagechoices
Retrieves data from /api/imagechoices.
/api/imagechoices
Submits data or triggers an action at /api/imagechoices.
/api/imagechoices/{title}
Retrieves data from /api/imagechoices/{title}.
/api/imagechoices/{record_id}
Updates a resource at /api/imagechoices/{record_id}.
/api/imagechoices/{record_id}
Deletes a resource at /api/imagechoices/{record_id}.
/api/imagechoices/{record_id}/find-asset
Retrieves data from /api/imagechoices/{record_id}/find-asset.
/api/imagechoices/import
Submits data or triggers an action at /api/imagechoices/import.
?? Assets Replacement & Operations
/api/assets/fetch-replacements
Submits data or triggers an action at /api/assets/fetch-replacements.
/api/assets/upload-replacement
Submits data or triggers an action at /api/assets/upload-replacement.
/api/assets/replace-from-url
Submits data or triggers an action at /api/assets/replace-from-url.
/api/assets/delete-asset/{record_id}
Deletes a resource at /api/assets/delete-asset/{record_id}.
/api/assets/bulk-delete-assets
Submits data or triggers an action at /api/assets/bulk-delete-assets.
/api/refresh-cache
Submits data or triggers an action at /api/refresh-cache.
/api/cache/status
Retrieves data from /api/cache/status.
?? Scheduler & Queue Management
/api/scheduler/config
Retrieves data from /api/scheduler/config.
/api/scheduler/config
Submits data or triggers an action at /api/scheduler/config.
/api/scheduler/schedule
Submits data or triggers an action at /api/scheduler/schedule.
/api/scheduler/schedule/{time}
Deletes a resource at /api/scheduler/schedule/{time}.
/api/scheduler/schedules
Deletes a resource at /api/scheduler/schedules.
/api/scheduler/enable
Submits data or triggers an action at /api/scheduler/enable.
/api/scheduler/disable
Submits data or triggers an action at /api/scheduler/disable.
/api/scheduler/restart
Submits data or triggers an action at /api/scheduler/restart.
/api/scheduler/run-now
Submits data or triggers an action at /api/scheduler/run-now.
/api/queue
Retrieves data from /api/queue.
/api/queue/{item_id}
Deletes a resource at /api/queue/{item_id}.
/api/queue/clear
Submits data or triggers an action at /api/queue/clear.
/api/queue/run
Submits data or triggers an action at /api/queue/run.
/api/queue/delete
Submits data or triggers an action at /api/queue/delete.
??? Fonts & Overlay Creator
/api/overlayfiles/upload
Submits data or triggers an action at /api/overlayfiles/upload.
/api/overlayfiles/{filename}
Deletes a resource at /api/overlayfiles/{filename}.
/api/overlayfiles/preview/{filename}
Retrieves data from /api/overlayfiles/preview/{filename}.
/api/fonts
Retrieves data from /api/fonts.
/api/fonts/upload
Submits data or triggers an action at /api/fonts/upload.
/api/fonts/{filename}
Deletes a resource at /api/fonts/{filename}.
/api/fonts/download/{filename}
Retrieves data from /api/fonts/download/{filename}.
/api/fonts/preview/{filename}
Retrieves data from /api/fonts/preview/{filename}.
/api/overlay-creator/preview
Submits data or triggers an action at /api/overlay-creator/preview.
/api/overlay-creator/save
Submits data or triggers an action at /api/overlay-creator/save.
?? Runtime History & Exports Additional
/api/runtime-stats
Retrieves data from /api/runtime-stats.
/api/runtime-summary
Retrieves data from /api/runtime-summary.
/api/runtime-history/cleanup
Deletes a resource at /api/runtime-history/cleanup.
/api/runtime-history/migrate
Submits data or triggers an action at /api/runtime-history/migrate.
/api/runtime-history/migration-status
Retrieves data from /api/runtime-history/migration-status.
/api/runtime-history/migrate-format
Submits data or triggers an action at /api/runtime-history/migrate-format.
/api/runtime-history/import-json
Submits data or triggers an action at /api/runtime-history/import-json.
/api/plex-export/library
Retrieves data from /api/plex-export/library.
/api/plex-export/episodes
Retrieves data from /api/plex-export/episodes.
/api/plex-export/import
Submits data or triggers an action at /api/plex-export/import.
/api/other-media-export/library
Retrieves data from /api/other-media-export/library.
/api/other-media-export/episodes
Retrieves data from /api/other-media-export/episodes.
/api/other-media-export/import
Submits data or triggers an action at /api/other-media-export/import.
?? Additional Configuration & Database
/api/config/backup
Submits data or triggers an action at /api/config/backup.
/api/config/export
Retrieves data from /api/config/export.
/api/config/import
Submits data or triggers an action at /api/config/import.
/api/custom-blueprints
Retrieves data from /api/custom-blueprints.
/api/custom-blueprints
Submits data or triggers an action at /api/custom-blueprints.
/api/config-db/status
Retrieves data from /api/config-db/status.
/api/config-db/section/{section}
Retrieves data from /api/config-db/section/{section}.
/api/config-db/value/{section}/{key}
Retrieves data from /api/config-db/value/{section}/{key}.
/api/config-db/sync
Submits data or triggers an action at /api/config-db/sync.
/api/config-db/export
Retrieves data from /api/config-db/export.
/api/webui-settings
Retrieves data from /api/webui-settings.
/api/webui-settings
Submits data or triggers an action at /api/webui-settings.
?? Logs, Diagnostics & Misc
/api/logs/ui
Submits data or triggers an action at /api/logs/ui.
/api/logs/ui/batch
Submits data or triggers an action at /api/logs/ui/batch.
/api/logs/{log_name}
Retrieves data from /api/logs/{log_name}.
/api/logs/{log_name}/exists
Retrieves data from /api/logs/{log_name}/exists.
/api/logs/ui/unified
Retrieves data from /api/logs/ui/unified.
/api/upload-diagnostics
Retrieves data from /api/upload-diagnostics.
/api/admin/support-zip
Submits data or triggers an action at /api/admin/support-zip.
/api/logs-watcher/status
Retrieves data from /api/logs-watcher/status.
/api/analytics/providers
Retrieves data from /api/analytics/providers.
/api/running-file
Deletes a resource at /api/running-file.
/api/version-ui
Retrieves data from /api/version-ui.
🎨 Creator Mode & Collections
GET /api/collections/presets
Get collection presets from the configuration database.
View Response
POST /api/collections/presets
Save collection presets to the configuration database.
POST /api/collections/save
Save the generated collection poster locally in the Assets directory.
POST /api/collections/upload-to-server
Upload a poster directly to the connected Media Server (Plex, Jellyfin, Emby).
POST /api/media-server/collections
Fetch collections directly from the configured media server. When querying Plex, collections are automatically enriched with local asset diff tracking (syncStatus: synced, update_available, missing_server, missing_local), local image URLs (local_asset_url), and disk paths (local_asset_path).
POST /api/plex/collections/push-item
Uploads a single local collection poster directly to Plex via PMS REST API and updates the local push cache database (database/plex_push_cache.db).
View Request
View Response
POST /api/plex/collections/push-batch
Concurrently uploads multiple out-of-sync collection posters to Plex. Uses a controlled concurrency semaphore to prevent overwhelming the Plex Media Server.
View Request
View Response
POST /api/plex/sync/run
Triggers an on-demand, lightweight background Plex artwork sync in Python (without invoking PowerShell). Scans for modified or missing assets according to specified library and asset types, pushes them to Plex, and writes execution logs to UILogs/PlexSync.log.
View Request
View Response
GET /api/studio-logos
Get the list of available studio logos from the GitHub repository, caching them locally.
GET /api/studio-logos/image/{filename}
Serve a specific studio logo image from the local cache.
POST /api/collections/search
Search TMDB for collections by name or ID (e.g. tmdb:12345).
POST /api/media/logos
Search TMDB for media (movies or TV shows) and retrieve their logos.
GET /api/proxy-image
Proxy external images (like TMDB/Fanart) to avoid CORS issues on the frontend canvas.
GET /api/assets/folders
Get folders from the assets directory. If library_name is provided, returns all media folders within that library; otherwise returns all top-level library directories.
View Response
GET /api/assets/skipped
Retrieve all skipped items detected during runs, including item title, library, skip reason, and resolution status.
POST /api/assets/skipped/refresh
Forces a re-scan of log files to refresh and update the list of skipped assets.
POST /api/assets/unskip
Marks a skipped item as unskipped or resolved so it can be reprocessed on the next run.
GET /api/proxy/poster
Proxies local or remote poster images to provide secure previews and avoid CORS restrictions.
POST /api/media-server/items
Fetch paginated items from a connected media server (Plex, Jellyfin, Emby) with clearLogo presence detection and proxied image URLs.
View Request
POST /api/media-server/check-logos
Batch checks a list of item IDs (rating_keys) against Plex to verify which items already have clearLogo artwork.
GET /api/media-server/image
Securely proxies image streams directly from Plex, Jellyfin, or Emby servers without exposing authentication tokens in frontend image URLs. Features persistent local disk caching (Cache/server_thumbs/) and public HTTP cache headers (Cache-Control: public, max-age=604800) to eliminate redundant server polling and optimize UI load speeds.
POST /api/media-server/upload-logo
Downloads a selected logo (from URL or data URI), applies Posterizarr metadata tags using Pillow/ImageMagick, and uploads it directly to the media server as a clearLogo.
🖼️ Media Server Collections & Artwork Push
POST /api/media-server/collections
Fetches collections from the media server with diff status detection (Plex) comparing local collection assets against server artwork. Returns syncStatus (synced, update_available, missing_server, missing_local), localPosterUrl, and server poster URLs.
POST /api/plex/collections/mark-synced
Marks a local collection poster as In-Sync with Plex in the persistent SQLite cache (database/plex_push_cache.db) without performing a re-upload, updating the status badge immediately.
POST /api/plex/collections/push-item
Pushes a local collection poster or backdrop directly to Plex Media Server via REST API (/library/metadata/{rating_key}/posters or /arts) and records the updated timestamp and size in the cache.
POST /api/plex/collections/push-batch
Batches multiple collection poster pushes to Plex with rate limiting and concurrency management.
POST /api/plex/sync/run
Triggers an on-demand background Plex Push Sync job across configured libraries and asset types.
🔌 WebSockets
GET /ws/events
Status probe endpoint for the real-time WebSocket event stream. Used by the Jellyfin and Emby plugin configuration pages to verify network reachability and validate the API key before establishing a persistent WebSocket connection.
Authentication:
- Requires X-API-Key: YOUR_KEY or Authorization: Bearer YOUR_KEY HTTP header.
View Response
WebSocket /ws/events
Real-time event bridge for media server integration plugins (Jellyfin and Emby). Dispatches instantaneous notifications whenever artwork is created, uploaded, replaced, or processed with overlays (both from background script runs and manual WebUI operations).
Authentication:
- Strictly via X-API-Key: YOUR_KEY or Authorization: Bearer YOUR_KEY HTTP headers during the WebSocket upgrade handshake (API keys in URL query parameters are rejected).
Supported Events:
- connected: Sent upon successful handshake connection.
- ping: Sent periodically to keep connections alive (client replies with pong).
- asset_updated: Dispatched when an asset is modified, newly created, or overlay processing completes.
View Event Payload (asset_updated)
{
"event": "asset_updated",
"library_name": "Movies",
"folder_name": "Inception (2010) [tmdb-27205]",
"asset_type": "poster",
"season_number": null,
"episode_number": null,
"title": "Inception",
"relative_path": "Movies/Inception (2010) [tmdb-27205]/poster.jpg",
"timestamp": "2026-09-10T07:12:00Z",
"libraryName": "Movies",
"folderName": "Inception (2010) [tmdb-27205]",
"assetType": "poster",
"seasonNumber": null,
"episodeNumber": null,
"relativePath": "Movies/Inception (2010) [tmdb-27205]/poster.jpg"
}
POST /api/internal/asset-event
Internal event ingestion endpoint for triggering real-time asset updates to connected media servers.
Authentication:
- Bypassed for loopback connections (127.0.0.1, ::1) or requires standard API key authentication.
View Request Body
WebSocket /ws/logs
Streams live execution logs line-by-line directly to the Web UI terminal viewer (LogViewer.jsx).
WebSocket /ws/status
Broadcasts live system metrics, background execution states, and queue progress to the UI.