Utviklere

Alt du kan gjøre fra «Min side» kan du også gjøre med HTTP. Du henter status på strømmen din, bytter strømnøkler, styrer videresending og «straks tilbake», setter grensene for automatisk scenebytte, og starter eller stopper OBS-boksen din — fra dine egne skript, fra en bot, eller fra et kontrollpanel du bygger selv.

Base-URL: https://panel.streamsky.no/api/v1

Autentisering: Authorization: Bearer <nøkkelen din>

Format: JSON inn og JSON ut (Content-Type: application/json)

Lag en nøkkel: logg inn på streamsky.noMin sideUtviklere

1. Kom i gang

Nøkler lager du selv under Min side → Utviklere. Du gir nøkkelen en etikett du kjenner igjen, velger tilgangsnivå, og får se selve verdien én eneste gang. Vi lagrer aldri verdien i klartekst, så mister du den, lager du bare en ny og tilbakekaller den gamle.

Nøkkelen er knyttet til kontoen din. Du ser og styrer bare dine egne strømmer og bokser — du trenger aldri oppgi hvem du er i forespørselen, for det vet vi allerede.

Første kall, for å se hva du har:

curl -s https://panel.streamsky.no/api/v1/streams \
  -H "Authorization: Bearer $STREAMSKY_KEY"

Svaret ser slik ut (med et lesenivå-tilgangsnivå, altså uten publiseringsdetaljer):

{
  "streams": [
    {
      "name": "ss-1234",
      "label": "IRL-linja mi",
      "owner": "deg@example.no",
      "plan": "active",
      "status": "active",
      "expiresAt": null,
      "live": true,
      "urls": { "srtHost": "srt.streamsky.no", "srtPort": "8890", "srtlaPort": "5050" }
    }
  ]
}

💡 Legg nøkkelen i en miljøvariabel i stedet for rett i skriptet (export STREAMSKY_KEY=…). Da havner den ikke i kommandohistorikken din, og ikke i et skript du senere deler.

2. Tilgangsnivå

En nøkkel har ett eller begge av to tilgangsnivåer. Velg alltid det laveste som holder: har boten din bare behov for å vise bitrate i en chat, skal den ikke kunne bytte nøklene dine.

NivåGir deg
read Lesing: liste strømmer og bokser, hente helse, se videresendinger, lese innstillingene for automatisk scenebytte og overlays. Publiseringsdetaljene dine returneres ikke — du får verten og portene, ikke lenkene som inneholder nøkkelen din.
write Alt read gir, pluss endring: bytte strømnøkler, legge til / endre / slette videresendinger, slå «straks tilbake» av og på, endre scenebytte, styre boksen og laste inn overlays og OBS-oppsett. Bare write får se publiseringslenkene med nøkkelen din i.

Mangler nøkkelen nivået et kall krever, svarer vi 403 — vi utfører aldri halve operasjonen.

3. Feilkoder

Alle feil kommer som JSON med et error-felt du kan vise videre til deg selv eller brukerne dine. Statuskoden er den som forteller deg hva du skal gjøre.

KodeBetyrHva du gjør
400Forespørselen mangler eller har ugyldige felter.Les error — den sier hvilket felt det gjelder.
401Nøkkelen mangler, er skrevet feil, eller er tilbakekalt.Sjekk Authorization-headeren. Er nøkkelen slettet, lag en ny.
403Nøkkelen mangler tilgangsnivået — eller funksjonen krever et produkt du ikke har.Lag en nøkkel med write, eller les error: noen funksjoner krever både SRT-linje og OBS-boks.
404Finnes ikke på kontoen din.Hent lista på nytt. Vi svarer likt enten navnet ikke finnes eller tilhører noen andre — med vilje.
409Kolliderer med noe som allerede er der.Du har nådd taket for videresendinger eller overlays, eller boksen må startes først.
423Abonnementet er ikke aktivt akkurat nå.Gjenoppta abonnementet i portalen. Å slå av en videresending går alltid.
429For mange kall på kort tid.Vent litt og prøv igjen. Se grensene.

4. Strømmene dine

Plassholdere i stiene skrives med kolon: :navn er navnet på strømmen slik det står i name-feltet, og :id er referansen på en videresending eller en boks.

KallNivåGjør
GET /streamsreadLister alle strømmene dine.
GET /streams/:navnreadÉn strøm.
GET /streams/:navn/healthreadLive-status: om du er på lufta, oppetid, spor, antall seere, mottatte byte, bitrate, forsinkelse og pakketap.
POST /streams/:navn/rotatewriteBytter publiserings- og avspillingsnøklene. Se advarselen under.

Helse

curl -s https://panel.streamsky.no/api/v1/streams/ss-1234/health \
  -H "Authorization: Bearer $STREAMSKY_KEY"
{
  "ok": true,
  "live": true,
  "uptimeSince": "2026-08-18T09:41:12Z",
  "readers": 2,
  "bytesReceived": 184320512,
  "health": { "rttMs": 34, "mbpsIn": 5.8, "lossPct": 0.02 },
  "brb": false,
  "status": "active",
  "destinations": []
}

Vi returnerer bytesReceived rått i stedet for en ferdig utregnet bitrate: poller du med jevne mellomrom, regner du differansen selv og slipper å holde en åpen forbindelse mot oss.

Bytt strømnøkler

curl -s -X POST https://panel.streamsky.no/api/v1/streams/ss-1234/rotate \
  -H "Authorization: Bearer $STREAMSKY_KEY"

Dette bryter en pågående sending. De gamle lenkene slutter å virke med én gang, og du må lime inn den nye i OBS eller BELABOX før du kan gå live igjen. Har du en OBS-boks koblet til strømmen, oppdaterer vi den automatisk — feltet boxUpdated i svaret sier hvilken. Sender du akkurat nå, får du 423 hvis abonnementet ikke er aktivt; ellers får du de nye lenkene i svaret.

5. Videresending

En videresending er en kopi av strømmen din ut til Twitch, YouTube, Facebook, Kick eller din egen RTMP-adresse. Videresending krever at du også har en OBS-boks — får du 403 med needsBox: true, er det derfor.

KallNivåGjør
GET /streams/:navn/destinationsreadLister målene dine, taket ditt, hvor mange som er aktive, og hvilke plattformer som finnes.
POST /streams/:navn/destinationswriteLegger til et mål.
PATCH /streams/:navn/destinations/:idwriteEndrer et mål, eller slår det av og på.
DELETE /streams/:navn/destinations/:idwriteFjerner et mål.
curl -s -X POST https://panel.streamsky.no/api/v1/streams/ss-1234/destinations \
  -H "Authorization: Bearer $STREAMSKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"twitch","label":"Twitch","key":"live_xxxxxxxx","enabled":true}'

Bruk platform: "custom" hvis du sender til din egen adresse; da oppgir du url selv. Vi tar bare imot rtmp:// og rtmps://. Når du leser målene tilbake er adressen maskert — du ser nok til å kjenne igjen målet ditt, ikke nok til at noen kan bruke det. Sender du key som tom streng i en PATCH, betyr det «ikke endre nøkkelen».

Taket gjelder båndbredde, så det er de påskrudde målene som telles. Går du over, får du 409 med teksten som sier hvor mange du kan ha.

6. «Straks tilbake» og scenebytte

KallNivåGjør
PATCH /streams/:navn/brbwrite{"on": true} holder kanalene dine i live med en pauseskjerm når signalet ryker.
GET /streams/:navn/switcherreadLeser innstillingene for automatisk scenebytte, og om en boks er paret med strømmen.
PATCH /streams/:navn/switcherwriteSetter grensene. Justerer vi en verdi du sendte, får du det tilbake i feltet justert.
curl -s -X PATCH https://panel.streamsky.no/api/v1/streams/ss-1234/brb \
  -H "Authorization: Bearer $STREAMSKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"on":true}'

Begge funksjonene krever både SRT-linje og OBS-boks: linja måler signalet, boksen bytter scene. Uten begge svarer vi 403 med en forklaring i error.

7. OBS-boksene dine

KallNivåGjør
GET /streamboxesreadLister boksene dine med status, hvilken strøm de er paret med, og når abonnementet utløper.
POST /streamboxes/:id/powerwrite{"action": "start" \| "stop" \| "reboot"}
GET /streamboxes/:id/overlayreadLister overlay-kildene som ligger i OBS akkurat nå.
POST /streamboxes/:id/overlaywriteLegger inn en overlay-lenke som nettleserkilde: {"url": "...", "navn": "Chat"}
DELETE /streamboxes/:id/overlaywriteFjerner et overlay: {"navn": "Chat"}
POST /streamboxes/:id/obs-importwriteLaster inn din egen scenesamling: {"content": "<innholdet i JSON-fila>"}
curl -s -X POST https://panel.streamsky.no/api/v1/streamboxes/$BOKS/power \
  -H "Authorization: Bearer $STREAMSKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"start"}'

Boksen må være startet for å ta imot overlays eller et OBS-oppsett — ellers svarer vi 409. Overlay-lenken må være https:// og peke ut på internett; vi tar ikke imot adresser som peker innover i nettverket.

Til obs-import bruker du fila fra OBS → Scenesamling → Eksporter (ikke Profil → Eksporter — det er den forvekslingen folk gjør). Vi rører aldri profilen din, så SRT-lenka i boksen står som den står. Maks 1 MB.

8. Publiseringsadressene

Selve videoen sendes ikke gjennom API-et. Den går på UDP til:

BrukAdresse
SRTLA-bonding (flere mobilnett samtidig)srt.streamsky.no:5050
Vanlig SRT — publisering og avspillingsrt.streamsky.no:8890

De ferdige lenkene henter du med en write-nøkkel — de kommer i urls på strømmen din, som srtla, srtPublish og srtPlay. Formen er slik, der streamid bærer navnet på strømmen og publiseringsdetaljen din:

srt://srt.streamsky.no:8890?streamid=publish:<strøm>:<bruker>:<hemmelighet>

⚠️ Disse lenkene må aldri deles

Publiseringslenka inneholder din egen hemmelighet. Den som har den, kan sende video ut på kanalene dine som om det var deg. Avspillingslenka lar hvem som helst se sendingen din.

Derfor: aldri i et skjermbilde, aldri på strøm, aldri i en offentlig chat, aldri i et kodelager. Dette er den vanligste måten en IRL-streamer mister kontrollen på — lenka blir stående synlig i OBS-vinduet mens sendingen går.

Har det først skjedd: kjør POST /streams/:navn/rotate med én gang, eller trykk Bytt nøkler i portalen. De gamle lenkene dør i samme sekund.

9. Grenser og god skikk

Trenger du hjelp?

Står du fast, eller mangler du et endepunkt for noe du prøver å få til — åpne en supportsak, så svarer vi. Du kan også bruke kontaktskjemaet.

Del aldri nøkkelen din eller en publiseringslenke i en supportsak. Vi trenger dem ikke — de første tegnene i nøkkelen holder for at vi finner den igjen.

← Tilbake til Stream Sky