Skip to main content
Glama
08-radio.md4.11 kB
# Internet Radio API ## Overview Manage internet radio stations for streaming live audio from external sources. ## Base URL: `/api/radio` ### GET /api/radio List all internet radio stations. **Response (200 OK):** ```json [ { "id": "string", "streamUrl": "string", // Radio stream URL "name": "string", // Station name "homePageUrl": "string", // Optional: Station website "createdAt": "ISO-8601", "updatedAt": "ISO-8601" } ] ``` ### GET /api/radio/{id} Get a specific radio station by ID. **Response (200 OK):** Single radio station object ### POST /api/radio Create a new radio station. **Request Body:** ```json { "name": "string (required)", "streamUrl": "string (required)", "homePageUrl": "string" } ``` **Response (201 Created):** Created radio station object **Validation:** - `streamUrl` must be valid HTTP/HTTPS URL - `name` cannot be empty - Duplicate stream URLs may be rejected ### PUT /api/radio/{id} Update an existing radio station. **Request Body:** ```json { "name": "string", "streamUrl": "string", "homePageUrl": "string" } ``` **Response (200 OK):** Updated radio station object ### DELETE /api/radio/{id} Delete a radio station. **Response (200 OK):** ```json { "id": "string" } ``` ## Stream URL Requirements ### Supported Protocols - HTTP/HTTPS direct streams - M3U/M3U8 playlists - PLS playlists ### Supported Formats - MP3 - AAC - OGG - FLAC (depending on server configuration) ### Examples ``` Direct Stream: https://stream.example.com:8000/live.mp3 M3U Playlist: https://radio.example.com/playlist.m3u8 PLS Playlist: https://station.example.com/stream.pls ``` ## Usage Patterns ### Adding Popular Stations ```javascript const stations = [ { name: "BBC Radio 1", streamUrl: "http://stream.live.vc.bbcmedia.co.uk/bbc_radio_one", homePageUrl: "https://www.bbc.co.uk/radio1" }, { name: "Classical FM", streamUrl: "https://media-ssl.musicradio.com/ClassicFM", homePageUrl: "https://www.classicfm.com" } ] for (const station of stations) { await fetch('/api/radio', { method: 'POST', body: JSON.stringify(station) }) } ``` ### Stream Validation ```javascript // Test stream before adding const testStream = async (url) => { try { const response = await fetch(url, { method: 'HEAD' }) return response.ok } catch { return false } } const streamUrl = "https://example.com/stream.mp3" if (await testStream(streamUrl)) { // Add to Navidrome } ``` ## Integration with Players ### Web Player Radio stations appear in station list and can be played like regular tracks. ### Subsonic Clients Accessible via Subsonic API `getInternetRadioStations` endpoint. ### Streaming URLs Radio stations use their original stream URLs - no transcoding applied. ## Server Requirements ### Network Access Server must be able to reach internet radio streams: - Outbound HTTP/HTTPS access - DNS resolution for stream domains - Firewall rules allowing radio streaming ### Resource Usage - Radio streams don't count against storage quotas - Bandwidth usage depends on concurrent listeners - No local caching of radio content ## Common Issues ### Stream Reliability - Radio streams may go offline temporarily - URLs may change without notice - Use reliable, well-known stations ### Format Compatibility - Some exotic formats may not work - Browser compatibility varies - Test with target client applications ### Legal Considerations - Respect radio station terms of service - Some streams may have geographic restrictions - Commercial use may require licensing ## Import/Export ### Export Stations ```javascript const stations = await fetch('/api/radio').then(r => r.json()) const exported = { version: 1, stations: stations.map(s => ({ name: s.name, streamUrl: s.streamUrl, homePageUrl: s.homePageUrl })) } ``` ### Import from M3U Parse M3U files containing radio station URLs: ``` #EXTM3U #EXTINF:-1,BBC Radio 1 http://stream.live.vc.bbcmedia.co.uk/bbc_radio_one #EXTINF:-1,Classical FM https://media-ssl.musicradio.com/ClassicFM ```

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Blakeem/Navidrome-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server