Docs

Now-playing push

Send the current track from any playout system or encoder to your Soundwaves site.

Network API keys are in early access. Email hello@soundwaveshq.com to get one.

If your station plays out from a system that isn’t connected to Soundwaves, it can push the current track to your site. Pushed tracks appear in the same now-playing feed your site already shows, and live listeners see the change straight away.

Authenticate

Pushes use a network API key with the nowplaying:write permission. Send it as a bearer token, or as an apiKey query parameter for systems that can only call a URL. Prefer the header where you can, because query strings are more likely to end up in logs.

Fields

FieldTypeRequiredNotes
titlestringyes1–512 characters
artiststringyes1–512 characters
albumstringno
artworkUrlURLnoLeave it out and we’ll find artwork for you
durationSecondsintegernoTrack length
startedAtISO 8601noDefaults to when we receive the push

Push with POST

curl -X POST https://api.staging.swztech.net/ingest/now-playing \
  -H "Authorization: Bearer $NETWORK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Midnight City",
    "artist": "M83",
    "durationSeconds": 240
  }'

Push with GET

For encoders with a metadata URL hook, send the same fields as query parameters:

curl "https://api.staging.swztech.net/ingest/now-playing?apiKey=$NETWORK_API_KEY&title=Midnight+City&artist=M83"

A successful push returns 200 with { "ok": true, "nowPlaying": { … } }.

Artwork

If you don’t send artworkUrl, Soundwaves looks up cover art in the background (Spotify, then Deezer, then Last.fm) and updates your site when it finds some. This never slows down or fails the push.

When both sources are live

If a station has both pushed and natively scheduled now-playing, for example during a migration, the most recent track by start time wins. Recently played history always shows natively scheduled plays.

Errors

StatusBodyMeaning
401{ "error": "invalid_api_key" }Missing, malformed, unknown or revoked key
403{ "error": "insufficient_permissions" }The key lacks nowplaying:write
400{ "error": [ … ] }A field failed validation
500{ "error": "server_error" }Something went wrong on our side

On this page