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.
What Stream Radar is
Section titled “What Stream Radar is”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.
How to get Stream Radar
Section titled “How to get Stream Radar”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.
Using the API
Section titled “Using the API”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.
List flags
Section titled “List flags”GET /v4/public/stream-radar/flagsAuthorization: Bearer YOUR_API_TOKENReturns your account’s flags, most recent detection first. The response is paginated:
| Parameter | What it does |
|---|---|
page | The page of results to return. |
per_page | Results per page, up to a maximum of 100. |
You can narrow the list with any of these filters:
| Filter | Values |
|---|---|
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-01Authorization: Bearer YOUR_API_TOKENGet a single flag
Section titled “Get a single flag”GET /v4/public/stream-radar/flags/{id}Authorization: Bearer YOUR_API_TOKENReturns one flag by its id. A flag that belongs to another account returns 404 — you only ever see your own flags.
Flag fields
Section titled “Flag fields”Each flag carries:
| Field | What it tells you |
|---|---|
id | The flag’s stable identifier. |
dsp | The platform the pattern was seen on (for example, spotify). |
isrc | The ISRC of the recording involved. |
release_id | The release the recording belongs to. |
track_id | The specific track, when the ISRC maps unambiguously to one of your tracks. |
severity | low, medium, or high, to help you prioritise. |
status | active while the pattern is ongoing, resolved once it stops. |
first_detected_at | When the pattern was first seen for this track and platform. |
last_detected_at | The most recent detection. |
estimated_affected_streams | An estimate of how many streams are involved, to gauge scale. |
published_at | When the flag was first raised to you. |
resolved_at | When the flag resolved, or null while it’s still active. |
How a flag behaves over time
Section titled “How a flag behaves over time”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_atadvances and the flag staysactive— theiddoesn’t change. - A flag resolves automatically when detections stop. Once the pattern is no longer seen, the flag moves to
resolvedand itsresolved_atis 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 toactiverather 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.
Webhooks
Section titled “Webhooks”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:
| Event | When it fires |
|---|---|
stream_radar.flag_created | A flag is raised for the first time, or a resolved flag reopens on a new detection. |
stream_radar.flag_resolved | A 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:
transition | Meaning |
|---|---|
published | A brand-new flag was raised. |
reopened | An existing, previously resolved flag became active again. |
Coverage
Section titled “Coverage”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.
What to do when a track is flagged
Section titled “What to do when a track is flagged”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 →