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 responses No auth required for GET
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"
}
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://..."
  }
}
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
  },
  ...
]
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": { ... } }
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!