Bygg roboter, overlegg, strømmeverktøy og integrasjoner med D1Arena-data.
Autentisering
Alle API-forespørsler krever en API-nøkkel som sendes i X-API-Key / Authorization: Bearer-overskriften.
For å opprette en API-nøkkel, gå til Utviklerinnstillinger i dashbordet. Du kan ha opptil 5 nøkler.
429 Too Many Requests med en Retry-After-overskrift.
Base URL
Alle endepunkter returnerer JSON. Paginerte endepunkter inkluderer et meta-objekt med current_page, last_page og total.
Strømmer
| Parameter | Type | Beskrivelse |
|---|---|---|
category_id | integer | Filtrer etter spill-/kategori-ID |
limit | integer | Resultater per side (standard: 20) |
page | integer | Sidetall |
Kategorier
| Parameter | Type | Beskrivelse |
|---|---|---|
search | string | Filtrer kategorier etter navn |
limit | integer | Resultater per side (standard: 50) |
Brukere
Klipp
| Parameter | Type | Beskrivelse |
|---|---|---|
streamer_id | integer | Filtrer klipp etter streamerens bruker-ID |
category_id | integer | Filtrer etter spill-/kategori-ID |
limit | integer | Resultater per side (standard: 20) |
Turneringer
| Parameter | Type | Beskrivelse |
|---|---|---|
status | string | Filtrer etter status (f.eks. open, in_progress, completed) |
league_id | integer | Filtrer etter liga-ID |
limit | integer | Resultater per side (standard: 20) |
ELO-rangeringer
| Parameter | Type | Beskrivelse |
|---|---|---|
category_id | integer | Filtrer etter spill-/kategori-ID |
limit | integer | Antall resultater (standard: 50) |
Ligaer
| Parameter | Type | Beskrivelse |
|---|---|---|
status | string | Filtrer etter ligastatus |
category_id | integer | Filtrer etter spill-/kategori-ID |
limit | integer | Resultater per side (standard: 20) |
Feilsvar
Alle feil returnerer en konsistent JSON-konvolutt. error-objektet inneholder alltid en maskinlesbar code og en menneskelesbar message.
Statuskoder
Feilkodereferanse
| Kode | HTTP-status | Beskrivelse |
|---|---|---|
invalid_api_key | 401 | API-nøkkelen mangler, er feil utformet eller eksisterer ikke |
api_key_disabled | 403 | API-nøkkelen er tilbakekalt eller deaktivert |
not_found | 404 | Den forespurte ressursen ble ikke funnet |
validation_error | 422 | Én eller flere forespørselsparametere er ugyldige |
rate_limited | 429 | Forespørselshastighetsgrensen er overskredet for denne API-nøkkelen |
server_error | 500 | Intern serverfeil – prøv på nytt eller kontakt support |
Satsgrenser
API-forespørsler er hastighetsbegrenset per API-nøkkel. Når du overskrider grensen, returnerer forespørsler 429 Too Many Requests med en Retry-After-overskrift.
Grenser etter nivå
| Nivå | Forespørsler / minutt (Standard) | Max Keys |
|---|---|---|
| Starter (Gratis) | 60 | 5 |
| PRO | 60 | 5 |
| Ultimate | 60 | 5 |
| Partner | 60 | 5 |
Rate Limit Headers
API-forespørsler er hastighetsbegrenset per API-nøkkel. Når du overskrider grensen, returnerer forespørsler 429 Too Many Requests med en Retry-After-overskrift.
| Overskrift | Beskrivelse |
|---|---|
Retry-After | Sekunder å vente før du prøver på nytt (bare til stede på 429 svar) |
Beste praksis
- Cache responses locally — stream and tournament data doesn't change every second.
- Abonner på webhooks for sanntidshendelser i stedet for avstemningsendepunkter.
- Batchforespørsler der det er mulig – bruk filterparametere for å få nøyaktig det du trenger i færre anrop.
Webhooks (EventSub)
Abonner på push-varsler i sanntid i stedet for polling. Når en hendelse inntreffer, sender D1Arena en HTTP POST til din tilbakeringings-URL med en JSON-nyttelast signert med HMAC-SHA256.
Oppsett
Opprett webhook-abonnementer i Utviklerinnstillinger. Hvert abonnement krever:
- Tilbakeringings-URL — Et offentlig tilgjengelig HTTPS-endepunkt på serveren din.
- Hendelser — En eller flere hendelsestyper å abonnere på.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Nyttelastformat
Hver webhook-levering sender en JSON-kropp med denne strukturen:
Overskrifter
Hver levering inkluderer følgende overskrifter for ruting og verifisering:
| Overskrift | Beskrivelse |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Hendelsestype (f.eks. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 hex-sammendrag av den rå forespørselsteksten |
X-D1Arena-Signature-Version | Signeringsnøkkelformat: v2 for nåværende abonnementer eller v1-hashed-secret for eldre abonnementer |
X-D1Arena-Delivery-Id | Unik leverings-UUID — bruk for deduplisering |
X-D1Arena-Timestamp | Unix-tidsstempel for når hendelsen ble sendt |
Verifisering av signaturer
Bekreft alltid X-D1Arena-Signature-overskriften før du behandler en webhook. Signaturen beregnes som HMAC-SHA256(raw_body, webhook_secret).
For v2-leveranser, bruk hemmeligheten whsec_ som ble vist da abonnementet ble opprettet. For en forhåndsoppgradering av v1-hashed-secret-levering, beregner du først SHA256(whsec_secret) fra den opprinnelige hemmeligheten og bruker den resulterende sekskantede bokstaven med små bokstaver som HMAC-nøkkelen. Gjenopprett abonnementet når det er praktisk mulig å flytte til v2.
Tilgjengelige arrangementer
| Hendelse | Beskrivelse |
|---|---|
| stream.online | En streamer gikk direkte |
| stream.offline | En streamer ble offline |
| channel.follow | En bruker fulgte en kanal |
| channel.subscribe | Nytt supporterabonnement på en kanal |
| channel.tip | Et tips ble sendt til en streamer |
| tournament.started | Et turneringsspill har begynt |
| tournament.ended | En turnering er avsluttet |
| tournament.match.completed | Et kampresultat ble registrert |
| clip.created | Et nytt klipp ble opprettet fra en direktesending |
| overdrive.started | D1 Frenzy startet på en kanal |
| overdrive.level_up | D1 Frenzy avanserte til neste nivå |
| overdrive.ended | D1 Frenzy fullført eller utløpt |
Eksempler på begivenhetsnyttelast
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Retningslinjer for levering og forsøk på nytt
| Forsøk | Forsinkelse | Notater |
|---|---|---|
| 1. (initial) | Umiddelbar | Sendt innen sekunder etter hendelsen |
| 2. (forsøk på nytt) | 30 sekunder | Hvis første forsøk mislykkes eller går ut |
| 3. (forsøk på nytt) | 2 minutter | Eksponentiell tilbakeslag |
| 4. (finale) | 10 minutter | Siste forsøk før merking som mislykket |
2xx status within 10 sekunder. Non-2xx responses or timeouts trigger a retry. After 10 feil på rad, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Utviklerinnstillinger.
Beste praksis
- Kontroller alltid signaturer før du behandler nyttelast for å forhindre falske hendelser.
- Bruk Delivery-Id for deduplisering — gjenforsøk sender samme ID, så lagre behandlede IDer for å unngå dobbeltbehandling.
- Svar raskt, behandle asynkront — returner
200 OKumiddelbart og håndtere forretningslogikk i en bakgrunnsjobb. - Bruk bare HTTPS-endepunkter — webhook-URLer må bruke TLS. HTTP-tilbakekalling avvises.
- Håndter ukjente hendelser elegant — nye hendelsestyper kan legges til. Returner
200for ukjente hendelser i stedet for feil.
D1 Vanvidd
D1 Frenzy utløses av raske tips og abonnementer mens en streamer er live. Den går gjennom 5 nivåer med økende mål.
GET /api/overdrive/{streamerId}
Få den aktive D1 Frenzy for en streamer. Returnerer {"active": false} hvis ingen.
Nivåmål
| Nivå | Poeng |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Vanvidd — Poeng: Tips $1 → 100; Abonnement 500 × Nivå. Varighet: 5 Minutter; Nedkjøling: 30 Minutter.
SDK for utvidelse
Bygg tilpassede panel- og overleggsutvidelser som streamere kan installere på kanalsidene sine. Utvidelser kjører i sandboxed iframes og kommuniserer med vertssiden via postMessage.
Komme i gang
- Opprett en API-nøkkel i Utviklerinnstillinger.
- Bygg utvidelsen din som en frittstående HTML-side på domenet ditt (HTTPS kreves).
- Send den inn for vurdering i Mine utvidelser-delen.
- Når den er godkjent, kan streamere installere den fra Extension Marketplace.
Utvidelsestyper
| Type | Beliggenhet | Atferd |
|---|---|---|
panel | Under stream-spilleren | Synlig når strømmen er direkte. Kort i full bredde, 300 px standardhøyde. |
overlay | Over videospilleren | Synlig når live. Posisjon/størrelse kontrollert av streameren via overleggsposisjoneringsverktøyet. |
postMessage API
Utvidelsen din mottar kontekstdata automatisk når den lastes inn. Implementer disse hendelsene:
Bruk den nøyaktige D1Arena overordnede opprinnelsen for hver melding. Den offisielle SDK utleder og validerer denne opprinnelsen fra innbyggingssiden automatisk.
Fordi utvidelses-iframes med vilje bruker en ugjennomsiktig sandkasse-opprinnelse, autentiserer D1Arena-verten det eksakte registrerte iframe-vinduet. Utvidelseskoden må fortsatt autentisere det overordnede vinduet og den nøyaktige D1Arena-opprinnelsen før den aksepterer kontekst.
1. Signalberedskap
2. Motta kontekst
3. Send handlinger (valgfritt)
Tillatelsesomfang
Erklær hvilke data utvidelsen din trenger. Anmeldere bekrefter at koden din samsvarer med de deklarerte tillatelsene dine.
| Omfang | Gir tilgang til |
|---|---|
read:stream | Strømstatus, tittel, kategori |
read:viewers | Seertall og liste |
read:chat | Chatmeldinger (via pusher-kanal) |
read:clips | Kanalklipp via /api/clips/{slug} |
read:tournaments | Aktiv kampinformasjon via /api/active-match/{id} |
read:channel | Kanalprofil, følgere, tidsplan |
Sikkerhetskrav
sandbox="allow-scripts". Din utvidelse kan ikke får tilgang til informasjonskapsler, localStorage, eller gjør autentiserte forespørsler til d1arena.com.
- Offentlig HTTPS kreves — Din iframe-URL må bruke TLS og løses kun til offentlige nettverksadresser.
- Menneskelig lesbar kilde — Ingen skjult eller minifisert JavaScript. Anmeldere må kunne lese koden din.
- Ingen ekstern skript lasting med mindre det er oppgitt i innleveringen. CDN-biblioteker (jQuery, Chart.js, etc.) er fine.
- Ingen dataeksfiltrering — Utvidelser må ikke sende seerdata til tredjeparts analyse- eller sporingstjenester.
- Innholdspolicy — Ingen annonser, NSFW-innhold, utvinning av kryptovaluta eller ondsinnet oppførsel.
Gjennomgangsprosess
| Status | Mening |
|---|---|
| pending | Sendt inn, venter på administratorvurdering (vanligvis 1–3 virkedager). |
| approved | Godkjent og synlig i Extension Marketplace. |
| rejected | Avvist med en grunn. Løs problemer og send inn på nytt. |
| suspended | Midlertidig fjernet på grunn av brudd på retningslinjene. Kontakt support. |
Versjonsoppdateringer
For å oppdatere en godkjent utvidelse, slett gjeldende versjon og send inn en ny med et økt versjonsnummer. Den nye versjonen går gjennom gjennomgang igjen.
Endringslogg
Spor API-endringer og nye funksjoner. Vi følger semantisk versjonering og kunngjør bruddendringer minst 30 dager i forveien.
- Innledende offentlig API-utgivelse med API-nøkkelautentisering.
- Strømmer: List opp direktesendinger, få streamerdetaljer etter slug.
- Kategorier: Søk og liste opp alle spillkategorier.
- Brukere: Offentlige profiler med konkurransestatistikk, ELO-rangering og antall medaljer.
- Klipp: Bla gjennom og hent klippdetaljer med informasjon om streamer/skaper.
- Turneringer: List, filtrer etter status/liga, få deltakerantallet.
- ELO-poengoversikt: Globale og rangerte ledertavler per kategori.
- Ligaer: Vis ligaer med plasseringer og poengfordelinger.
- D1 Frenzy: Sanntids Frenzy-status for enhver streamer.
- Webhooks (EventSub): 12 hendelsestyper inkludert strømme, kanal, turneringer, klipp og Frenzy-arrangementer.
- Satsgrenser
Trenger du hjelp?
Spørsmål om API? Kontakt oss.