Met de STROBE API haal je op wat er nu draait, wat er op de gids staat, wie onze DJ’s zijn, wat er in het nieuws staat en welke uitzendingen je kunt terugkijken. Het gaat om dezelfde informatie als op de site. Je kunt er niets mee wijzigen en je ziet er niets mee dat niet openbaar is.
De API is versie v1 en staat op https://stroberadio.nl/api/v1. Elke aanvraag heeft een API-sleutel nodig.
Stuur je sleutel mee in een kop, op één van deze twee manieren:
Authorization: Bearer sk_jouw_sleutel
X-API-Key: sk_jouw_sleutel
Of, voor snel proberen in de browser, achter het adres:
https://stroberadio.nl/api/v1/now?key=sk_jouw_sleutel
Een sleutel begint met sk_ en is 35 tekens lang. Je ziet hem in Mijn STROBE (tabblad API) altijd terug onder ‘Toon sleutel’. Ben je hem toch kwijt, of is hij uitgelekt, maak dan een nieuwe en trek de oude in. Staan er zowel een kop als ?key=, dan telt de kop.
- Een sleutel in het adres (?key=) is handig, maar minder veilig: adressen komen in browsergeschiedenis, logbestanden van proxy’s en in de Referer-kop terecht. Gebruik voor je eigen programma liever de kop. Wij zetten de sleutel niet in ons eigen logboek.
- Gebruik je sleutel op een server, niet in code die bezoekers kunnen lezen (een website of app die je verspreidt). Dan kan iedereen hem overnemen en gebruikt die jouw limiet.
- Is je sleutel toch uitgelekt? Trek hem in via Mijn STROBE → API en maak een nieuwe.
Vanuit een browser (CORS) mag het wel, de API staat dat toe. Dat is bedoeld om uit te proberen, niet voor een openbare website.
Elke sleutel heeft een limiet per minuut en per dag. Een dag loopt van middernacht tot middernacht, in Nederlandse tijd.
| Sleutel | Per minuut | Per dag |
|---|
| Luisteraar (standaard) | 30 | 3000 |
| Partner of app (op afspraak) | meer | meer |
Je mag maximaal 3 sleutels tegelijk hebben. Heb je meer nodig, mail ons en vertel wat je bouwt.
Elk antwoord vertelt hoe je ervoor staat:
| X-RateLimit-Limit | Je limiet per minuut. |
| X-RateLimit-Remaining | Hoeveel aanvragen je deze minuut nog hebt. |
| X-RateLimit-Reset | Over hoeveel seconden de minuut opnieuw begint. |
| X-RateLimit-Day-Limit | Je limiet per dag. |
| X-RateLimit-Day-Remaining | Hoeveel aanvragen je vandaag nog hebt. |
| Retry-After | Alleen bij een 429: na hoeveel seconden je het opnieuw mag proberen. |
Zit je boven de limiet, dan krijg je status 429. Wacht dan het aantal seconden uit Retry-After. Vraag niet steeds hetzelfde op: de gegevens veranderen niet elke seconde. Het nummer dat nu draait verandert hooguit elke paar minuten, dus één keer per 10 tot 15 seconden is meer dan genoeg. Aanvragen zonder geldige sleutel of die steeds opnieuw geweigerd worden, kunnen leiden tot een tijdelijke blokkade van je IP-adres.
Alle antwoorden zijn JSON (UTF-8). Een lijst heeft dit vaste vorm:
{
"data": [
"…"
],
"meta": {
"total": 42,
"limit": 20,
"offset": 0
}
}
Met limit (1 tot 100, standaard 20) en offset loop je door een lange lijst. Eén ding of een samenstelling heeft alleen data.
- Tijdstippen met een datum erbij (zoals played_at) zijn ISO 8601 in UTC, bijvoorbeeld 2026-11-05T14:22:00.000Z.
- Datums (2026-11-05) en kloktijden (14:00) zijn Nederlandse tijd.
- Dagen van de week zijn getallen: 0 is zondag, 1 maandag, tot en met 6 zaterdag.
- Teksten zijn in het Nederlands, zonder opmaak. Afbeeldingen zijn volledige adressen, of een lege tekst als er geen is.
- Er komen soms velden bij. Bouw je programma zo dat het onbekende velden negeert.
Jouw sleutel
GET/api/v1/me
Laat zien welke sleutel je gebruikt en hoeveel aanvragen je nog hebt. Handig om je koppeling te testen.
{
"data": {
"name": "Mijn bot",
"kind": "user",
"limits": {
"per_minute": 30,
"per_day": 3000
}
}
}
Nu op de radio
GET/api/v1/now
Het nummer dat nu draait, wat er hierna komt, de laatste nummers en de show die nu in de lucht is.
{
"data": {
"live": true,
"listeners": 42,
"song": {
"title": "Blah Blah Blah",
"artist": "Armin van Buuren",
"album": "",
"art": "https://…/art.jpg",
"played_at": "2026-11-05T14:22:00.000Z",
"elapsed": 61,
"duration": 180
},
"next": {
"title": "The Business",
"artist": "Tiësto",
"art": ""
},
"history": [
{
"title": "Mooi Lied",
"artist": "Zanger",
"art": "",
"played_at": "2026-11-05T14:18:00.000Z"
}
],
"show": {
"slug": "hard-tonight",
"title": "Hard Tonight",
"host": "Dante",
"start": "14:00",
"end": "16:00",
"tv_only": false
}
}
}
Stream-status
GET/api/v1/status
Of er geluid en beeld is, met de adressen van de streams.
{
"data": {
"online": true,
"audio": true,
"video": false,
"streams": {
"audio": "https://stream.heidemanmedia.nl/listen/strobe/radio.mp3",
"video": ""
}
}
}
Programma’s
GET/api/v1/shows
Alle vaste programma’s met dagen en tijden.
| Parameter | Type | Standaard | Uitleg |
|---|
| day | string | — | Alleen programma’s van deze dag: 0 t/m 6 (0 is zondag) of ma, di, wo, do, vr, za, zo. |
| limit | integer | 20 | Hoeveel resultaten je wilt zien (1 tot 100). |
| offset | integer | 0 | Vanaf het hoeveelste resultaat (voor de volgende pagina). |
{
"data": [
{
"slug": "hard-tonight",
"title": "Hard Tonight",
"genre": "Hardstyle",
"host": "Dante",
"djs": [
"Dante"
],
"description": "…",
"image": "https://stroberadio.nl/uploads/…",
"days": [
1,
2,
3,
4
],
"days_text": "Maandag t/m donderdag",
"start": "14:00",
"end": "16:00",
"tv_only": false
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}
Gids (komende dagen)
GET/api/v1/schedule
De uitzendingen per datum, inclusief extra uitzendingen en programma’s die niet doorgaan.
| Parameter | Type | Standaard | Uitleg |
|---|
| days | integer | 7 | Hoeveel dagen vooruit, vanaf vandaag (1 tot 14). |
{
"data": [
{
"date": "2026-11-05",
"weekday": "donderdag",
"items": [
{
"type": "show",
"slug": "hard-tonight",
"title": "Hard Tonight",
"host": "Dante",
"djs": [
"Dante"
],
"start": "14:00",
"end": "16:00",
"cancelled": false,
"reason": "",
"tv_only": false
},
{
"type": "extra",
"slug": "2026-11-05-festivalavond",
"title": "Festivalavond",
"host": "",
"djs": [],
"start": "20:00",
"end": "23:00",
"cancelled": false,
"reason": "",
"tv_only": false
}
]
}
]
}
DJ’s
GET/api/v1/djs
De DJ’s en presentatoren met hun korte profiel.
| Parameter | Type | Standaard | Uitleg |
|---|
| limit | integer | 20 | Hoeveel resultaten je wilt zien (1 tot 100). |
| offset | integer | 0 | Vanaf het hoeveelste resultaat (voor de volgende pagina). |
{
"data": [
{
"slug": "dante-heideman",
"name": "Dante Heideman",
"show": "Hard Tonight",
"bio": "…",
"image": "https://stroberadio.nl/uploads/…",
"socials": {
"instagram": "https://instagram.com/…"
}
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}
Nieuws
GET/api/v1/news en /api/v1/news/{slug}
De nieuwsberichten, nieuwste eerst. Met /news/{slug} haal je één bericht op, met de volledige tekst.
| Parameter | Type | Standaard | Uitleg |
|---|
| limit | integer | 20 | Hoeveel resultaten je wilt zien (1 tot 100). |
| offset | integer | 0 | Vanaf het hoeveelste resultaat (voor de volgende pagina). |
{
"data": [
{
"slug": "nieuwe-show",
"category": "Nieuws",
"date": "2026-11-01T09:00:00.000Z",
"title": "Nieuwe show op vrijdag",
"excerpt": "…",
"image": "",
"url": "https://stroberadio.nl/nieuws/nieuwe-show"
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}
Agenda en extra uitzendingen
GET/api/v1/events
Extra uitzendingen en evenementen. Standaard alleen wat vandaag of later is.
| Parameter | Type | Standaard | Uitleg |
|---|
| from | datum | vandaag | Vanaf deze datum (JJJJ-MM-DD). Standaard vandaag. |
| to | datum | — | Tot en met deze datum (JJJJ-MM-DD). |
| limit | integer | 20 | Hoeveel resultaten je wilt zien (1 tot 100). |
| offset | integer | 0 | Vanaf het hoeveelste resultaat (voor de volgende pagina). |
{
"data": [
{
"slug": "2026-11-07-festivalavond",
"title": "Festivalavond",
"date": "2026-11-07",
"start": "20:00",
"end": "23:00",
"genre": "EDM",
"host": "",
"djs": [
"Dante"
],
"description": "…"
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}
Gemist
GET/api/v1/clips
Uitzendingen en fragmenten om terug te kijken, nieuwste eerst.
| Parameter | Type | Standaard | Uitleg |
|---|
| limit | integer | 20 | Hoeveel resultaten je wilt zien (1 tot 100). |
| offset | integer | 0 | Vanaf het hoeveelste resultaat (voor de volgende pagina). |
{
"data": [
{
"id": 12,
"title": "Hard Tonight van vorige week",
"show": "Hard Tonight",
"date": "2026-10-30",
"url": "https://www.youtube.com/watch?v=…",
"image": "",
"duration": "1:58:00",
"description": "…"
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}
Bij een fout krijg je de bijbehorende HTTP-status en dit antwoord. Kijk naar code: die blijft gelijk, de tekst kan veranderen.
{
"error": {
"code": "key_required",
"message": "Voor deze API heb je een API-sleutel nodig. …"
},
"docs": "https://stroberadio.nl/api"
}
| Status | code | Wat het betekent |
|---|
| 401 | key_required | Je stuurde geen API-sleutel mee. |
| 401 | invalid_key | De sleutel is niet geldig (typfout of nooit bestaan). |
| 401 | key_revoked | De sleutel is ingetrokken, door jou of door ons. |
| 403 | access_denied | Het account achter deze sleutel heeft geen toegang meer tot de API. |
| 403 | ip_blocked | Het IP-adres waarmee je aanvraagt is geblokkeerd voor de API. |
| 404 | not_found | Dit onderdeel bestaat niet. |
| 405 | method_not_allowed | Alleen GET (lezen) is mogelijk. |
| 429 | rate_limited | Je zit boven de limiet per minuut. Wacht het aantal seconden uit Retry-After. |
| 429 | daily_limit | Je zit boven de limiet per dag. Morgen kun je weer verder. |
| 500 | server_error | Er ging iets mis aan onze kant. |
| 503 | api_disabled | De API staat tijdelijk uit. |
| 503 | upstream_unavailable | De bron van deze gegevens (bijvoorbeeld de radioserver) is even niet bereikbaar. |
Dit is v1 (uitgave 1.0.0). Binnen v1 voegen we alleen dingen toe, we halen niets weg en veranderen niets van betekenis. Bij een grotere wijziging komt er een v2 en blijft v1 nog minstens zes maanden werken. Wij kondigen dat vooraf aan op deze pagina.
1.0.0: eerste uitgave met me, now, status, shows, schedule, djs, news, events en clips.
Vragen of iets nodig dat er niet in zit? Mail ons.