Base URL
| Deployment | Base URL |
|---|---|
| Local | http://localhost:8080/api |
| Docker | http://{host}:8080/api |
Authentication
All endpoints require authentication via API key or JWT token.API Key
JWT Token
Obtain a token via login:Refresh Token
Channels
List Channels
Get Channel
Add Channel
Update Channel
Delete Channel
Check Channel Live Status
Stop Channel Recording
Channel Images
Get Channel Profile
Fetch Platform Images
Profile Image
Banner Image
Recordings
List Recordings
| Parameter | Description |
|---|---|
channel | Filter by channel ID |
platform | Filter by platform |
status | Filter by status |
from | Start date (ISO 8601) |
to | End date (ISO 8601) |
limit | Results per page (default: 50) |
offset | Pagination offset |
Get Recording
Delete Recording
| Parameter | Description |
|---|---|
delete_file | Also delete the file (default: true) |
Re-process Recording
Active Recordings
List Active
Stop Recording
Pause Recording
Resume Recording
Storage
Get Storage Info
Trigger Cleanup
Settings
Get Settings
Update Settings
System
Health Check
Logs
| Parameter | Description |
|---|---|
level | Filter by level (error, warn, info, debug) |
from | Start timestamp |
to | End timestamp |
limit | Results per page |
System Dependencies
Platform Authentication
Graceful Shutdown (Local-Only)
WebSocket
Connect for real-time updates:Event Types
| Event | Description |
|---|---|
connected | Initial connection with full state |
channel_status | Channel status changed |
channel_error | Channel encountered an error |
recording_started | New recording began |
segment_downloaded | Segment captured |
recording_ended | Recording finished |
processing_started | Post-processing began |
processing_progress | Processing progress update |
processing_complete | Processing finished successfully |
processing_failed | Processing encountered error |
schedule_skip | Stream skipped due to schedule |
filter_skip | Stream skipped due to content filters |
quota_skip | Stream skipped due to storage quota |
quota_status_changed | Channel quota status changed |
disk_warning | Disk space warning threshold exceeded |
config_reloaded | Configuration file reloaded |
platform_auth_updated | Platform auth connected or refreshed |
platform_auth_expired | Platform auth expired (refresh failed) |
Event Payload
Subscribe to Channels
Filter events by channel:Unsubscribe
Error Responses
All errors return consistent format:Error Codes
| Code | HTTP Status | Description |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid auth |
FORBIDDEN | 403 | Insufficient permissions |
NOT_FOUND | 404 | Resource not found |
VALIDATION_ERROR | 400 | Invalid request body |
CONFLICT | 409 | Resource already exists |
INTERNAL_ERROR | 500 | Server error |
Rate Limiting
| Endpoint | Limit |
|---|---|
| Auth endpoints | 10 req/min |
| Read endpoints | 100 req/min |
| Write endpoints | 30 req/min |
X-RateLimit-Limit: Max requestsX-RateLimit-Remaining: Remaining requestsX-RateLimit-Reset: Reset timestamp