Bygg botar, överlägg, strömningsverktyg och integrationer med D1Arena-data.
Autentisering
Alla API-förfrågningar kräver en API-nyckel som skickas i rubriken X-API-Key / Authorization: Bearer.
För att skapa en API-nyckel, gå till Utvecklarinställningar i din instrumentpanel. Du kan ha upp till 5 nycklar.
429 Too Many Requests med en Retry-After rubrik.
Bas-URL
Alla slutpunkter returnerar JSON. Paginerade slutpunkter inkluderar ett meta-objekt med current_page, last_page och total.
Strömmar
| Parameter | Typ | Beskrivning |
|---|---|---|
category_id | integer | Filtrera efter spel-/kategori-ID |
limit | integer | Resultat per sida (standard: 20) |
page | integer | Sidnummer |
Kategorier
| Parameter | Typ | Beskrivning |
|---|---|---|
search | string | Filtrera kategorier efter namn |
limit | integer | Resultat per sida (standard: 50) |
Användare
Klipp
| Parameter | Typ | Beskrivning |
|---|---|---|
streamer_id | integer | Filtrera klipp efter streamers användar-ID |
category_id | integer | Filtrera efter spel-/kategori-ID |
limit | integer | Resultat per sida (standard: 20) |
Turneringar
| Parameter | Typ | Beskrivning |
|---|---|---|
status | string | Filtrera efter status (t.ex. open, in_progress, completed) |
league_id | integer | Filtrera efter liga-ID |
limit | integer | Resultat per sida (standard: 20) |
ELO-ranking
| Parameter | Typ | Beskrivning |
|---|---|---|
category_id | integer | Filtrera efter spel-/kategori-ID |
limit | integer | Antal resultat (standard: 50) |
Ligor
| Parameter | Typ | Beskrivning |
|---|---|---|
status | string | Filtrera efter ligastatus |
category_id | integer | Filtrera efter spel-/kategori-ID |
limit | integer | Resultat per sida (standard: 20) |
Felsvar
Alla fel returnerar ett konsekvent JSON-kuvert. Objektet error innehåller alltid ett maskinläsbart code och ett mänskligt läsbart message.
Statuskoder
Felkoder referens
| Kod | HTTP-status | Beskrivning |
|---|---|---|
invalid_api_key | 401 | API-nyckeln saknas, är felaktig eller finns inte |
api_key_disabled | 403 | API-nyckeln har återkallats eller inaktiverats |
not_found | 404 | Den begärda resursen kunde inte hittas |
validation_error | 422 | En eller flera begärandeparametrar är ogiltiga |
rate_limited | 429 | Begärans gräns har överskridits för denna API-nyckel |
server_error | 500 | Internt serverfel — försök igen eller kontakta supporten |
Prisgränser
API-förfrågningar är hastighetsbegränsade per API-nyckel. När du överskrider gränsen returnerar förfrågningar 429 Too Many Requests med en Retry-After rubrik.
Gränser efter nivå
| Tier | Förfrågningar / minut (Standard) | Max Keys |
|---|---|---|
| Förrätt (Gratis) | 60 | 5 |
| PRO | 60 | 5 |
| Ultimate | 60 | 5 |
| Partner | 60 | 5 |
Rate Limit Headers
API-förfrågningar är hastighetsbegränsade per API-nyckel. När du överskrider gränsen returnerar förfrågningar 429 Too Many Requests med en Retry-After rubrik.
| Rubrik | Beskrivning |
|---|---|
Retry-After | Sekunder att vänta innan du försöker igen (endast närvarande vid 429 svar) |
Bästa metoder
- Cache responses locally — stream and tournament data doesn't change every second.
- Prenumerera på webhooks för händelser i realtid istället för slutpunkter för polling.
- Batchförfrågningar där det är möjligt – använd filterparametrar för att få exakt vad du behöver i färre samtal.
Webhooks (EventSub)
Prenumerera på push-meddelanden i realtid istället för polling. När en händelse inträffar skickar D1Arena ett HTTP POST till din återuppringnings-URL med en JSON-nyttolast signerad med HMAC-SHA256.
Inställning
Skapa webhook-prenumerationer i Utvecklarinställningar. Varje prenumeration kräver:
- Callback URL — En offentligt tillgänglig HTTPS-slutpunkt på din server.
- Händelser — En eller flera evenemangstyper att prenumerera på.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Nyttolastformat
Varje webhook-leverans skickar en JSON-kropp med denna struktur:
Rubriker
Varje leverans innehåller följande rubriker för routing och verifiering:
| Rubrik | Beskrivning |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Händelsetyp (t.ex. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 hexadecimal sammanfattning av den råa begärandekroppen |
X-D1Arena-Signature-Version | Signeringsnyckelformat: v2 för nuvarande prenumerationer eller v1-hashed-secret för äldre prenumerationer |
X-D1Arena-Delivery-Id | Unikt leverans-UUID — använd för deduplicering |
X-D1Arena-Timestamp | Unix-tidsstämpel för när händelsen skickades |
Verifiera signaturer
Verifiera alltid X-D1Arena-Signature-huvudet innan du bearbetar en webhook. Signaturen beräknas som HMAC-SHA256(raw_body, webhook_secret).
För v2 leveranser, använd hemligheten whsec_ som visades när prenumerationen skapades. För en föruppgradering av v1-hashed-secret-leverans, beräkna först SHA256(whsec_secret) från den ursprungliga hemligheten och använd den resulterande gemena hexadecimalen som HMAC-nyckeln. Återskapa prenumerationen när det är praktiskt möjligt att flytta till v2.
Tillgängliga evenemang
| Händelse | Beskrivning |
|---|---|
| stream.online | En streamer gick live |
| stream.offline | En streamer gick offline |
| channel.follow | En användare följde en kanal |
| channel.subscribe | Ny supporterprenumeration på en kanal |
| channel.tip | Ett tips skickades till en streamer |
| tournament.started | Ett turneringsmatch har börjat |
| tournament.ended | En turnering har avslutats |
| tournament.match.completed | Ett matchresultat registrerades |
| clip.created | Ett nytt klipp skapades från en livestream |
| overdrive.started | D1 Frenzy startade på en kanal |
| overdrive.level_up | D1 Frenzy avancerade till nästa nivå |
| overdrive.ended | D1 Frenzy avslutad eller förfallit |
Exempel på evenemangsnyttolast
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Policy för leverans och försök igen
| Försök | Fördröjning | Anteckningar |
|---|---|---|
| 1:a (initial) | Omedelbart | Skickas inom några sekunder efter händelsen |
| 2:a (försök igen) | 30 sekunder | Om första försöket misslyckas eller timeout |
| 3:a (försök igen) | 2 minuter | Exponentiell backoff |
| 4:a (final) | 10 minuter | Sista försöket innan markeringen som misslyckad |
2xx status within 10 sekunder. Non-2xx responses or timeouts trigger a retry. After 10 misslyckanden i rad, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Utvecklarinställningar.
Bästa metoder
- Verifiera alltid signaturer innan du bearbetar nyttolaster för att förhindra falska händelser.
- Använd Delivery-Id för deduplicering — återförsök skickar samma ID, så lagra bearbetade ID:n för att undvika dubbelbearbetning.
- Svara snabbt, bearbeta asynkront — returnera
200 OKomedelbart och hantera affärslogik i ett bakgrundsjobb. - Använd endast HTTPS-slutpunkter — webhook-URL:er måste använda TLS. HTTP-återuppringningar avvisas.
- Hantera okända händelser graciöst — nya händelsetyper kan läggas till. Returnera
200för okända händelser snarare än fel.
D1 Frenzy
D1 Frenzy utlöses av snabba tips och prenumerationer medan en streamer är live. Den går vidare genom 5 nivåer med ökande mål.
GET /api/overdrive/{streamerId}
Skaffa den aktiva D1 Frenzy för en streamer. Returnerar {"active": false} om ingen.
Nivåmål
| Nivå | Poäng |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Frenzy — Poäng: Tips $1 → 100; Prenumeration 500 × Tier. Varaktighet: 5 Protokoll; Nedkylning: 30 Protokoll.
Tilläggs-SDK
Bygg anpassade panel- och överlagringstillägg som streamers kan installera på sina kanalsidor. Tillägg körs i sandlådeförsedda iframes och kommunicerar med värdsidan via postMessage.
Komma igång
- Skapa en API-nyckel i Utvecklarinställningar.
- Bygg ditt tillägg som en fristående HTML-sida på din domän (HTTPS krävs).
- Skicka in den för granskning i avsnittet Mina tillägg.
- När de har godkänts kan streamers installera den från Extension Marketplace.
Tilläggstyper
| Typ | Plats | Beteende |
|---|---|---|
panel | Nedanför streamspelaren | Synlig när streamen är live. Kort i full bredd, 300 px standardhöjd. |
overlay | Över videospelaren | Synlig när den är live. Position/storlek kontrolleras av streamern via överläggspositioneringsverktyget. |
postMessage API
Ditt tillägg tar emot kontextdata automatiskt när det läses in. Genomför dessa händelser:
Använd det exakta D1Arena föräldraursprunget för varje meddelande. Den officiella SDK härleder och validerar detta ursprung från inbäddningssidan automatiskt.
Eftersom tilläggs-iframes avsiktligt använder ett ogenomskinligt sandlådeursprung, autentiserar D1Arena-värden det exakta registrerade iframe-fönstret. Tilläggskoden måste fortfarande autentisera det överordnade fönstret och det exakta D1Arena ursprunget innan sammanhanget accepteras.
1. Signalberedskap
2. Ta emot sammanhang
3. Skicka åtgärder (valfritt)
Tillståndsomfång
Deklarera vilken data ditt tillägg behöver. Granskare verifierar att din kod matchar dina angivna behörigheter.
| Omfattning | Ger tillgång till |
|---|---|
read:stream | Stream status, titel, kategori |
read:viewers | Antal tittare och lista |
read:chat | Chattmeddelanden (via Pusher-kanal) |
read:clips | Kanalklipp via /api/clips/{slug} |
read:tournaments | Aktiv matchinformation via /api/active-match/{id} |
read:channel | Kanalprofil, följare, schema |
Säkerhetskrav
sandbox="allow-scripts". Ditt tillägg kan inte får åtkomst till cookies, localStorage eller gör autentiserade förfrågningar till d1arena.com.
- Offentlig HTTPS krävs — Din iframe-URL måste använda TLS och endast lösas till offentliga nätverksadresser.
- Människoläsbar källa — Inget fördunklat eller förminskat JavaScript. Granskare måste kunna läsa din kod.
- Inget externt skript laddas om det inte anges i din inlämning. CDN-bibliotek (jQuery, Chart.js, etc.) är bra.
- Ingen dataexfiltrering — Tillägg får inte skicka tittardata till tredjepartsanalyser eller spårningstjänster.
- Innehållspolicy — Inga annonser, NSFW-innehåll, brytning av kryptovalutor eller skadligt beteende.
Granskningsprocess
| Status | Mening |
|---|---|
| pending | Inskickad, väntar på admingranskning (vanligtvis 1–3 arbetsdagar). |
| approved | Godkänd och synlig på Extension Marketplace. |
| rejected | Avvisades med en anledning. Åtgärda problem och skicka in igen. |
| suspended | Tillfälligt borttagen på grund av policyöverträdelse. Kontakta supporten. |
Versionsuppdateringar
För att uppdatera ett godkänt tillägg, ta bort den nuvarande versionen och skicka in en ny med ett ökat versionsnummer. Den nya versionen går igenom granskning igen.
Ändringslogg
Spåra API-ändringar och nya funktioner. Vi följer semantisk versionering och tillkännager brytande ändringar minst 30 dagar i förväg.
- Initial offentlig API-version med API-nyckelautentisering.
- Strömmar: Lista liveströmmar, få information om streamer efter slug.
- Kategorier: Sök och lista alla spelkategorier.
- Användare: Offentliga profiler med konkurrensstatistik, ELO-betyg och antal medaljer.
- Klipp: Bläddra och hämta klippdetaljer med information om streamer/skapare.
- Turneringar: Lista, filtrera efter status/liga, få deltagare.
- ELO Leaderboard: Globala och per kategori rankade topplistor.
- Ligor: Lista ligor med ställning och poänguppdelning.
- D1 Frenzy: Frenzy-status i realtid för alla streamare.
- Webhooks (EventSub): 12 evenemangstyper inklusive stream, kanal, turnering, klipp och Frenzy-evenemang.
- Prisgränser
Behöver du hjälp?
Frågor om API? Kontakta oss.