Send Message
Public API

API Documentation

Free, unauthenticated access to OME Radio's live data - now playing, recently played tracks, and more. No API key required for read endpoints.

Base URL https://omeradio.com
JSON No auth for GET

Endpoint 01

Full Station Data

GET /api/ome No authentication

Returns full radio station data - now playing song, listener count, presenter info, and the 50 most recently played tracks.

Response

{
  "success": true,
  "nowPlaying": {
    "song": {
      "id":       "abc123",
      "title":    "Song Title",
      "artist":   "Artist Name",
      "album":    "Album Name",
      "art":      "https://...",
      "likes":    12,
      "dislikes": 1,
      "favourites": 3,
      "db_id":    42,
      "user_liked":      false,
      "user_disliked":   false,
      "user_favourited": false
    },
    "listeners": 24,
    "live": {
      "is_live":      true,
      "streamer_name": "DJ Name"
    },
    "onair": {
      "name": "DJ Name",
      "slug": "dj-name",
      "avatar": "https://..."
    }
  },
  "recentlyPlayed": [ ... ],
  "cached_at": "2026-03-06T12:00:00+00:00"
}

Endpoint 02

Now Playing

GET /api/ome/now-playing No authentication

Returns the currently playing song and live presenter information only.

Response

{
  "song": {
    "id":     "abc123",
    "title":  "Song Title",
    "artist": "Artist Name",
    "album":  "Album Name",
    "art":    "https://..."
  },
  "listeners": 24,
  "live": {
    "is_live":       true,
    "streamer_name": "DJ Name"
  },
  "onair": {
    "name":   "DJ Name",
    "slug":   "dj-name",
    "avatar": "https://..."
  }
}

Endpoint 03

Recently Played

GET /api/ome/recently-played No authentication

Returns the 50 most recently played songs ordered by most recent first.

Response

[
  {
    "id":          42,
    "title":       "Song Title",
    "artist":      "Artist Name",
    "album":       "Album Name",
    "album_art":   "https://...",
    "spotify_url": "https://open.spotify.com/track/...",
    "likes":       12,
    "played_at":   1741262400
  },
  ...
]

Endpoint 04

Bot Song Request

POST /api/bot/request Bot secret required

Submit a song request or shoutout on behalf of a Discord user. Used by the OME Radio Discord bot. Requires the X-Bot-Secret header.

Request Headers

X-Bot-Secret Required. Bot authentication secret.
Content-Type application/json

Request Body

type required
request or shoutout
song_title
Required if type=request. Max 200 chars.
artist
Optional. Max 200 chars.
name
Display name of the user. Max 100 chars.
message
Optional message. Max 500 chars.
discord_user_id
Used for per-user rate limiting (3/hr).

Success Response 200

{
  "success": true,
  "message": "๐ŸŽต Request sent! The DJ will see it."
}

Error Responses

// 401 Unauthorized
{ "error": "Unauthorized" }

// 429 Too Many Requests
{ "error": "You've sent too many requests." }

// 422 Validation Error
{ "message": "...", "errors": { ... } }

Endpoint 05

Twitch Chatbot

GET /api/public/v1/messages/twitch Twitch chatbot

Accepts a song request from a Twitch chatbot command and adds it to the live request queue. Returns a plain-text confirmation that the chatbot can relay back to chat. Rate-limited to 3 requests per user per hour.

Query Parameters

name
Twitch username of the viewer.
user_id
Twitch user ID. Used for per-user rate limiting.
message required
The song request. Format: Artist - Song Title
type
request (default) or shoutout.
referrer_channel
Your Twitch channel name. Shown as a source badge on the dashboard.

Chatbot Command Strings

NightBot

$(urlfetch https://omeradio.com/api/public/v1/messages/twitch?name=$(querystring $(user))&user_id=$(querystring $(userid))&message=$(querystring $(query))&type=Request&referrer_channel=$(querystring $(channel)))

StreamElements

\$(customapi https://omeradio.com/api/public/v1/messages/twitch?name=\${sender}&message=\${1:}&type=Request&referrer_channel=\${channel})

Streamlabs Chatbot

\$readapi(https://omeradio.com/api/public/v1/messages/twitch?name=\$username&user_id=\$userid&message=\$msg&type=Request&referrer_channel=\$mychannel)
Listeners type !request Artist - Song Title. The dash separator is automatically parsed into separate artist and song title fields. If no dash is present, the whole message is used as the song title.

Success Response 200

๐ŸŽต Request sent! The DJ will see it.

Error Responses 200

// No message provided
โŒ Please include a song! Usage: !request Artist - Song Title

// Rate limited
โŒ You've sent too many requests recently. Please wait a bit!

// Unresolved bot variables
โŒ Bot command variables were not resolved. Check your chatbot command syntax.

Endpoint 06

Kick Chatbot

GET /api/public/v1/messages/kick Kick chatbot

Identical to the Twitch endpoint but for Kick streamers. Accepts a song request from a Kick chatbot command and adds it to the live request queue. Rate-limited to 3 requests per user per hour.

Chatbot Command Strings

NightBot

$(urlfetch https://omeradio.com/api/public/v1/messages/kick?name=$(querystring $(user))&user_id=$(querystring $(userid))&message=$(querystring $(query))&type=Request&referrer_channel=$(querystring $(channel)))

StreamElements

\$(customapi https://omeradio.com/api/public/v1/messages/kick?name=\${sender}&message=\${1:}&type=Request&referrer_channel=\${channel})

Streamlabs Chatbot

\$readapi(https://omeradio.com/api/public/v1/messages/kick?name=\$username&user_id=\$userid&message=\$msg&type=Request&referrer_channel=\$mychannel)

Success Response 200

๐ŸŽต Request sent! The DJ will see it.

Error Responses 200

โŒ Please include a song! Usage: !request Song Title - Artist
โŒ You've sent too many requests recently. Please wait a bit!
โŒ Bot command variables were not resolved. Check your chatbot command syntax.

Endpoint 07

Streamer Overlay

HTML /overlay OBS / Streamlabs browser source

A ready-made now-playing overlay for streamers. Add it as a Browser Source in OBS or Streamlabs - set the background to transparent. It polls the OME Radio API every 15 seconds and automatically shows the current track and presenter.

Preview

Live Preview

OBS Setup

  1. 1 In OBS, click + under Sources and choose Browser.
  2. 2 Set the URL to https://omeradio.com/overlay
  3. 3 Set width to 420 and height to 150.
  4. 4 Check Shutdown source when not visible and tick Refresh browser when scene becomes active.
  5. 5 Right-click the source โ†’ Filters โ†’ add a Chroma Key or use the built-in transparent background option.

Direct URL

https://omeradio.com/overlay

Features

  • Live now-playing with album art
  • Alternates between current & last played track
  • Presenter / DJ name display
  • Marquee scroll for long titles
  • Transparent background - no chroma key needed
  • Auto-refreshes every 15 seconds

Fair Use

These endpoints are provided for personal projects and integrations relating to OME Radio. Please don't hammer the API - the GET endpoints are cached on the server. If you're building something cool, feel free to reach out!