Bina bot, tindanan, alatan strim dan penyepaduan dengan data D1Arena.
Pengesahan
Semua permintaan API memerlukan kunci API yang dihantar dalam pengepala X-API-Key / Authorization: Bearer.
Untuk membuat kunci API, pergi ke Tetapan Pembangun dalam papan pemuka anda. Anda boleh mempunyai sehingga 5 kunci.
429 Too Many Requests dengan pengepala Retry-After.
URL asas
Semua titik akhir mengembalikan JSON. Titik akhir bernombor termasuk objek meta dengan current_page, last_page dan total.
Aliran
| Parameter | taip | Penerangan |
|---|---|---|
category_id | integer | Tapis mengikut ID permainan/kategori |
limit | integer | Keputusan setiap halaman (lalai: 20) |
page | integer | Nombor halaman |
Kategori
| Parameter | taip | Penerangan |
|---|---|---|
search | string | Tapis kategori mengikut nama |
limit | integer | Hasil setiap halaman (lalai: 50) |
Pengguna
Klip
| Parameter | taip | Penerangan |
|---|---|---|
streamer_id | integer | Tapis klip mengikut ID pengguna penstrim |
category_id | integer | Tapis mengikut ID permainan/kategori |
limit | integer | Keputusan setiap halaman (lalai: 20) |
Kejohanan
| Parameter | taip | Penerangan |
|---|---|---|
status | string | Tapis mengikut status (cth. open, in_progress, completed) |
league_id | integer | Tapis mengikut ID liga |
limit | integer | Keputusan setiap halaman (lalai: 20) |
Kedudukan ELO
| Parameter | taip | Penerangan |
|---|---|---|
category_id | integer | Tapis mengikut ID permainan/kategori |
limit | integer | Bilangan keputusan (lalai: 50) |
Liga
| Parameter | taip | Penerangan |
|---|---|---|
status | string | Tapis mengikut status liga |
category_id | integer | Tapis mengikut ID permainan/kategori |
limit | integer | Keputusan setiap halaman (lalai: 20) |
Jawapan Ralat
Semua ralat mengembalikan sampul JSON yang konsisten. Objek error sentiasa mengandungi code yang boleh dibaca oleh mesin dan message yang boleh dibaca oleh manusia.
Kod Status
Rujukan Kod Ralat
| Kod | Status HTTP | Penerangan |
|---|---|---|
invalid_api_key | 401 | Kunci API tiada, salah bentuk atau tidak wujud |
api_key_disabled | 403 | Kunci API telah dibatalkan atau dilumpuhkan |
not_found | 404 | Sumber yang diminta tidak ditemui |
validation_error | 422 | Satu atau lebih parameter permintaan adalah tidak sah |
rate_limited | 429 | Had kadar permintaan melebihi had untuk kunci API ini |
server_error | 500 | Ralat pelayan dalaman — sila cuba semula atau hubungi sokongan |
Had Kadar
Permintaan API adalah terhad pada setiap kunci API. Apabila anda melebihi had, permintaan mengembalikan 429 Too Many Requests dengan pengepala Retry-After.
Had mengikut Peringkat
| Peringkat | Permintaan / Minit (Lalai) | Kekunci Maks |
|---|---|---|
| Pemula (Percuma) | 60 | 5 |
| PRO | 60 | 5 |
| muktamad | 60 | 5 |
| rakan kongsi | 60 | 5 |
Pengepala Had Kadar
Permintaan API adalah terhad pada setiap kunci API. Apabila anda melebihi had, permintaan mengembalikan 429 Too Many Requests dengan pengepala Retry-After.
| Pengepala | Penerangan |
|---|---|
Retry-After | Beberapa saat untuk menunggu sebelum mencuba semula (hanya hadir pada 429 respons) |
Amalan Terbaik
- Cache responses locally — stream and tournament data doesn't change every second.
- Langgan webhooks untuk acara masa nyata dan bukannya titik akhir pengundian.
- Permintaan kelompok jika boleh — gunakan parameter penapis untuk mendapatkan apa yang anda perlukan dengan tepat dalam lebih sedikit panggilan.
Webhooks (EventSub)
Langgan pemberitahuan tolak masa nyata dan bukannya pengundian. Apabila peristiwa berlaku, D1Arena menghantar HTTP POST ke URL panggil balik anda dengan muatan JSON yang ditandatangani dengan HMAC-SHA256.
Persediaan
Buat langganan webhook dalam Tetapan Pembangun. Setiap langganan memerlukan:
- URL panggilan balik — Titik akhir HTTPS yang boleh diakses secara umum pada pelayan anda.
- Peristiwa — Satu atau lebih jenis acara untuk dilanggan.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Format Muatan
Setiap penghantaran webhook menghantar badan JSON dengan struktur ini:
Pengepala
Setiap penghantaran termasuk pengepala berikut untuk penghalaan dan pengesahan:
| Pengepala | Penerangan |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Jenis acara (cth. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 hex pencernaan badan permintaan mentah |
X-D1Arena-Signature-Version | Format kunci tandatangan: v2 untuk langganan semasa atau v1-hashed-secret untuk langganan lama |
X-D1Arena-Delivery-Id | UUID penghantaran unik — gunakan untuk penduadua |
X-D1Arena-Timestamp | Cap masa Unix apabila acara itu dihantar |
Mengesahkan Tandatangan
Sentiasa sahkan pengepala X-D1Arena-Signature sebelum memproses webhook. Tandatangan dikira sebagai HMAC-SHA256(raw_body, webhook_secret).
Untuk penghantaran v2, gunakan rahsia whsec_ yang ditunjukkan semasa langganan dibuat. Untuk penghantaran pra-naik taraf v1-hashed-secret, mula-mula hitung SHA256(whsec_secret) daripada rahsia asal itu dan gunakan ringkasan hex huruf kecil yang terhasil sebagai kekunci HMAC. Buat semula langganan apabila praktikal untuk berpindah ke v2.
Acara yang Tersedia
| Peristiwa | Penerangan |
|---|---|
| stream.online | Penstrim telah bersiaran langsung |
| stream.offline | Penstrim pergi ke luar talian |
| channel.follow | Seorang pengguna mengikuti saluran |
| channel.subscribe | Langganan penyokong baharu pada saluran |
| channel.tip | Petua telah dihantar ke strim |
| tournament.started | Permainan perlawanan kejohanan telah bermula |
| tournament.ended | Satu kejohanan telah berakhir |
| tournament.match.completed | Keputusan perlawanan direkodkan |
| clip.created | Klip baharu telah dibuat daripada strim langsung |
| overdrive.started | D1 Frenzy bermula pada saluran |
| overdrive.level_up | D1 Frenzy mara ke peringkat seterusnya |
| overdrive.ended | D1 Frenzy selesai atau tamat tempoh |
Contoh Muatan Peristiwa
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Polisi Penghantaran & Cuba Semula
| Percubaan | kelewatan | Nota |
|---|---|---|
| pertama (awal) | serta merta | Dihantar dalam beberapa saat dari acara |
| ke-2 (cuba semula) | 30 saat | Jika percubaan pertama gagal atau tamat masa |
| ke-3 (cuba semula) | 2 minit | Pengunduran eksponen |
| ke-4 (akhir) | 10 minit | Percubaan terakhir sebelum menandakan sebagai gagal |
2xx status within 10 saat. Non-2xx responses or timeouts trigger a retry. After 10 kegagalan berturut-turut, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Tetapan Pembangun.
Amalan Terbaik
- Sentiasa sahkan tandatangan sebelum memproses muatan untuk mengelakkan peristiwa palsu.
- Gunakan Id Penghantaran untuk penyahduplikasian — cuba semula menghantar ID yang sama, jadi simpan ID yang diproses untuk mengelakkan pemprosesan dua kali.
- Balas dengan cepat, proses secara tidak segerak — pulangkan
200 OKserta-merta dan kendalikan logik perniagaan dalam kerja latar belakang. - Gunakan titik akhir HTTPS sahaja — URL webhook mesti menggunakan TLS. Panggilan balik HTTP ditolak.
- Mengendalikan peristiwa yang tidak diketahui dengan anggun — jenis acara baharu boleh ditambah. Kembalikan
200untuk peristiwa yang tidak dikenali dan bukannya kesilapan.
D1 Kegilaan
D1 Frenzy dicetuskan oleh petua dan langganan pantas semasa strim disiarkan secara langsung. Ia berkembang melalui 5 peringkat dengan sasaran yang semakin meningkat.
GET /api/overdrive/{streamerId}
Dapatkan D1 Frenzy aktif untuk strim. Mengembalikan {"active": false} jika tiada.
Sasaran Tahap
| Tahap | mata |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Kegilaan — mata: Petua $1 → 100; Langganan 500 × Peringkat. Tempoh: 5 minit; Cooldown: 30 minit.
SDK sambungan
Bina panel tersuai dan pelanjutan tindanan yang boleh dipasang oleh penstrim pada halaman saluran mereka. Sambungan dijalankan dalam iframe kotak pasir dan berkomunikasi dengan halaman hos melalui postMessage.
Bermula
- Buat kunci API dalam Tetapan Pembangun.
- Bina sambungan anda sebagai halaman HTML kendiri yang dihoskan pada domain anda (HTTPS diperlukan).
- Serahkannya untuk semakan dalam bahagian Sambungan Saya.
- Setelah diluluskan, streamer boleh memasangnya daripada Extension Marketplace.
Jenis Sambungan
| taip | Lokasi | Tingkah laku |
|---|---|---|
panel | Di bawah pemain strim | Kelihatan apabila strim disiarkan secara langsung. Kad lebar penuh, ketinggian lalai 300px. |
overlay | Atas pemain video | Kelihatan semasa hidup. Kedudukan/saiz dikawal oleh penstrim melalui alat penentududukan tindanan. |
API postMessage
Sambungan anda menerima data konteks secara automatik apabila ia dimuatkan. Laksanakan acara ini:
Gunakan D1Arena asal induk yang tepat untuk setiap mesej. SDK rasmi memperoleh dan mengesahkan asal ini daripada halaman pembenaman secara automatik.
Oleh kerana iframe sambungan dengan sengaja menggunakan asal kotak pasir legap, hos D1Arena mengesahkan tetingkap iframe berdaftar yang tepat. Kod sambungan mesti masih mengesahkan tetingkap induk dan asal D1Arena yang tepat sebelum menerima konteks.
1. Kesediaan isyarat
2. Terima konteks
3. Hantar tindakan (pilihan)
Skop Kebenaran
Isytiharkan data yang diperlukan oleh sambungan anda. Penyemak mengesahkan kod anda sepadan dengan kebenaran anda yang diisytiharkan.
| Skop | Memberi Akses Kepada |
|---|---|
read:stream | Status strim, tajuk, kategori |
read:viewers | Kiraan dan senarai penonton |
read:chat | Mesej sembang (melalui saluran Pusher) |
read:clips | Klip saluran melalui /api/clips/{slug} |
read:tournaments | Maklumat perlawanan aktif melalui /api/active-match/{id} |
read:channel | Profil saluran, pengikut, jadual |
Keperluan Keselamatan
sandbox="allow-scripts". Sambungan anda tidak boleh mengakses kuki, localStorage atau membuat permintaan yang disahkan kepada d1arena.com.
- Awam HTTPS diperlukan — URL iframe anda mesti menggunakan TLS dan menyelesaikan hanya kepada alamat rangkaian awam.
- Sumber yang boleh dibaca manusia — Tiada JavaScript yang dikelirukan atau diperkecilkan sahaja. Penyemak mesti boleh membaca kod anda.
- Tiada pemuatan skrip luaran melainkan diisytiharkan dalam penyerahan anda. Perpustakaan CDN (jQuery, Chart.js, dll.) adalah baik.
- Tiada exfiltration data — Sambungan tidak boleh menghantar data penonton kepada analitis atau perkhidmatan penjejakan pihak ketiga.
- Dasar kandungan — Tiada iklan, kandungan NSFW, perlombongan mata wang kripto atau tingkah laku berniat jahat.
Proses Semakan
| Status | Maknanya |
|---|---|
| pending | Diserahkan, menunggu semakan pentadbir (biasanya 1-3 hari perniagaan). |
| approved | Diluluskan dan boleh dilihat di Extension Marketplace. |
| rejected | Ditolak dengan alasan. Selesaikan isu dan serahkan semula. |
| suspended | Dialih keluar buat sementara waktu kerana melanggar dasar. Hubungi sokongan. |
Kemas Kini Versi
Untuk mengemas kini sambungan yang diluluskan, padamkan versi semasa dan serahkan yang baharu dengan nombor versi yang ditambah. Versi baharu melalui semakan semula.
Changelog
Jejaki perubahan API dan ciri baharu. Kami mengikuti versi semantik dan mengumumkan perubahan pecah sekurang-kurangnya 30 hari lebih awal.
- Keluaran API awam awal dengan pengesahan kunci API.
- Strim: Senaraikan strim langsung, dapatkan butiran penstrim mengikut slug.
- Kategori: Cari dan senaraikan semua kategori permainan.
- Pengguna: Profil awam dengan statistik kompetitif, penilaian ELO dan kiraan pingat.
- Klip: Semak imbas dan dapatkan butiran klip dengan maklumat penstrim/pencipta.
- Kejohanan: Senaraikan, tapis mengikut status/liga, dapatkan kiraan peserta.
- Papan Pendahulu ELO: Papan pendahulu kedudukan global dan setiap kategori.
- Liga: Senaraikan liga dengan kedudukan dan pecahan mata.
- D1 Frenzy: Status Frenzy masa nyata untuk mana-mana strim.
- Webhooks (EventSub): 12 jenis acara termasuk strim, saluran, kejohanan, klip dan acara Frenzy.
- Had Kadar
Perlukan Bantuan?
Ada soalan tentang API? Hubungi kami.