Skip to content
Support

Stream Radar

Stream Radar is an optional paid add-on for API distribution accounts. It monitors your catalog for streaming patterns consistent with artificial streaming and flags tracks that need attention, early enough for you to act before it turns into a DSP fee, a takedown, or a strike against your account.

A Stream Radar flag is an early-warning signal, not a verdict. Most artificial streaming traces back to third-party promotion bought in good faith — a playlist push or a marketing service that turned out to inflate plays artificially. A flag gives you the chance to check what’s happening and respond on your own terms, rather than finding out when a platform acts.

Stream Radar exposes its flags through the public API so you can pull them into your own dashboards, alerting, and review workflows.

With Stream Radar enabled on your account, LabelGrid watches your distributed catalog for streaming patterns consistent with artificial streaming. When a track shows such a pattern on a platform, Stream Radar raises a flag: a record you can read via the API that tells you which track, on which platform, needs a look.

Each flag names the affected track and platform, a severity to help you prioritise, and an estimate of how many streams are involved, so you can triage quickly and dig into the ones that matter.

Stream Radar only surfaces information for you to act on. What you do with a flag — check a campaign, talk to the artist, pause a promotion — is up to you.

Stream Radar is a paid add-on enabled per account by our team. To turn it on, contact our sales team and let them know you’d like Stream Radar.

Until it’s enabled, the Stream Radar endpoints return:

{
"error_code": "stream_radar_not_enabled",
"message": "Stream Radar is not enabled for this account."
}

with an HTTP 403 status. Once the add-on is active, the same endpoints start returning your flags.

Stream Radar provides two read endpoints, both using the same Bearer-token authentication as the rest of the LabelGrid public API. For the full, always-current request and response schemas, see the API reference.

GET /v4/public/stream-radar/flags
Authorization: Bearer YOUR_API_TOKEN

Returns your account’s flags, most recent detection first. The response is paginated:

ParameterWhat it does
pageThe page of results to return.
per_pageResults per page, up to a maximum of 100.

You can narrow the list with any of these filters:

FilterValues
filter[status]active or resolved.
filter[severity]low, medium, or high.
filter[dsp]A platform identifier (for example, spotify).
filter[isrc]An ISRC, to see flags for one recording.
filter[release_id]A release ID, to see flags across a release.
filter[detected_from]Start date (YYYY-MM-DD), matched on a flag’s last detection date.
filter[detected_to]End date (YYYY-MM-DD), matched on a flag’s last detection date.

For example, to pull the open, high-severity flags detected this month:

GET /v4/public/stream-radar/flags?filter[status]=active&filter[severity]=high&filter[detected_from]=2026-07-01
Authorization: Bearer YOUR_API_TOKEN
GET /v4/public/stream-radar/flags/{id}
Authorization: Bearer YOUR_API_TOKEN

Returns one flag by its id. A flag that belongs to another account returns 404 — you only ever see your own flags.

Each flag carries:

FieldWhat it tells you
idThe flag’s stable identifier.
dspThe platform the pattern was seen on (for example, spotify).
isrcThe ISRC of the recording involved.
release_idThe release the recording belongs to.
track_idThe specific track, when the ISRC maps unambiguously to one of your tracks.
severitylow, medium, or high, to help you prioritise.
statusactive while the pattern is ongoing, resolved once it stops.
first_detected_atWhen the pattern was first seen for this track and platform.
last_detected_atThe most recent detection.
estimated_affected_streamsAn estimate of how many streams are involved, to gauge scale.
published_atWhen the flag was first raised to you.
resolved_atWhen the flag resolved, or null while it’s still active.

Stream Radar keeps one flag per track per platform, so a track’s history on a given platform stays in a single record rather than fragmenting into many:

  • Repeated detections extend the same flag. While a pattern keeps showing up, its last_detected_at advances and the flag stays active — the id doesn’t change.
  • A flag resolves automatically when detections stop. Once the pattern is no longer seen, the flag moves to resolved and its resolved_at is set. You don’t need to close it yourself.
  • A new detection reopens the same flag. If the pattern returns after a flag resolved, that same flag (same id) goes back to active rather than a new one being created.

This means you can trust a flag’s id as a durable handle for a track-and-platform situation over its whole life.

Rather than poll for flags, you can have LabelGrid push you a notification the moment one changes. Subscribe the same way you subscribe to LabelGrid’s other webhook events, from your webhook settings in the app or via the API. Stream Radar fires two events:

EventWhen it fires
stream_radar.flag_createdA flag is raised for the first time, or a resolved flag reopens on a new detection.
stream_radar.flag_resolvedA flag resolves because detections stopped.

Each payload carries the same fields as the flag itself, with flag_id naming the flag. stream_radar.flag_created adds a transition field so you can tell the two cases apart:

transitionMeaning
publishedA brand-new flag was raised.
reopenedAn existing, previously resolved flag became active again.

Stream Radar currently monitors Spotify; a flag from Spotify has dsp set to spotify. Coverage expands additively over time — as more platforms are added, they show up as new dsp values on new flags, and nothing about the flags you already handle changes. Filter on filter[dsp] if you want to scope your tooling to a specific platform.

A flag is a prompt to look, not a conclusion. When one comes in:

  • Check recent promotion. Was this track pushed through a playlist service, a marketing campaign, or a promoter recently? Third-party promotion is the most common source of artificial streaming, and often the seller — not you or the artist — is the cause.
  • Talk to the artist. Ask what they’ve done to promote the track. Artists don’t always mention a service they paid, and they may not realise a “guaranteed streams” offer is a red flag.
  • Pause campaigns you can’t verify. If a promotion is running that you can’t confirm is legitimate, pausing it stops the pattern from growing while you look into it. When detections stop, the flag resolves on its own.

Acting early on a flag is the whole point of Stream Radar: it’s far better to catch and unwind a bad promotion yourself than to have a platform apply a fee, a takedown, or an account strike first.


Questions about Stream Radar? Contact our team. We’re happy to help.

Not using LabelGrid yet?

Everything you just read about is available on our platform.

See what LabelGrid can do →