Zum Hauptinhalt springen
D1 Arena

D1 Arena

Loading...

D1 Arena

Entwickler-API

Gemeinschaft

Entwickler-API

Erstellen Sie Bots, Overlays, Stream-Tools und Integrationen mit D1Arena-Daten.

Authentifizierung

Alle API-Anfragen erfordern einen API-Schlüssel, der im X-API-Key / Authorization: Bearer-Header übergeben wird.

# Example request curl -H "X-API-Key: d1_your_api_key_here" \ https://d1arena.com/api/v1/streams

Um einen API-Schlüssel zu erstellen, gehen Sie zu Entwicklereinstellungen in Ihrem Dashboard. Sie können bis zu 5 Schlüssel haben.

API-Anfragen sind pro API-Schlüssel ratenbegrenzt. Wenn Sie das Limit überschreiten, geben Anfragen 429 Too Many Requests mit einem Retry-After-Header zurück.

Basis-URL

https://d1arena.com/api/v1

Alle Endpunkte geben JSON zurück. Paginierte Endpunkte enthalten ein meta-Objekt mit current_page, last_page und total.

Streams

GET /streams
Aktuelle Livestreams auflisten. Unterstützt Paginierung und Kategoriefilterung.
ParameterTypBeschreibung
category_idintegerFiltern Sie nach Spiel-/Kategorie-ID
limitintegerErgebnisse pro Seite (Standard: 20)
pageintegerSeitenzahl
Antwort
{ "data": [ { "id": 42, "name": "ProGamer99", "user_slug": "progamer99", "profile_img": "profile/abc123.jpg", "stream_title": "Ranked Grind - Road to Champion", "stream_category_id": 5, "is_vertical_stream": false, "platform_tier": "pro" } ], "meta": { "current_page": 1, "last_page": 1, "total": 3 } }
GET /streams/{slug}
Erhalten Sie den Live-Status und die Stream-Details eines einzelnen Streamers nach Benutzername oder Slug.
Antwort
{ "data": { "user_id": 42, "name": "ProGamer99", "slug": "progamer99", "is_live": true, "stream_title": "Ranked Grind", "category_id": 5, "is_vertical": false, "platform_tier": "pro", "profile_img": "profile/abc123.jpg" } }

Kategorien

GET /categories
Listen Sie alle Spielkategorien auf. Unterstützt Suche und Paginierung.
ParameterTypBeschreibung
searchstringFiltern Sie Kategorien nach Namen
limitintegerErgebnisse pro Seite (Standard: 50)
Antwort
{ "data": [ { "id": 5, "name": "Call of Duty", "slug": "call-of-duty", "image": "categories/cod.png" } ], "meta": { "total": 24 } }

Benutzer

GET /users/{slug}
Erhalten Sie das öffentliche Profil und die Wettbewerbsstatistiken eines Spielers nach Benutzername oder Slug.
Antwort
{ "data": { "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99", "profile_img": "profile/abc.jpg", "bio": "Competitive FPS player", "platform_tier": "pro", "is_live": "1", "stream_title": "Ranked", "gold": 3, "silver": 1, "bronze": 0 }, "stats": { "elo_rating": 1842, "total_tournaments": 27, "win_rate": 64.5, "total_earnings": 1250.00 } } }

Clips

GET /clips
Öffentliche Clips auflisten. Unterstützt das Filtern nach Streamer und Kategorie.
ParameterTypBeschreibung
streamer_idintegerFiltern Sie Clips nach der Benutzer-ID des Streamers
category_idintegerFiltern Sie nach Spiel-/Kategorie-ID
limitintegerErgebnisse pro Seite (Standard: 20)
Antwort
{ "data": [ { "id": 99, "streamer_id": 42, "stream_category_id": 5, "title": "Insane 1v4 clutch", "slug": "insane-1v4-clutch-abc", "duration": 28, "view_count": 412, "is_auto_clip": false, "created_at": "2026-03-15T18:30:00.000000Z", "streamer": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 156 } }
GET /clips/{slug}
Holen Sie sich die Details eines einzelnen Clips per Slug.
Antwort
{ "data": { "id": 99, "title": "Insane 1v4 clutch", "slug": "insane-1v4-clutch-abc", "description": "Final round comeback", "duration": 28, "view_count": 412, "streamer": { "id": 42, "name": "ProGamer99" }, "creator": { "id": 55, "name": "ClipMaster" }, "stream_category": { "id": 5, "name": "Call of Duty" } } }

Turniere

GET /tournaments
Turniere auflisten. Unterstützt das Filtern nach Status und Liga.
ParameterTypBeschreibung
statusstringNach Status filtern (z. B. open, in_progress, completed)
league_idintegerNach Liga-ID filtern
limitintegerErgebnisse pro Seite (Standard: 20)
Antwort
{ "data": [ { "id": 15, "title": "Friday Night Frenzy", "tournament_type": "single_elimination", "status": "open", "registration_fee": "5.00", "no_player": 32, "team": 0, "category": { "id": 5, "name": "Call of Duty" }, "start_date": "2026-03-28T20:00:00.000000Z" } ], "meta": { "current_page": 1, "last_page": 2, "total": 24 } }
GET /tournaments/{id}
Erhalten Sie Turnierdetails und Teilnehmerzahlen.
Antwort
{ "data": { "id": 15, "title": "Friday Night Frenzy", "tournament_type": "single_elimination", "status": "open", "registration_fee": "5.00", "no_player": 32, "team": 0 }, "meta": { "participant_count": 18 } }

ELO-Rangliste

GET /elo/leaderboard
Holen Sie sich die ELO-Rangliste. Optional nach Spielkategorie filtern.
ParameterTypBeschreibung
category_idintegerFiltern Sie nach Spiel-/Kategorie-ID
limitintegerAnzahl der Ergebnisse (Standard: 50)
Antwort
{ "data": [ { "rank": 1, "user_id": 42, "name": "ProGamer99", "user_slug": "progamer99", "elo_rating": 2150, "wins": 45, "losses": 12, "win_rate": 78.9, "profile_img": "profile/abc123.jpg" } ], "meta": { "total": 312 } }

Ligen

GET /leagues
Listen Sie Ligen mit optionalen Status- und Kategoriefiltern auf.
ParameterTypBeschreibung
statusstringFiltern Sie nach Ligastatus
category_idintegerFiltern Sie nach Spiel-/Kategorie-ID
limitintegerErgebnisse pro Seite (Standard: 20)
Antwort
{ "data": [ { "id": 3, "name": "Spring 2026 Pro League", "status": "active", "category": { "id": 5, "name": "Call of Duty" }, "total_participants": 48, "start_date": "2026-03-01", "end_date": "2026-05-31" } ], "meta": { "current_page": 1, "last_page": 1, "total": 6 } }
GET /leagues/{id}/standings
Holen Sie sich die Liga-Rangliste (Spieler-Rangliste nach Punkten).
Antwort
{ "data": [ { "id": 1, "points": 2400, "wins": 12, "losses": 3, "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 48 } }

Fehlerantworten

Alle Fehler geben einen konsistenten JSON-Umschlag zurück. Das error-Objekt enthält immer einen maschinenlesbaren code und eine für Menschen lesbare message.

Fehlerantwortformat
{ "success": false, "error": { "code": "not_found", "message": "The requested resource could not be found." } }
Validierungsfehlerformat (422)
{ "success": false, "error": { "code": "validation_error", "message": "The given data was invalid.", "errors": { "category_id": ["The category id must be an integer."], "limit": ["The limit must not be greater than 100."] } } }

Statuscodes

200
Okay — Anfrage erfolgreich. Die Antwort enthält die angeforderten Daten.
400
Schlechte Anfrage — Die Anfrage ist fehlerhaft oder es fehlen erforderliche Parameter. Weitere Informationen finden Sie unter error.message.
401
Nicht autorisiert — Missing or invalid API key. Ensure you're passing a valid key in the X-API-Key header.
403
Verboten — Ihr API-Schlüssel wurde deaktiviert oder es fehlt Ihnen die Berechtigung für diese Ressource. Überprüfen Sie Ihre Entwicklereinstellungen.
404
Nicht gefunden — Die angeforderte Ressource existiert nicht. Überprüfen Sie den Slug, die ID oder den Endpunktpfad.
422
Validierungsfehler — Die Validierung der Anforderungsparameter ist fehlgeschlagen. Das error.errors-Objekt ordnet Feldnamen ihren spezifischen Problemen zu.
429
Begrenzter Preis — Zu viele Anfragen. Der Retry-After-Header gibt an, wie viele Sekunden vor dem erneuten Versuch gewartet werden muss.
500
Interner Fehler — Bei uns ist ein unerwarteter Fehler aufgetreten. Sollte dies weiterhin der Fall sein, Kontaktieren Sie den Support.

Referenz zu Fehlercodes

CodeHTTP-StatusBeschreibung
invalid_api_key401Der API-Schlüssel fehlt, ist fehlerhaft oder existiert nicht
api_key_disabled403Der API-Schlüssel wurde widerrufen oder deaktiviert
not_found404Die angeforderte Ressource konnte nicht gefunden werden
validation_error422Ein oder mehrere Anforderungsparameter sind ungültig
rate_limited429Anforderungsratenlimit für diesen API-Schlüssel überschritten
server_error500Interner Serverfehler – bitte versuchen Sie es erneut oder wenden Sie sich an den Support

Ratenbeschränkungen

API-Anfragen sind pro API-Schlüssel ratenbegrenzt. Wenn Sie das Limit überschreiten, geben Anfragen 429 Too Many Requests mit einem Retry-After-Header zurück.

Grenzen nach Stufe

StufeAnfragen / Minute (Standard)Max Keys
Anlasser (Kostenlos)605
PRO605
Ultimativ605
Partner605

Rate-Limit-Header

API-Anfragen sind pro API-Schlüssel ratenbegrenzt. Wenn Sie das Limit überschreiten, geben Anfragen 429 Too Many Requests mit einem Retry-After-Header zurück.

KopfzeileBeschreibung
Retry-AfterSekunden, die vor dem erneuten Versuch gewartet werden müssen (nur bei 429 Antworten vorhanden)

Best Practices

Tipps, um die Grenzen einzuhalten:
  • Cache responses locally — stream and tournament data doesn't change every second.
  • Abonnieren Sie webhooks für Echtzeitereignisse, anstatt Endpunkte abzufragen.
  • Wenn möglich, bündeln Sie Anfragen – verwenden Sie Filterparameter, um in weniger Anrufen genau das zu erhalten, was Sie benötigen.

Webhooks (EventSub)

Abonnieren Sie Echtzeit-Push-Benachrichtigungen statt Umfragen. Wenn ein Ereignis auftritt, sendet D1Arena einen HTTP-POST mit einer mit HMAC-SHA256 signierten JSON-Nutzlast an Ihre Rückruf-URL.

Einrichtung

Erstellen Sie Webhook-Abonnements in Entwicklereinstellungen. Für jedes Abonnement ist Folgendes erforderlich:

  • Rückruf-URL — Ein öffentlich zugänglicher HTTPS-Endpunkt auf Ihrem Server.
  • Veranstaltungen — Ein oder mehrere Ereignistypen zum Abonnieren.

You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.

Nutzlastformat

Jede Webhook-Zustellung sendet einen JSON-Body mit dieser Struktur:

{ "id": "evt_a1b2c3d4e5f6", "event": "stream.online", "created_at": "2026-03-23T14:30:00Z", "data": { // Event-specific fields (see examples below) } }

Überschriften

Jede Lieferung enthält die folgenden Header für die Weiterleitung und Überprüfung:

KopfzeileBeschreibung
Content-Typeapplication/json
X-D1Arena-EventEreignistyp (z. B. stream.online)
X-D1Arena-SignatureHMAC-SHA256-Hex-Digest des rohen Anforderungstexts
X-D1Arena-Signature-VersionSignaturschlüsselformat: v2 für aktuelle Abonnements oder v1-hashed-secret für ältere Abonnements
X-D1Arena-Delivery-IdEindeutige Zustellungs-UUID – zur Deduplizierung verwenden
X-D1Arena-TimestampUnix-Zeitstempel, wann das Ereignis gesendet wurde

Signaturen überprüfen

Überprüfen Sie immer den X-D1Arena-Signature-Header, bevor Sie einen Webhook verarbeiten. Die Signatur wird als HMAC-SHA256(raw_body, webhook_secret) berechnet.

Für v2-Lieferungen verwenden Sie das whsec_-Geheimnis, das bei der Erstellung des Abonnements angezeigt wurde. Berechnen Sie für eine v1-hashed-secret-Zustellung vor dem Upgrade zunächst SHA256(whsec_secret) aus diesem ursprünglichen Geheimnis und verwenden Sie den resultierenden Kleinbuchstaben-Hex-Digest als HMAC-Schlüssel. Erstellen Sie das Abonnement nach Möglichkeit neu, um zu v2 zu wechseln.

PHP
// Get the raw body and signature header $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_D1ARENA_SIGNATURE'] ?? ''; // Compute expected signature $expected = hash_hmac('sha256', $payload, $webhookSecret); // Constant-time comparison to prevent timing attacks if (!hash_equals($expected, $signature)) { http_response_code(401); exit('Invalid signature'); } $event = json_decode($payload, true);
Node.js
const crypto = require('crypto'); app.post('/webhook', (req, res) => { const payload = req.rawBody; // Ensure raw body is available const signature = req.headers['x-d1arena-signature']; const expected = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(payload) .digest('hex'); if (!crypto.timingSafeEqual( Buffer.from(expected), Buffer.from(signature) )) { return res.status(401).send('Invalid signature'); } const event = JSON.parse(payload); // Process event... res.status(200).send('OK'); });
Python
import hmac, hashlib, json def handle_webhook(request): payload = request.body signature = request.headers.get('X-D1Arena-Signature', '') expected = hmac.new( WEBHOOK_SECRET.encode(), payload, hashlib.sha256 ).hexdigest() if not hmac.compare_digest(expected, signature): return HttpResponse(status=401) event = json.loads(payload) # Process event... return HttpResponse(status=200)

Verfügbare Veranstaltungen

VeranstaltungBeschreibung
stream.onlineEin Streamer ging live
stream.offlineEin Streamer ist offline gegangen
channel.followEin Benutzer ist einem Kanal gefolgt
channel.subscribeNeues Unterstützerabonnement auf einem Kanal
channel.tipEin Tipp wurde an einen Streamer gesendet
tournament.startedEin Turnierspiel hat begonnen
tournament.endedEin Turnier ist zu Ende gegangen
tournament.match.completedEs wurde ein Spielergebnis aufgezeichnet
clip.createdAus einem Livestream wurde ein neuer Clip erstellt
overdrive.startedD1 Frenzy wurde auf einem Kanal gestartet
overdrive.level_upD1 Frenzy ist zum nächsten Level aufgestiegen
overdrive.endedD1 Frenzy abgeschlossen oder abgelaufen

Beispiele für Ereignisnutzlasten

stream.online

{ "id": "evt_a1b2c3d4e5f6", "event": "stream.online", "created_at": "2026-03-23T14:30:00Z", "data": { "user_id": 42, "user_slug": "progamer99", "name": "ProGamer99", "stream_title": "Ranked Grind - Road to Champion", "category_id": 5, "category_name": "Call of Duty", "protocol": "RTMP", "started_at": "2026-03-23T14:30:00Z" } }

stream.offline

{ "id": "evt_f6e5d4c3b2a1", "event": "stream.offline", "created_at": "2026-03-23T17:45:00Z", "data": { "user_id": 42, "user_slug": "progamer99", "duration_seconds": 11700, "vod_id": 281 } }

channel.follow

{ "id": "evt_c1d2e3f4a5b6", "event": "channel.follow", "created_at": "2026-03-23T15:10:00Z", "data": { "follower_id": 88, "follower_slug": "newplayer", "followed_id": 42, "followed_slug": "progamer99" } }

channel.tip

{ "id": "evt_d1e2f3a4b5c6", "event": "channel.tip", "created_at": "2026-03-23T16:20:00Z", "data": { "streamer_id": 42, "streamer_slug": "progamer99", "tipper_id": 55, "tipper_slug": "clipmaster", "amount": "5.00", "currency": "USD", "message": "Great stream!" } }

tournament.match.completed

{ "id": "evt_e1f2a3b4c5d6", "event": "tournament.match.completed", "created_at": "2026-03-23T21:15:00Z", "data": { "tournament_id": 15, "tournament_title": "Friday Night Frenzy", "match_id": 204, "round": 2, "winner": { "id": 42, "slug": "progamer99", "name": "ProGamer99" }, "loser": { "id": 77, "slug": "rival_x", "name": "Rival_X" }, "score": "3-1" } }

clip.created

{ "id": "evt_b1c2d3e4f5a6", "event": "clip.created", "created_at": "2026-03-23T15:45:00Z", "data": { "clip_id": 99, "slug": "insane-1v4-clutch-abc", "title": "Insane 1v4 clutch", "duration": 28, "streamer_id": 42, "streamer_slug": "progamer99", "creator_id": 55, "creator_slug": "clipmaster", "category_id": 5 } }

Zustellungs- und Wiederholungsrichtlinie

VersuchVerzögerungNotizen
1. (anfänglich)SofortWird innerhalb von Sekunden nach dem Ereignis gesendet
2. (Wiederholung)30 SekundenWenn der erste Versuch fehlschlägt oder eine Zeitüberschreitung auftritt
3. (Wiederholung)2 MinutenExponentieller Backoff
4. (endgültig)10 MinutenLetzter Versuch vor der Markierung als fehlgeschlagen
Important: Your endpoint must respond with a 2xx status within 10 Sekunden. Non-2xx responses or timeouts trigger a retry. After 10 aufeinanderfolgende Ausfälle, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Entwicklereinstellungen.

Best Practices

  • Überprüfen Sie immer die Unterschriften vor der Verarbeitung von Nutzlasten, um gefälschte Ereignisse zu verhindern.
  • Verwenden Sie die Delivery-Id für die Deduplizierung — Bei Wiederholungsversuchen wird dieselbe ID gesendet. Speichern Sie daher verarbeitete IDs, um eine Doppelverarbeitung zu vermeiden.
  • Schnell reagieren, asynchron verarbeiten — Geben Sie sofort 200 OK zurück und verarbeiten Sie die Geschäftslogik in einem Hintergrundjob.
  • Verwenden Sie nur HTTPS-Endpunkte — Webhook-URLs müssen TLS verwenden. HTTP-Rückrufe werden abgelehnt.
  • Gehen Sie mit unbekannten Ereignissen elegant um — Es können neue Veranstaltungstypen hinzugefügt werden. Geben Sie „200“ für nicht erkannte Ereignisse und nicht für Fehler zurück.

D1 Raserei

D1 Frenzy wird durch schnelle Tipps und Abonnements ausgelöst, während ein Streamer live ist. Es verläuft über 5 Level mit steigenden Zielen.

GET /api/overdrive/{streamerId}

Holen Sie sich den aktiven D1 Frenzy für einen Streamer. Gibt {"active": false} zurück, wenn keine vorhanden ist.

{ "active": true, "level": 2, "progress": 150, "target": 250, "progress_pct": 60.0, "total_contributions": 8, "total_contributors": 5, "expires_at": "2026-03-22T15:30:00+00:00" }

Level-Ziele

EbenePunkte
1100
2250
3500
41,000
52,000

D1 Raserei — Punkte: Tipp $1 → 100; Abonnement 500 × Stufe. Dauer: 5 Minuten; Abklingzeit: 30 Minuten.

Erweiterungs-SDK

Erstellen Sie benutzerdefinierte Panel- und Overlay-Erweiterungen, die Streamer auf ihren Kanalseiten installieren können. Erweiterungen werden in Sandbox-Iframes ausgeführt und kommunizieren über postMessage mit der Hostseite.

Erste Schritte

  1. Erstellen Sie einen API-Schlüssel in Entwicklereinstellungen.
  2. Erstellen Sie Ihre Erweiterung als eigenständige HTML-Seite, die auf Ihrer Domain gehostet wird (HTTPS erforderlich).
  3. Reichen Sie es zur Überprüfung im Abschnitt Meine Erweiterungen ein.
  4. Nach der Genehmigung können Streamer es über den Extension Marketplace installieren.

Erweiterungstypen

TypStandortVerhalten
panelUnterhalb des Stream-PlayersSichtbar, wenn der Stream live ist. Karte in voller Breite, Standardhöhe 300 Pixel.
overlayÜber den VideoplayerIm Live-Zustand sichtbar. Position/Größe wird vom Streamer über das Overlay-Positionierungstool gesteuert.

postMessage-API

Ihre Erweiterung empfängt beim Laden automatisch Kontextdaten. Implementieren Sie diese Ereignisse:

Verwenden Sie für jede Nachricht den genauen übergeordneten Ursprung D1Arena. Der offizielle SDK leitet diesen Ursprung automatisch von der Einbettungsseite ab und validiert ihn.

Da Erweiterungs-Iframes absichtlich einen undurchsichtigen Sandbox-Ursprung verwenden, authentifiziert der D1Arena-Host genau das registrierte Iframe-Fenster. Der Erweiterungscode muss weiterhin das übergeordnete Fenster und den genauen Ursprung D1Arena authentifizieren, bevor er den Kontext akzeptiert.

1. Signalbereitschaft

var d1ParentOrigin = 'https://d1arena.com'; // Tell the host page your extension is ready for context window.parent.postMessage({ type: 'D1_EXT_READY' }, d1ParentOrigin);

2. Kontext empfangen

window.addEventListener('message', function(e) { if (e.source === window.parent && e.origin === d1ParentOrigin && e.data && e.data.type === 'D1_CONTEXT') { var ctx = e.data.payload; // ctx.channelId - Streamer's user ID // ctx.channelName - Streamer's display name // ctx.channelSlug - Streamer's URL slug // ctx.viewerId - Current viewer's ID (null if not logged in) // ctx.isLive - Whether the stream is currently live } });

3. Aktionen senden (optional)

// Redirect the host page (e.g. for a "Storm" button) window.parent.postMessage({ type: 'D1_EXT_ACTION', action: 'storm', target: 'username-slug' }, d1ParentOrigin);

Berechtigungsbereiche

Geben Sie an, welche Daten Ihre Erweiterung benötigt. Prüfer überprüfen, ob Ihr Code mit Ihren erklärten Berechtigungen übereinstimmt.

UmfangGewährt Zugriff auf
read:streamStreamstatus, Titel, Kategorie
read:viewersAnzahl und Liste der Zuschauer
read:chatChat-Nachrichten (über Pusher-Kanal)
read:clipsKanalclips über /api/clips/{slug}
read:tournamentsAktive Spielinformationen über /api/active-match/{id}
read:channelKanalprofil, Follower, Zeitplan

Sicherheitsanforderungen

Erweiterungen werden in einem Sandbox-Iframe mit sandbox="allow-scripts" ausgeführt. Ihre Erweiterung kann nicht greift auf Cookies und localStorage zu oder stellt authentifizierte Anfragen an d1arena.com.
  • Öffentlich HTTPS erforderlich — Ihre Iframe-URL muss TLS verwenden und darf nur in öffentliche Netzwerkadressen aufgelöst werden.
  • Für Menschen lesbare Quelle — Kein verschleiertes oder nur minimiertes JavaScript. Prüfer müssen Ihren Code lesen können.
  • Kein Laden externer Skripte sofern nicht in Ihrer Einreichung angegeben. CDN-Bibliotheken (jQuery, Chart.js usw.) sind in Ordnung.
  • Keine Datenexfiltration — Erweiterungen dürfen keine Zuschauerdaten an Analyse- oder Trackingdienste Dritter senden.
  • Inhaltsrichtlinie — Keine Werbung, NSFW-Inhalte, Kryptowährungs-Mining oder böswilliges Verhalten.

Überprüfungsprozess

StatusBedeutung
pendingEingereicht, wartet auf Überprüfung durch den Administrator (normalerweise 1–3 Werktage).
approvedGenehmigt und im Extension Marketplace sichtbar.
rejectedMit einem Grund abgelehnt. Beheben Sie Probleme und reichen Sie es erneut ein.
suspendedVorübergehend wegen Richtlinienverstoß entfernt. Kontaktieren Sie den Support.

Versionsaktualisierungen

Um eine genehmigte Erweiterung zu aktualisieren, löschen Sie die aktuelle Version und reichen Sie eine neue mit einer erhöhten Versionsnummer ein. Die neue Version wird erneut überprüft.

Änderungsprotokoll

Verfolgen Sie API-Änderungen und neue Funktionen. Wir folgen der semantischen Versionierung und kündigen wichtige Änderungen mindestens 30 Tage im Voraus an.

v1.0März 2026
  • Erste öffentliche API-Veröffentlichung mit API-Schlüsselauthentifizierung.
  • Streams: Live-Streams auflisten, Streamer-Details per Slug abrufen.
  • Kategorien: Alle Spielkategorien suchen und auflisten.
  • Benutzer: Öffentliche Profile mit Wettbewerbsstatistiken, ELO-Bewertung und Medaillenanzahl.
  • Clips: Clipdetails mit Streamer-/Erstellerinformationen durchsuchen und abrufen.
  • Turniere: Auflisten, nach Status/Liga filtern, Teilnehmerzahlen abrufen.
  • ELO-Bestenliste: Globale und nach Kategorien bewertete Bestenlisten.
  • Ligen: Listen Sie Ligen mit Rangliste und Punkteverteilung auf.
  • D1 Frenzy: Echtzeit-Frenzy-Status für jeden Streamer.
  • Webhooks (EventSub): 12 Ereignistypen, darunter Stream-, Kanal-, Turnier-, Clip- und Frenzy-Ereignisse.
  • Ratenbeschränkungen

Brauchen Sie Hilfe?

Fragen zum API? Kontaktieren Sie uns.