Skip to content
MZAP
Search
Ctrl
K
Cancel
Website
Select theme
Dark
Light
Auto
Getting Started
Installation
Quick Start
System Requirements
Concepts
Zones and Players
Matrix Routing
Audio Devices
Workspaces
EQ & Compressor Presets
Privacy & Data Collection
User Guide
Media Library
Playlists
Jingles
Scheduler
EQ & Compressor
Input Capture
Settings
Users & Access
Overview
Roles and Permissions
Managing Users
Player and Zone Assignments
API Keys
Lock Workspace
MCP Integration
MCP Overview
MCP Tools Reference
MCP Examples
API Reference
Overview
MZAP.Api
Returns application branding constants
Health
API health check
Auth
Get authentication status
Login with username and password
Logout and invalidate session
Lock the UI (admin only, invalidates current session)
Users
List all users (admin only)
Create a new user (admin only)
Update user role/enabled state (admin only)
Delete a user (admin only, can't delete last admin)
Change a user's password (admin or self)
Regenerate API key for a user (admin only)
Get the full API key for a user (admin only)
Devices
Initialize audio engine
Get all available audio devices
Get a specific device by ID
Refresh audio devices (hot-plug support)
Check if audio engine is initialized
Diagnostic: probe BASS live state of every output device (WASAPI + ASIO)
Toggle device favorite status
DEPRECATED — replaced by user-defined zones (POST/PUT/DELETE /api/zones). Returns 410.
Input Devices
Get all audio input devices
Toggle input device favorite status
Audio Processes
List processes targetable by ProcessLoopback players
Zones
Get all zones from all devices
Create a user-defined zone (device, channel, mono/stereo)
Get a specific zone by ID
Edit a zone's device, channel, layout, or name
Delete a zone and detach it from all players
Get all zones for a specific device
Get free/used channels for a device to drive the create-zone form
Create zones for every free channel of a device (mono per channel or stereo per pair)
Rename a zone
Set volume for a specific zone
Set mute state for a specific zone
Set equalizer settings for a specific zone
Set compressor settings for a specific zone
Toggle zone favorite status
Setup
Whether the first-run setup choice has been made
Complete first-run setup: create demo zones/players, or start empty
Clear the current workspace and build a fresh demo workspace (all zones, input/loopback players, two demo radio players)
Players
Get all players
Create a new player
Rename a player
Delete a player
Start playback
Pause playback
Stop playback
Seek to a specific position
Set player volume
Set player mute state
Load a file or stream URL into the player
Attach player to zones
Detach player from zones
Skip to next track in playlist
Go to previous track in playlist
Jump to a specific track in playlist
Assign a playlist to the player
Ensure the player has an editable working playlist; forks a saved playlist to a transient copy so saved playlists are never mutated from the player queue
Re-point an Input/Loopback player to a different input device + channel
Toggle player favorite status
Set player PFL (Pre-Fader Listen) state
Set player crossfade duration
Set whether the stream URL is hidden in the UI
Attach a player to a target process for per-application loopback capture
Detach a ProcessLoopback player from its target process
Playlists
Get all playlists
Create a new playlist
Get a playlist by ID
Update/rename a playlist
Delete a playlist
Import playlist from M3U or PLS file
Create one playlist per subfolder under a root path; sync existing on re-run
Export playlist to file
Add tracks to playlist
Remove tracks from playlist
Set playback mode
Reorder tracks in playlist
Duplicate a playlist
Verify playlist track file paths
Toggle playlist favorite status
Promote a transient (per-player working) playlist into a normal library playlist
Matrix
Get the complete routing matrix
Route a player to a zone
Unroute a player from a zone
Settings
Get application settings
Update application settings
Open the log files folder in the system file explorer
Get LAN addresses, ports, and restart-required state for local-network exposure
Streaming
Subscribe to all entity changes and state updates via Server-Sent Events (SSE)
Subscribe to VU meter level updates via Server-Sent Events (SSE)
Subscribe to events for a specific player via Server-Sent Events (SSE)
Jingles
Get all jingles
Create a new jingle (file-based or TTS)
Update jingle settings
Delete a jingle
Play a jingle on target players or zones
Stop a playing jingle
TTS
List TTS providers and their availability
List voices for a TTS provider
Status of cloud TTS configuration (license + key presence)
Store the Azure Speech API key + region
Remove the stored Azure Speech key
Store the ElevenLabs API key
Remove the stored ElevenLabs key
Verify a candidate cloud TTS key without storing it
Synthesize a one-off WAV preview and return the audio bytes (audio/wav)
Presets
Get all EQ presets
Create a new EQ preset
Update an EQ preset
Delete an EQ preset
Get all compressor presets
Create a new compressor preset
Update a compressor preset
Delete a compressor preset
Scheduler
Get all scheduled tasks
Create a new scheduled task
Get a scheduled task by ID
Update an existing scheduled task
Delete a scheduled task
Duplicate an existing scheduled task (clone is created disabled)
Enable a scheduled task
Disable a scheduled task
Manually trigger a scheduled task
Get scheduler operational status
Get task execution log
Prayer
Compute prayer times for today at the configured venue location
Compute prayer times for a specific date (YYYY-MM-DD) at the configured venue location
Workspace
Get current workspace metadata
Create a new empty workspace
Save workspace to a file
Load workspace from a file
Check for device mismatches before loading
Update window position and size
Update FlexLayout state
Update UI state
Mark workspace as having unsaved changes
Get and clear the last-restore device mismatch (reported once per restore)
Get user-to-resource assignments for current workspace (admin only)
Update user-to-resource assignments (admin only)
Library
Search media files in the library
Count media files matching the given filters (no row payload)
Get a media file by ID
Get library statistics
Get all library folders
Add a folder to the library
Remove a folder and its files from the library
Scan a specific library folder (non-blocking; returns scanId).
Scan all library folders (non-blocking; returns scanId).
List currently queued / running library scans.
Start a library scan (folder or all). Returns 202 with the scanId.
Cancel a running library scan by id.
License
Gets the current license status
Activates a license key on this machine
Forces a license re-check against the server
Deactivates the license on this machine
Starts a trial license for this machine
Generates a .req file content for offline activation
Loads a .lic file for offline activation
Update
Get current update status
Force an immediate update check
Download the latest installer and launch it
Licensing
License Activation
Offline Activation
Transferring to Another PC
License Troubleshooting
Troubleshooting
Logs
Changelog
Changelog
Website
Select theme
Dark
Light
Auto
Mark workspace as having unsaved changes
POST
/api/workspace/mark-dirty
Responses
Section titled “ Responses ”
200
Section titled “200 ”
OK