Web Controller API
The Web Controller provides a complete REST API and WebSocket interface for remote control of your Mixlar device from web browsers or mobile apps.Base URL
Authentication
The Web Controller supports optional password protection.Session-Based Authentication
When authentication is enabled:- Login Required: All endpoints require valid session
- Login Endpoint:
POST /api/auth/login - Session Cookie:
mixlar_session(HttpOnly) - Session Timeout: Configurable (default: 24 hours)
Login Flow
API Endpoints
Authentication
Check Auth Status
200 OK
Login
200 OK
401 Unauthorized
Logout
200 OK
System Status
Get Overall Status
200 OK
Sliders
Get All Sliders
200 OK
Set Slider Value
index(integer): Slider index (1-4)
value: 0-100 (integer)
200 OK
Get Slider Assignment
200 OK
system_default_output- System output volumesystem_default_input- Microphone volumeapp- Specific application(s)unassigned- No assignment
Set Slider Assignment
200 OK
Get Available Audio Sessions
200 OK
Mute Controls
Get All Mute States
200 OK
Toggle Individual Mute
index(integer): Mute button index (1-4)
200 OK
Toggle Master Mute
200 OK
Master Volume
Get Master Volume
200 OK
Set Master Volume
value: 0-100 (integer)
200 OK
Macros
Get All Macros
200 OK
Get Macro Page Info
200 OK
Change Macro Page
403 Forbidden. Use the desktop app or hardware to switch pages.
Response: 403 Forbidden
Trigger Macro
index(integer): Macro index (0-8)page(integer, optional): Page index (0-3), defaults to current page
200 OK
Smart Home
Get All Devices
200 OK
Toggle Device
200 OK
Set Light Brightness
value: 0-100 (integer)
200 OK
OBS Studio
Get Scenes
200 OK
400 Bad Request
Switch Scene
200 OK
Get Sources
200 OK
Toggle Source Visibility
200 OK
Audio Profiles
Get All Profiles
200 OK
Get Current Profile
200 OK
Load Profile
200 OK
404 Not Found
WebSocket API
Real-time bidirectional communication for live updates.Connection
Events (Server → Client)
initial_state
Sent when client connects or requests state.slider_change
Emitted when any slider value changes.assignment_change
Emitted when slider assignment changes.mute_change
Emitted when mute state changes.volume_change
Emitted when master volume changes.profile_change
Emitted when audio profile changes.device_status
Emitted when device connection status changes.Events (Client → Server)
get_state
Request full state update.Complete Example
React Application
Vue.js Application
Mobile App (Flutter)
Security
HTTPS Setup
For secure remote access, enable HTTPS with Tailscale certificates:- Install Tailscale
- Get certificates:
tailscale cert yourhostname.tailnet.ts.net - Place in:
main/certs/folder - Restart plugin
https://yourhostname.tailnet.ts.net:5000
Authentication
Enable password protection in Web Controller settings:CORS
CORS is enabled by default for all origins (*). To restrict:
Edit web_server.py:
Documentation Version: 1.0 Last Updated: 2025-12-10 Default Port: 5000