๐Ÿš€ Typical Media API

The most advanced radio streaming API platform. Access real-time station data, news content, contests, and more with enterprise-grade reliability and performance.

Typical Media Group Logo

๐ŸŒŸ API Overview

Welcome to the Typical Media API documentation. This comprehensive guide covers all endpoints currently powering our radio streaming web application, including real-time station data, news content, AuroraTV programming, contests, and advertising systems.

Station Information & Directory
GET
Returns comprehensive information about all available radio stations, including names, metadata, streaming URLs, and current operational status. Essential for building station directories and selection interfaces.
GET /info
GET https://api.typicalmedia.net/api/v1/info
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/info
Click "Try Now" to see live station directory data...

๐Ÿ“ป Radio Streaming API

Real-time radio station data including now playing information, recently played tracks, and comprehensive station metadata. Optimized for live streaming applications with sub-second latency.

All Stations Now Playing
GET
Retrieves current now playing information for all active radio stations in a single request. Perfect for dashboard views and multi-station displays with real-time track updates.
GET /allnowplaying
GET https://api.typicalmedia.net/api/v1/allnowplaying
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/allnowplaying
Click "Try Now" to see all stations now playing...
Single Station Now Playing
GET
Get detailed now playing information for a specific radio station including track metadata, artwork, artist information, and timing data. Replace {station} with the actual station ID from the API.
GET /{station}/nowplaying
GET https://api.typicalmedia.net/api/v1/{station}/nowplaying
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/heat106/nowplaying
Click "Try Now" to see Heat 106 now playing...
Recently Played Tracks
GET
Historical track data for a specific station with pagination support. Replace {station} with the actual station ID from the API. Includes track history, play timestamps, and metadata.
GET /{station}/recentlyplayed
GET https://api.typicalmedia.net/api/v1/{station}/recentlyplayed?limit=10
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/heat106/recentlyplayed?limit=10
Click "Try Now" to see Heat 106 recent tracks...
Station Statistics (Combined)
GET
Comprehensive station data combining now playing, recently played tracks, and station information in a single optimized response. Perfect for dashboard views and station overview pages. Replace {station} with the actual station ID (e.g., heat106).

Query Parameters:
  • limit - Number of recent tracks to return (default: 10, max: 50)
GET /{station}/stats
GET https://api.typicalmedia.net/api/v1/{station}/stats?limit=10
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/heat106/stats?limit=10
Click "Try Now" to see Heat 106 complete stats...

๐Ÿ“ฐ News Content API

Dynamic news content management system with categorization, authoring, and content delivery. Powers our newsroom interface with rich media support and real-time updates.

News Articles
GET
Retrieves paginated list of news articles with comprehensive metadata, author information, categories, and publication timestamps. Supports filtering and sorting options.
GET /news
GET https://api.typicalmedia.net/api/v1/news?page=1&limit=10
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/news?page=1&limit=10
Click "Try Now" to see latest news articles...
News Categories
GET
Returns all available news categories with article counts, descriptions, and hierarchical organization. Essential for building navigation menus and content filtering interfaces.
GET /news/categories
GET https://api.typicalmedia.net/api/v1/news/categories
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/news/categories
Click "Try Now" to see news categories...

๐Ÿ“บ AuroraTV Programming API

Comprehensive television content management system including press releases, broadcast schedules, show information, and social media integration for our AuroraTV platform.

Press Releases
GET
Access official press releases, announcements, and corporate communications from AuroraTV with full rich media support and publication management.
GET /auroratv/press
GET https://api.typicalmedia.net/api/v1/auroratv/press
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/auroratv/press
Click "Try Now" to see AuroraTV press releases...
Broadcast Schedule
GET
Real-time broadcast scheduling information including live shows, upcoming programming, and detailed broadcast metadata with timing and presenter information.
GET /auroratv/broadcasts
GET https://api.typicalmedia.net/api/v1/auroratv/broadcasts
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/auroratv/broadcasts
Click "Try Now" to see broadcast schedule...

๐ŸŽ™๏ธ Podcasts API

Comprehensive podcast management system with show information, episode listings, station relationships, and discovery features. Powers our podcast platform with rich metadata and content delivery.

Podcast Shows
GET
Retrieves all podcast shows with comprehensive metadata including episode counts, station associations, categories, and authorship information. Supports filtering by ID and category.
GET /podcasts/shows
GET https://api.typicalmedia.net/api/v1/podcasts/shows
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/shows
Click "Try Now" to see all podcast shows...
Podcast Episodes
GET
Get podcast episodes with full details including audio URLs, duration, descriptions, and show information. Supports filtering by show ID, show name, or both. Perfect for building podcast pages and episode lists.

Query Parameters:
  • id - Get specific episode by ID
  • show_id - Filter episodes by show ID (e.g., ?show_id=21)
  • show_title or show_name - Filter by podcast name (e.g., ?show_title=The Hashtag Podcast)
  • limit - Limit results (1-100)
  • offset - Pagination offset

๐Ÿ’ก Pro Tip: Use show_title when you know the podcast name but not the ID. The search is case-insensitive.
GET /podcasts/episodes (by ID)
GET https://api.typicalmedia.net/api/v1/podcasts/episodes?show_id=21&limit=20
GET /podcasts/episodes (by name)
GET https://api.typicalmedia.net/api/v1/podcasts/episodes?show_title=The%20Hashtag%20Podcast&limit=20
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/episodes?show_id=21&limit=20
Click "Try Now" to see podcast episodes...
Podcasts by Station
GET
Get podcasts grouped by radio station, perfect for displaying station-specific podcast content on station micropages. Query by station slug or ID.
GET /podcasts/by-station
GET https://api.typicalmedia.net/api/v1/podcasts/by-station
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/by-station
Click "Try Now" to see podcasts by station...
Latest Episodes
GET
Get the most recent podcast episodes across all shows, perfect for homepage widgets and discovery features. Limited to 50 episodes.
GET /podcasts/latest
GET https://api.typicalmedia.net/api/v1/podcasts/latest?limit=10
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/latest?limit=10
Click "Try Now" to see latest episodes...
Station-Podcast Relationships
GET
Get bidirectional mapping of station-podcast relationships. Returns both stations with their podcasts and podcasts with their associated stations.
GET /podcasts/linked
GET https://api.typicalmedia.net/api/v1/podcasts/linked
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/linked
Click "Try Now" to see linked podcasts...
Podcast Statistics
GET
Get comprehensive podcast platform statistics including total shows, episodes, duration metrics, and category breakdowns.
GET /podcasts/stats
GET https://api.typicalmedia.net/api/v1/podcasts/stats
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/podcasts/stats
Click "Try Now" to see podcast stats...

๐Ÿ† Contest & Engagement API

Interactive contest management system with participant tracking, prize management, and engagement analytics. Powers our audience interaction features and promotional campaigns.

Active Contests
GET
Returns all active contests with detailed information including rules, prizes, entry requirements, and participation statistics. Essential for contest discovery and engagement interfaces.
GET /contests
GET https://api.typicalmedia.net/api/v1/contests
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/contests
Click "Try Now" to see active contests...

๐Ÿ“… Events, Announcements & Partners API

Manage community events, announcements, and partner relationships. Powers our featured content system and community engagement features.

Events
GET
Access community events, concerts, broadcasts, and activities with comprehensive details including dates, locations, lineups, and social media links.

Query Parameters:
  • action=all - Get all events
  • action=upcoming - Get upcoming events only
  • action=featured - Get featured event (homepage hero)
  • action=by_station&station_id={id} - Events by station
  • action=by_id&id={id} - Get specific event
GET /events
GET https://api.typicalmedia.net/api/v1/events?action=upcoming
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/events?action=upcoming
Click "Try Now" to see upcoming events...
Announcements
GET
Get important announcements and notifications with priority levels, types, and target audiences.

Query Parameters:
  • action=active - Get active announcements (default)
  • action=featured - Get featured announcement
  • action=urgent - Get urgent announcements only
  • action=by_station&station_id={id} - Announcements by station
GET /announcements
GET https://api.typicalmedia.net/api/v1/announcements?action=active
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/announcements?action=active
Click "Try Now" to see active announcements...
Partners
GET
Access partner information including sponsors, media partners, and affiliates with logos and website URLs.

Query Parameters:
  • action=active - Get active partners (default)
  • action=featured - Get featured partners
  • action=by_type&type={sponsor|media|community|affiliate} - Partners by type
GET /partners
GET https://api.typicalmedia.net/api/v1/partners?action=active
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/partners?action=active
Click "Try Now" to see active partners...

๐Ÿ‘ค User & Authentication API

Comprehensive user management system with Supabase authentication, profiles, presets, passkeys, and personalization features. All user data is stored in Supabase with Row Level Security (RLS) policies.

๐Ÿ” Supabase Authentication

All user endpoints require Supabase authentication. The system uses:

  • Supabase Auth: Email/password authentication with JWT tokens
  • RLS Policies: Row-level security ensures users can only access their own data
  • OAuth Support: Google, Discord, GitHub, and other providers
  • WebAuthn/Passkeys: Passwordless authentication support
Database Tables:
users - Main user profiles with display names, bios, avatars
user_presets - Saved station/podcast presets
user_passkeys - WebAuthn credentials
user_top_songs - Favorite songs lists
song_requests - Song request submissions
podcast_assignments - User podcast host assignments
station_assignments - User station DJ/host assignments
User Profile
GET POST
Manage user profiles including display name, bio, avatar, social links, and preferences. Supports profile updates and public profile viewing.

Requires: Authentication token (Authorization header)
GET/POST /user/profile
GET https://api.typicalmedia.net/api/v1/user/profile
Station Presets
GET POST
Manage user's favorite station presets. Save and retrieve custom station collections with ordering and organization.

Requires: Authentication token
GET/POST /user/presets
GET https://api.typicalmedia.net/api/v1/user/presets
Passkey Authentication
GET POST
WebAuthn passkey management for passwordless authentication. Register, list, and delete passkeys for secure biometric login.

Requires: Authentication token
GET/POST /user/passkeys
GET https://api.typicalmedia.net/api/v1/user/passkeys
Top Songs
GET POST
Manage user's top/favorite songs list. Users can curate their personal music collection and share favorites.

Requires: Authentication token
GET/POST /user/top_songs
GET https://api.typicalmedia.net/api/v1/user/top_songs
Song Requests
GET POST
Submit and manage song requests for radio stations. Users can request songs to be played on air.

Requires: Authentication token
GET/POST /user/song_requests
GET https://api.typicalmedia.net/api/v1/user/song_requests
Avatar Upload
POST
Upload and manage user profile avatars. Supports image validation, automatic resizing, and storage.

Requires: Authentication token
Content-Type: multipart/form-data
POST /user/upload_avatar
POST https://api.typicalmedia.net/api/v1/user/upload_avatar
User Registration
POST
Register new user accounts with email verification and profile setup. Creates user in Supabase authentication system.

Body Parameters:
  • email - User email address (required)
  • password - Account password (required)
  • display_name - Display name (optional)
POST /user/register
POST https://api.typicalmedia.net/api/v1/user/register

๐ŸŽต On-Demand Streaming API

Stream music tracks, videos, and exclusive content on-demand. Access our extensive library of entertainment with full playback controls and metadata.

Music Library
GET
Access the complete on-demand music library with tracks, albums, artists, genres, and streaming URLs. Includes metadata like duration, year, artwork, and more.

Response includes proxied URLs:
  • imageUrl - /api/v1/on-demand/music/image/{id}
  • streamUrl - /api/v1/on-demand/music/stream/{id}

Query Parameters:
  • genre - Filter by genre (optional)
  • artist - Filter by artist (optional)
  • search - Search tracks, artists, albums (optional)
  • limit - Number of results (default: 50)
GET /on-demand/music
GET https://api.typicalmedia.net/api/v1/on-demand/music
๐Ÿ”ด Live Example
Click "Try Now" to fetch live data

๐Ÿ“ข Advertising & Monetization API

Comprehensive advertising platform with targeted ad delivery, banner management, and performance analytics. Supports multiple ad formats and real-time campaign optimization.

Advertisement Content
GET
Delivers targeted advertisement content including audio spots, display ads, and promotional content with audience targeting and performance tracking capabilities.
GET /ads
GET https://api.typicalmedia.net/api/v1/ads
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/ads
Click "Try Now" to see current ads...
Banner Content
GET
Returns promotional banners and visual advertisements displayed across the platform including homepage banners, sidebar promotions, and interstitial content.
GET /banners
GET https://api.typicalmedia.net/api/v1/banners
๐Ÿ”ด Live Example
GET https://api.typicalmedia.net/api/v1/banners
Click "Try Now" to see banner content...

๐Ÿงช Interactive API Sandbox

Test all API endpoints directly from your browser with real-time responses. Perfect for development, testing, and API exploration.

Advanced API Testing Console

Select an endpoint to see the URL
๐Ÿ“ Note: For endpoints marked "requires station", you must select a station from the dropdown above.
Configure your request above and click "Execute Request" to see live API responses with full JSON data, headers, and timing information.

๐Ÿ’ก Integration Examples

Ready-to-use code examples for popular programming languages and frameworks.

JavaScript (Fetch API)
Modern JavaScript Example
// Get all now playing data
async function getAllNowPlaying() {
    try {
        const response = await fetch('https://api.typicalmedia.net/api/v1/allnowplaying');
        const data = await response.json();
        console.log(data);
        return data;
    } catch (error) {
        console.error('API Error:', error);
    }
}

// Get specific station now playing
async function getStationNowPlaying(stationId) {
    const url = `https://api.typicalmedia.net/api/v1/\${stationId}/nowplaying`;
    const response = await fetch(url);
    return response.json();
}
React Hook Example
Custom React Hook
import { useState, useEffect } from 'react';

export function useNowPlaying(stationId) {
    const [nowPlaying, setNowPlaying] = useState(null);
    const [loading, setLoading] = useState(true);
    const [error, setError] = useState(null);

    useEffect(() => {
        const fetchNowPlaying = async () => {
            try {
                const response = await fetch(
                    `https://api.typicalmedia.net/api/v1/\${stationId}/nowplaying`
                );
                const data = await response.json();
                setNowPlaying(data);
            } catch (err) {
                setError(err);
            } finally {
                setLoading(false);
            }
        };

        fetchNowPlaying();
        const interval = setInterval(fetchNowPlaying, 30000); // Update every 30s
        return () => clearInterval(interval);
    }, [stationId]);

    return { nowPlaying, loading, error };
}