Skip to main content
Build listener websites and mobile apps, and send now-playing metadata from external automation using the RadioTools API. This reference publishes the relevant operations from the product application’s generated contract. Download the public OpenAPI 3.1 document at /openapi.json.

First request & response handling

Working requests, pagination, conditional reads, and non-JSON responses.

Field types & empty states

Real values, nullability, timestamps, content schemas, freshness, and units.

Public delivery

Listener JSON reads, ETags, the realtime feed, and anonymous media URLs.

GraphQL

Query published data with one request, plus an in-browser playground.

Authentication

Listener tokens, push registration, and ingest credentials.

Now-playing ingest

Send reported track metadata from external automation.

Errors & versioning

Stable error codes, pagination, and contractVersion.

HTTP operations

Interactive parameters, schemas, examples, and a request playground.

API surfaces

Open HTTP operations in the API reference sidebar for endpoint schemas, examples, and Try it. Requests are sent to https://radiotools.rivi.software and require credentials with access to that operation. Station administrators issue credentials in the dashboard — see Integrations.

What each endpoint returns

Paths below are relative to /api/v1/stations/{stationSlug} unless shown in full. Each operation page pairs the contract schema with curated fictional examples. Types, required fields, and bounds remain visible alongside realistic values; examples also show empty, stale, and unavailable states where relevant.
  1. Create a station credential with listener:read in the dashboard and store the secret on your server.
  2. GET /api/v1/stations/{stationSlug} with Authorization: Bearer — discover resources links and delivery.pollIntervalSeconds.
  3. GET …/schemas then GET …/content?type= with cursor pagination (same header on every JSON read).
  4. Poll with If-None-Match, or subscribe to the realtime feed described in resources.realtime for updates.
  5. Resolve media URLs from published records via /api/media/public/{stationId}/{versionId} — no token on media bytes.

SDK

The RadioTools SDKs provide typed helpers for public HTTP, GraphQL, and the realtime feed, plus playback ingest. Start with @rivi-software/radiotools-sdk for TypeScript, or use a React, Vue, Svelte, or Next.js binding. Configure the SDK on the server with a tenant token (listener:read); browser clients use your app as a bridge.

Test with sample data

Use a separate sample station and credentials to exercise empty collections, unpublished records, stale now-playing data, revoked access, and disabled API switches. The fictional RIVI FM screenshots in these guides demonstrate the workspace; they do not provide a public demo endpoint or usable credentials. The listener API delivers published station data. Staff-only editorial, planning, and preparation management operations are outside this listener reference. Use the dashboard and its authorized workflows for staff work.