Shoutcast Net API Integration Guide for Custom Apps (Shoutcast Net API)

If you’re building a custom dashboard for your station, a mobile app for your congregation, a campus radio control panel, or a live-event “Now Playing” overlay, the Shoutcast Net API helps you connect your software to your streaming server in a clean, automated way. This tutorial walks radio DJs, music streamers, podcasters, church broadcasters, school radio stations, and live event streamers through a practical, step-by-step integration approach.

You’ll learn how to prepare your environment, obtain credentials, authenticate securely, read real-time station stats, update metadata, and automate scheduling/alerts. Along the way, we’ll highlight why Shoutcast Net is a strong fit for production apps: $4/month starting price, unlimited listeners, 99.9% uptime, SSL streaming, and a 7 days trial—without Wowza’s expensive per-hour/per-viewer billing model or the painful limitations common in legacy Shoutcast setups.

What you’ll build

  • • A secure API client that reads Now Playing and listener counts
  • • A station status widget (online/offline, bitrate, mount/stream name)
  • • Optional: metadata updates and basic stream controls
  • • Optional: AutoDJ scheduling and alerts for outages

Shoutcast Net is built so you can stream from any device to any device and even bridge any stream protocols to any stream protocols (RTMP, RTSP, WebRTC, SRT, etc) depending on your workflow—ideal for modern broadcasting apps.

Prerequisites: What you need before you call the API

Before you write your first request, set up a few basics so your integration is reliable and secure. Most “API problems” in broadcasting apps come from missing SSL, mixing up server ports, or trying to call admin endpoints from a public frontend.

Checklist for DJs, stations, and developers

  • • An active Shoutcast Net service (start with a 7 days trial if you want to test).
  • • Your stream server hostname, port(s), and stream identifier (mount/stream name depends on your configuration).
  • • A plan that matches your workflow (for example, AutoDJ if you want scheduling and 24/7 playback).
  • • A server-side runtime for API calls (Node.js, PHP, Python, Go). Avoid calling admin endpoints directly from a browser or mobile app.
  • • A place to store secrets safely (environment variables, a secrets manager, or encrypted config).

Why Shoutcast Net fits custom apps better than “legacy” setups

If you’ve struggled with older Shoutcast-era workflows, you already know the pain: limited automation, awkward metadata handling, and brittle admin patterns. Shoutcast Net modernizes the hosting experience and focuses on what stations need in 2026: SSL streaming, dashboards, automation support, and unlimited listeners on a flat-rate unlimited model.

It’s also a cost win versus Wowza’s expensive per-hour/per-viewer billing approach—especially for church services, school stations, and live events where audience size can spike unpredictably.

Latency and protocol notes (useful for app UX)

If your custom app includes chat synchronization, live captions, “song request” timing, or a real-time sermon slide follow-along, you’ll care about latency. Many workflows target very low latency 3 sec for interactive experiences. Shoutcast Net’s hosting and tooling support modern streaming patterns so you can stream from any device to any device and bridge any stream protocols to any stream protocols (RTMP, RTSP, WebRTC, SRT, etc) when your production requires it.

Pro Tip

Build your app with a small “API gateway” service (even a simple serverless function). Your frontend calls your gateway, and the gateway calls the Shoutcast Net API with secrets. This prevents credential leaks and makes it easy to add rate limiting, caching, and logging.

Step 1–2: Create your server and get API credentials

This section covers two actions: (1) create your Shoutcast Net server, and (2) collect the exact connection details your custom app will use. Even if you’re already streaming, it’s worth organizing these values into a single config object so your API integration stays consistent.

Step 1: Spin up your Shoutcast Net service

Choose a plan that matches your stream type (music radio, talk/podcast live, church service, school radio, or live events). Shoutcast Net plans start at $4/month and include the benefits broadcasters care about: 99.9% uptime, SSL streaming, and unlimited listeners—without surprise overage fees.

Step 2: Collect the values your API client needs

In your station control panel, locate the server details your app will reference. At minimum, record:

  • Host (e.g., yourstation.shoutcastnet.com)
  • Port (stream port and, if applicable, an admin/API port)
  • Stream identifier (stream ID, mount, or endpoint depending on your setup)
  • Credentials (API token/password/keys as provided in your panel)
  • SSL URL (https endpoint for your API calls and secure player links)

Recommended configuration format

Store your integration settings as environment variables (preferred) and map them into a single config object in your application:

// Example: Node.js config (do not commit real secrets)
export const shoutcastNet = {
  baseUrl: process.env.SCNET_BASE_URL,      // e.g., https://yourpanel-or-api-host
  stationId: process.env.SCNET_STATION_ID,  // if your plan uses station identifiers
  apiToken: process.env.SCNET_API_TOKEN,    // token/secret from your control panel
  streamHost: process.env.SCNET_STREAM_HOST,
  streamPort: Number(process.env.SCNET_STREAM_PORT || 0),
  useSsl: process.env.SCNET_USE_SSL === "true",
};

This makes it easy to deploy the same code to multiple stations (for example, a school district with several campuses) by swapping environment variables.

Pro Tip

If you plan to Restream to Facebook, Twitch, YouTube, keep your “distribution” settings separate from your “station API” settings. That way your app can show station health/Now Playing while your video restream workflow evolves independently.

Step 3: Authenticate safely (tokens, IP allowlists, HTTPS)

Authentication is where many broadcasters accidentally create risk. A radio station app might start as a small “Now Playing” page and then grow into admin controls—so you want to design security correctly from day one.

Use HTTPS everywhere (API + player links)

Always call the API over HTTPS and prefer SSL stream URLs in your apps. This protects credentials, listener privacy, and avoids mixed-content errors in browsers. Shoutcast Net supports SSL streaming, so your station can look professional and function reliably in modern browsers and embedded players.

Prefer tokens over embedding passwords

If your panel provides an API token, use it. Tokens are easier to rotate than passwords and can be limited in scope depending on the system. Never ship tokens inside a public mobile app bundle or a JavaScript frontend—treat them like cash.

Implement an API proxy (backend-for-frontend)

Your custom app should have a small backend endpoint like /api/now-playing that:

  • • Verifies the user session (if needed)
  • • Calls Shoutcast Net API with your secret token
  • • Caches responses for a few seconds to reduce load
  • • Returns only what the frontend needs

Use IP allowlists for admin actions

For actions like metadata updates or stream control, restrict calls to known IPs (your office/studio, your automation server, your CI/CD runner). That way even if a token is exposed, the attacker can’t use it from the outside.

Example: secure request pattern (server-side)

// Example: Node.js server-side fetch wrapper
async function scnetRequest(path, { method = "GET", body } = {}) {
  const url = new URL(path, process.env.SCNET_BASE_URL);

  const res = await fetch(url.toString(), {
    method,
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json",
      // Example auth header pattern; use the exact scheme your Shoutcast Net panel provides
      "Authorization": `Bearer ${process.env.SCNET_API_TOKEN}`,
    },
    body: body ? JSON.stringify(body) : undefined,
  });

  if (!res.ok) {
    const text = await res.text().catch(() => "");
    throw new Error(`Shoutcast Net API error ${res.status}: ${text}`);
  }
  return res.json();
}

Shoutcast Net vs Wowza billing and operational risk

Operationally, you don’t want your app’s success to become a cost problem. Wowza’s expensive per-hour/per-viewer billing can turn a viral moment, a big sports match, or a holiday service into a budget surprise. Shoutcast Net’s flat-rate unlimited model is simpler to plan around—especially for schools, churches, and recurring live events.

Pro Tip

Add a “credential rotation” note to your runbook. Schedule token rotation quarterly, and make sure your API proxy reads tokens from environment variables so rotating doesn’t require code changes.

Step 4–6: Read Now Playing, listeners, and stream status

Now we’ll implement the most common use cases for DJs and broadcasters: displaying Now Playing, showing listener totals, and detecting whether the stream is online. These features power everything from website widgets to in-studio dashboards to “Now Playing” overlays in OBS.

Step 4: Read “Now Playing” for your website/app

Your goal: return a simple JSON payload your frontend can display—track title, artist, and timestamp. Exact endpoint paths vary by service configuration, so check your Shoutcast Net panel/API docs for the canonical routes. Your implementation pattern is consistent:

  • • Call the API “now playing” endpoint on the server side
  • • Normalize the response to your app’s schema
  • • Cache for 3–10 seconds (metadata doesn’t need millisecond updates)
// Example: your app endpoint handler (pseudo-code)
export async function getNowPlaying() {
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/now-playing`);
  return {
    title: data?.track?.title ?? "",
    artist: data?.track?.artist ?? "",
    startedAt: data?.track?.startedAt ?? null,
    artworkUrl: data?.track?.artworkUrl ?? null,
  };
}

Step 5: Read listeners (current, peak, uniques)

Listener stats are useful for:

  • • DJ dashboards (motivation + timing)
  • • Sponsor reports
  • • Church attendance analytics for online services
  • • School stations proving engagement to administrators
// Example: listener stats request (pseudo-code)
export async function getListenerStats() {
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/listeners`);
  return {
    current: data?.current ?? 0,
    peak: data?.peak ?? 0,
    unique: data?.unique ?? 0,
  };
}

Step 6: Monitor stream status (online/offline, bitrate, health)

A stream status endpoint is the backbone of alerting and automation. For example, if your live encoder crashes during a concert, you can automatically fail over to AutoDJ or display a message in your app.

// Example: stream status request (pseudo-code)
export async function getStreamStatus() {
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/status`);
  return {
    online: Boolean(data?.online),
    bitrateKbps: data?.bitrateKbps ?? null,
    codec: data?.codec ?? null,
    listeners: data?.listeners ?? 0,
  };
}

Comparison: Shoutcast Net flat-rate vs Wowza variable billing

If your custom app makes listening easier, your audience grows—and billing models matter. Here’s why many broadcasters prefer Shoutcast Net for predictable costs:

Feature Shoutcast Net Wowza (common perception)
Pricing model Flat-rate unlimited model (great for spikes) Often expensive per-hour/per-viewer billing
Entry cost $4/month starting price + 7 days trial Higher and can scale with usage
Listeners Unlimited listeners Costs may increase with audience
Station ops 99.9% uptime, SSL streaming, broadcaster-first tooling Powerful, but can be overkill and costly for radio-style use
Legacy limitations Designed to move beyond legacy Shoutcast pain points Not a Shoutcast replacement; different operational model

Pro Tip

Cache Now Playing and listener stats separately. Now Playing can be cached for ~5–10 seconds, while status checks might run every 10–30 seconds. This keeps your app responsive without hammering your API.

Step 7–8: Update metadata and control your stream

Once your app can read data, the next level is writing data—especially metadata. DJs love “Now Playing” that updates correctly, and listeners trust stations that show accurate titles (and podcast episode names) across players and smart devices.

Step 7: Update metadata safely (DJ tools, live events, sermons)

Metadata updates typically include title/artist (music), episode title (podcast-style live), or segment title (church service agenda). Do these updates from a trusted server or an authenticated staff panel—not from a public client.

// Example: metadata update (pseudo-code)
export async function updateMetadata({ title, artist }) {
  // Validate inputs (length limits, profanity filters, etc.)
  const body = { title, artist };

  // Endpoint path is illustrative; use the exact route in your Shoutcast Net API docs/panel.
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/metadata`, {
    method: "POST",
    body,
  });

  return { ok: true, result: data };
}

Security note: if you let DJs update metadata from a web UI, protect it with login + role permissions. For school stations, consider restricting updates to on-campus IPs with an allowlist.

Step 8: Implement basic stream controls (with guardrails)

Depending on your plan and configuration, you may have API actions to start/stop automation, switch sources, or trigger a reconnect workflow. Keep controls minimal, logged, and permissioned—especially for churches and schools where volunteers rotate.

// Example: guarded control action (pseudo-code)
export async function switchToAutoDj() {
  // Only allow from admin role + allowlisted IPs
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/source/switch`, {
    method: "POST",
    body: { target: "autodj" },
  });
  return { ok: true, result: data };
}

When to use AutoDJ vs live encoder

AutoDJ is ideal for 24/7 playback, overnight scheduling, and “failover” when a live encoder disconnects. A live encoder is best for talk shows, sports, concerts, and real-time sermons—especially when you’re targeting very low latency 3 sec interactions in companion apps.

If you need a modern distribution setup (for example, sending your live show to multiple platforms), Shoutcast Net helps you keep audio streaming stable while you Restream to Facebook, Twitch, YouTube in parallel.

Pro Tip

Log every metadata/control call with timestamp, user, and IP. When a title changes unexpectedly (or automation flips mid-show), you’ll have an audit trail and can fix process issues fast.

Step 9–10: Automate with AutoDJ, scheduling, and alerts

The biggest payoff from an API integration is automation: scheduled programming, automatic fallbacks, and proactive alerts when something breaks. This is where Shoutcast Net is especially broadcaster-friendly—without forcing you into Wowza’s expensive per-hour/per-viewer billing for routine station operations.

Step 9: Schedule programming with AutoDJ

If your station runs 24/7, AutoDJ can handle playlists, rotations, and scheduled shows. Your custom app can become a “program director” interface: upload content, schedule blocks, and display what’s queued next.

A practical scheduling pattern:

  • • Maintain a schedule in your app (show name, start/end, playlist ID)
  • • Sync changes to Shoutcast Net via the API (create/update schedule entries)
  • • Use Now Playing + queue endpoints to show “Up Next”
  • • Add a manual override button for staff (switch to live source)
// Example: create schedule entry (pseudo-code)
export async function createScheduleEntry(entry) {
  // entry: { name, startTime, endTime, playlistId, timezone }
  const data = await scnetRequest(`/v1/stations/${process.env.SCNET_STATION_ID}/autodj/schedule`, {
    method: "POST",
    body: entry,
  });
  return { ok: true, result: data };
}

Step 10: Add alerts (downtime, silence, metadata stuck)

Build alerts around the stream status checks you created earlier. Common broadcaster alerts include:

  • • Stream goes offline (encoder crash, network issue)
  • • Listener count drops suddenly (possible outage)
  • • Metadata hasn’t changed for X minutes (automation stuck)
  • • Bitrate/codec mismatch (misconfigured encoder preset)

A simple approach is a cron job (or serverless scheduler) that polls status every 30–60 seconds and notifies via email/SMS/Discord when thresholds are crossed:

// Example: alert loop (pseudo-code)
export async function healthCheckAndAlert(notify) {
  const status = await getStreamStatus();

  if (!status.online) {
    await notify("Stream offline: switching to AutoDJ or investigating encoder.");
    // Optional: trigger a failover action
    // await switchToAutoDj();
  }

  if (status.bitrateKbps !== null && status.bitrateKbps < 64) {
    await notify(`Low bitrate detected (${status.bitrateKbps} kbps). Check encoder settings.`);
  }
}

Why this automation matters for churches, schools, and events

Volunteer teams rotate. Student staff changes every semester. Live events have unpredictable connectivity. Automation plus clear alerts means your stream stays reliable—supporting 99.9% uptime goals and keeping your audience engaged whether they listen on mobile, desktop, smart speakers, or embedded players.

And because Shoutcast Net is designed for unlimited listeners on a predictable plan, you can promote your stream without worrying about audience spikes turning into a billing emergency (a common fear under Wowza’s expensive per-hour/per-viewer billing).

Next steps: launch, test, and scale

  • • Test with real devices and networks (Wi-Fi + cellular)
  • • Verify SSL URLs in all players
  • • Confirm your app can stream from any device to any device in your target environments
  • • Document your failover plan (live encoder → AutoDJ)
  • • If you’re ready, pick a plan from the shop or start a 7 days trial

Pro Tip

Add a “status badge” to every internal tool: Online/Offline, SSL active, last metadata update, and last successful API call time. When something breaks five minutes before a big show, your team will instantly know where to look.

Ready to build?

Start streaming with Shoutcast Net and connect your custom app to real station data. Get predictable costs with the flat-rate unlimited model, plus the tools broadcasters need.