cast.onion API
The cast.onion API provides access to stations, streaming, applications, and administrative tools.
All routes are prefixed with /v1/.
Session & Connection
GET /v1/ws— WebSocket connection, returns a session IDGET /v1/docs— Returns this documentation page
Stations
GET /v1/stations— List all active stations (requires session)GET /v1/stations/:id— Get station by ID (requires session)
Applications
POST /v1/apply— Submit a hosting application (requires session)GET /v1/apply/:id— Check application status (requires session)
Station Owner
GET /v1/owner/dashboard— Get station info (requires session + X-Access-Token)PATCH /v1/owner/station— Update station details (requires session + X-Access-Token)
Streaming
POST /v1/broadcast/:station_id— Stream audio to a station (requires X-Station-Key)GET /v1/listen/:station_id— Listen to live audio stream (audio/ogg)GET /v1/status/:station_id— Check if a station is live
Guest Rooms
POST /v1/room/create— Create an invite room (requires session + X-Access-Token)POST /v1/room/join/:code— Join a room using an invite codeGET /v1/room/:room_id— Get room info and guest listPOST /v1/room/:room_id/stream— Guest audio stream (requires X-Guest-ID)POST /v1/room/:room_id/mute/:guest_id— Host mutes a guest (requires X-Access-Token)POST /v1/room/:room_id/selfmute— Guest mutes themselves (requires X-Guest-ID)
Admin
All admin routes require X-Admin-Token.
GET /v1/admin/applications— List pending applicationsPOST /v1/admin/applications/:id/approve— Approve applicationPOST /v1/admin/applications/:id/deny— Deny applicationPOST /v1/admin/stations/:id/suspend— Suspend stationPOST /v1/admin/stations/:id/revoke— Revoke stationPOST /v1/admin/stations/:id/unsuspend— Unsuspend station
GraphQL
POST /v1/graphql— GraphQL endpoint for stations, directory, and applications
CDN
GET localhost:1050/:path— Static file server (cdn-files directory)