Chuyển đến nội dung chính
D1 Arena

D1 Arena

Loading...

D1 Arena

API nhà phát triển

Cộng Đồng

API nhà phát triển

Xây dựng bot, lớp phủ, công cụ truyền phát và tích hợp với dữ liệu D1Arena.

Xác thực

Tất cả các yêu cầu API đều yêu cầu khóa API được chuyển trong tiêu đề X-API-Key / Authorization: Bearer.

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

Để tạo khóa API, hãy truy cập Cài đặt dành cho nhà phát triển trong bảng điều khiển của bạn. Bạn có thể có tối đa 5 phím.

Yêu cầu API bị giới hạn tỷ lệ cho mỗi khóa API. Khi bạn vượt quá giới hạn, các yêu cầu sẽ trả về 429 Too Many Requests với tiêu đề Retry-After.

URL cơ sở

https://d1arena.com/api/v1

Tất cả các điểm cuối đều trả về JSON. Các điểm cuối được phân trang bao gồm một đối tượng meta với current_page, last_page và total.

Luồng

GET /streams
Liệt kê các luồng hiện đang phát trực tiếp. Hỗ trợ phân trang và lọc danh mục.
tham sốKiểuMô tả
category_idintegerLọc theo ID trò chơi/danh mục
limitintegerKết quả trên mỗi trang (mặc định: 20)
pageintegerSố trang
phản hồi
{ "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}
Nhận trạng thái trực tiếp của một người phát trực tiếp và thông tin chi tiết về luồng theo tên người dùng hoặc slug.
phản hồi
{ "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" } }

Danh mục

GET /categories
Liệt kê tất cả các loại trò chơi. Hỗ trợ tìm kiếm và phân trang.
tham sốKiểuMô tả
searchstringLọc danh mục theo tên
limitintegerKết quả trên mỗi trang (mặc định: 50)
phản hồi
{ "data": [ { "id": 5, "name": "Call of Duty", "slug": "call-of-duty", "image": "categories/cod.png" } ], "meta": { "total": 24 } }

Người dùng

GET /users/{slug}
Nhận hồ sơ công khai của người chơi và số liệu thống kê cạnh tranh theo tên người dùng hoặc sên.
phản hồi
{ "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 } } }

Đoạn phim

GET /clips
Liệt kê các clip công khai. Hỗ trợ lọc theo bộ truyền phát và danh mục.
tham sốKiểuMô tả
streamer_idintegerLọc clip theo ID người dùng của người truyền phát
category_idintegerLọc theo ID trò chơi/danh mục
limitintegerKết quả trên mỗi trang (mặc định: 20)
phản hồi
{ "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}
Nhận thông tin chi tiết của một clip bằng slug.
phản hồi
{ "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" } } }

Giải Đấu

GET /tournaments
Liệt kê các giải đấu. Hỗ trợ lọc theo trạng thái và giải đấu.
tham sốKiểuMô tả
statusstringLọc theo trạng thái (ví dụ: open, in_progress, completed)
league_idintegerLọc theo ID giải đấu
limitintegerKết quả trên mỗi trang (mặc định: 20)
phản hồi
{ "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}
Nhận thông tin chi tiết về giải đấu và số lượng người tham gia.
phản hồi
{ "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 } }

Bảng xếp hạng ELO

GET /elo/leaderboard
Nhận bảng xếp hạng xếp hạng ELO. Tùy chọn lọc theo danh mục trò chơi.
tham sốKiểuMô tả
category_idintegerLọc theo ID trò chơi/danh mục
limitintegerSố kết quả (mặc định: 50)
phản hồi
{ "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 } }

Giải đấu

GET /leagues
Liệt kê các giải đấu với các bộ lọc trạng thái và danh mục tùy chọn.
tham sốKiểuMô tả
statusstringLọc theo trạng thái giải đấu
category_idintegerLọc theo ID trò chơi/danh mục
limitintegerKết quả trên mỗi trang (mặc định: 20)
phản hồi
{ "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
Nhận bảng xếp hạng giải đấu (xếp hạng người chơi theo điểm).
phản hồi
{ "data": [ { "id": 1, "points": 2400, "wins": 12, "losses": 3, "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 48 } }

Phản hồi lỗi

Tất cả các lỗi đều trả về một đường bao JSON nhất quán. Đối tượng error luôn chứa một code mà máy có thể đọc được và một message mà con người có thể đọc được.

Định dạng phản hồi lỗi
{ "success": false, "error": { "code": "not_found", "message": "The requested resource could not be found." } }
Định dạng lỗi xác thực (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."] } } }

Mã trạng thái

200
được rồi — Yêu cầu đã thành công. Phản hồi chứa dữ liệu được yêu cầu.
400
Yêu cầu không hợp lệ — Yêu cầu không đúng định dạng hoặc thiếu tham số bắt buộc. Kiểm tra error.message để biết chi tiết.
401
Không Được Phép — Missing or invalid API key. Ensure you're passing a valid key in the X-API-Key header.
403
Cấm Truy Cập — Khóa API của bạn đã bị vô hiệu hóa hoặc thiếu quyền đối với tài nguyên này. Kiểm tra của bạn Cài đặt dành cho nhà phát triển.
404
Không Tìm Thấy — Tài nguyên được yêu cầu không tồn tại. Xác minh đường dẫn sên, ID hoặc điểm cuối.
422
Lỗi xác thực — Xác thực thông số yêu cầu không thành công. Đối tượng error.errors ánh xạ tên trường tới các vấn đề cụ thể của chúng.
429
Tỷ lệ giới hạn — Quá nhiều yêu cầu. Tiêu đề Retry-After cho biết phải đợi bao nhiêu giây trước khi thử lại.
500
Máy Chủ Gặp Sự Cố — Đã xảy ra lỗi không mong muốn từ phía chúng tôi. Nếu điều này vẫn tiếp diễn, liên hệ hỗ trợ.

Tham chiếu mã lỗi

MãTrạng thái HTTPMô tả
invalid_api_key401Khóa API bị thiếu, không đúng định dạng hoặc không tồn tại
api_key_disabled403Khóa API đã bị thu hồi hoặc vô hiệu hóa
not_found404Không thể tìm thấy tài nguyên được yêu cầu
validation_error422Một hoặc nhiều tham số yêu cầu không hợp lệ
rate_limited429Đã vượt quá giới hạn tốc độ yêu cầu đối với khóa API này
server_error500Lỗi máy chủ nội bộ — vui lòng thử lại hoặc liên hệ với bộ phận hỗ trợ

Giới hạn tỷ lệ

Yêu cầu API bị giới hạn tỷ lệ cho mỗi khóa API. Khi bạn vượt quá giới hạn, các yêu cầu sẽ trả về 429 Too Many Requests với tiêu đề Retry-After.

Giới hạn theo cấp độ

cấpYêu cầu / Phút (Mặc định)Phím tối đa
người mới bắt đầu (Miễn phí)605
CHUYÊN NGHIỆP605
Tối thượng605
Cộng sự605

Tiêu đề giới hạn tỷ lệ

Yêu cầu API bị giới hạn tỷ lệ cho mỗi khóa API. Khi bạn vượt quá giới hạn, các yêu cầu sẽ trả về 429 Too Many Requests với tiêu đề Retry-After.

tiêu đềMô tả
Retry-AfterSố giây chờ trước khi thử lại (chỉ xuất hiện trên 429 phản hồi)

Thực tiễn tốt nhất

Lời khuyên để duy trì trong giới hạn:
  • Cache responses locally — stream and tournament data doesn't change every second.
  • Đăng ký webhooks để biết các sự kiện theo thời gian thực thay vì bỏ phiếu cho các điểm cuối.
  • Yêu cầu hàng loạt nếu có thể — sử dụng tham số bộ lọc để nhận được chính xác những gì bạn cần với ít cuộc gọi hơn.

Webhook (EventSub)

Đăng ký nhận thông báo đẩy theo thời gian thực thay vì bỏ phiếu. Khi một sự kiện xảy ra, D1Arena sẽ gửi HTTP POST tới URL gọi lại của bạn kèm theo tải trọng JSON được ký bằng HMAC-SHA256.

thiết lập

Tạo đăng ký webhook trong Cài đặt dành cho nhà phát triển. Mỗi đăng ký yêu cầu:

  • URL gọi lại — Điểm cuối HTTPS có thể truy cập công khai trên máy chủ của bạn.
  • Sự kiện — Một hoặc nhiều loại sự kiện để đăng ký.

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

Định dạng tải trọng

Mỗi lần phân phối webhook sẽ gửi một phần nội dung JSON có cấu trúc sau:

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

Tiêu đề

Mỗi lần phân phối bao gồm các tiêu đề sau để định tuyến và xác minh:

tiêu đềMô tả
Content-Typeapplication/json
X-D1Arena-EventLoại sự kiện (ví dụ: stream.online)
X-D1Arena-SignatureBản tóm tắt hex HMAC-SHA256 của nội dung yêu cầu thô
X-D1Arena-Signature-VersionĐịnh dạng khóa ký: v2 cho đăng ký hiện tại hoặc v1-hashed-secret cho đăng ký cũ
X-D1Arena-Delivery-IdUUID phân phối duy nhất — sử dụng để chống trùng lặp
X-D1Arena-TimestampDấu thời gian Unix khi sự kiện được gửi

Xác minh chữ ký

Luôn xác minh tiêu đề X-D1Arena-Signature trước khi xử lý webhook. Chữ ký được tính là HMAC-SHA256(raw_body, webhook_secret).

Đối với việc gửi v2, hãy sử dụng bí mật whsec_ được hiển thị khi đăng ký được tạo. Đối với phân phối v1-hashed-secret trước khi nâng cấp, trước tiên hãy tính toán SHA256(whsec_secret) từ bí mật ban đầu đó và sử dụng thông số thập lục phân viết thường thu được làm khóa HMAC. Hãy tạo lại đăng ký khi có thể để chuyển sang v2.

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)

Sự kiện có sẵn

Sự kiệnMô tả
stream.onlineMột người phát trực tiếp đã phát trực tiếp
stream.offlineMột người phát trực tiếp đã ngoại tuyến
channel.followMột người dùng đã theo dõi một kênh
channel.subscribeĐăng ký ủng hộ mới trên một kênh
channel.tipMột mẹo đã được gửi tới người truyền phát
tournament.startedMột trận đấu giải đấu đã bắt đầu
tournament.endedMột giải đấu đã kết thúc
tournament.match.completedKết quả trận đấu được ghi lại
clip.createdMột clip mới đã được tạo từ luồng trực tiếp
overdrive.startedD1 Frenzy bắt đầu trên một kênh
overdrive.level_upD1 Frenzy tiến lên cấp độ tiếp theo
overdrive.endedD1 Frenzy đã hoàn thành hoặc hết hạn

Ví dụ về tải trọng sự kiện

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 } }

Chính sách giao hàng và thử lại

Cố gắngTrì hoãnGhi chú
Lần 1 (ban đầu)ngay lập tứcĐược gửi trong vòng vài giây của sự kiện
Lần 2 (thử lại)30 giâyNếu lần thử đầu tiên không thành công hoặc hết thời gian
Lần 3 (thử lại)2 phútSự lùi lại theo cấp số nhân
Lần thứ 4 (cuối cùng)10 phútLần thử cuối cùng trước khi đánh dấu là không thành công
Important: Your endpoint must respond with a 2xx status within 10 giây. Non-2xx responses or timeouts trigger a retry. After 10 lần thất bại liên tiếp, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Cài đặt dành cho nhà phát triển.

Thực tiễn tốt nhất

  • Luôn xác minh chữ ký trước khi xử lý tải trọng để ngăn chặn các sự kiện giả mạo.
  • Sử dụng Id phân phối để chống trùng lặp — các lần thử lại sẽ gửi cùng một ID, vì vậy hãy lưu trữ các ID đã xử lý để tránh xử lý kép.
  • Phản hồi nhanh, xử lý không đồng bộ — return 200 OK ngay lập tức và xử lý logic nghiệp vụ trong công việc nền.
  • Chỉ sử dụng điểm cuối HTTPS — URL webhook phải sử dụng TLS. Cuộc gọi lại HTTP bị từ chối.
  • Xử lý các sự kiện chưa biết một cách khéo léo — các loại sự kiện mới có thể được thêm vào. Trả về 200 cho các sự kiện không được nhận dạng thay vì có lỗi.

D1 điên cuồng

D1 Frenzy được kích hoạt bởi các mẹo và đăng ký nhanh chóng trong khi người phát trực tiếp đang phát trực tiếp. Nó tiến triển qua 5 cấp độ với mục tiêu ngày càng tăng.

GET /api/overdrive/{streamerId}

Nhận D1 Frenzy đang hoạt động cho người phát trực tiếp. Trả về {"active": false} nếu không có.

{ "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" }

Mục tiêu cấp độ

Cấp độĐiểm
1100
2250
3500
41,000
52,000

D1 điên cuồng — Điểm: Mẹo $1 → 100; Đăng ký 500 × cấp. Thời lượng: 5 Phút; Thời gian hồi chiêu: 30 Phút.

SDK mở rộng

Xây dựng các tiện ích mở rộng lớp phủ và bảng điều khiển tùy chỉnh mà người truyền phát có thể cài đặt trên trang kênh của họ. Tiện ích mở rộng chạy trong iframe có hộp cát và liên lạc với trang lưu trữ qua postMessage.

Bắt đầu

  1. Tạo khóa API trong Cài đặt dành cho nhà phát triển.
  2. Tạo tiện ích mở rộng của bạn dưới dạng trang HTML độc lập được lưu trữ trên miền của bạn (yêu cầu HTTPS).
  3. Gửi nó để xem xét trong phần Tiện ích mở rộng của tôi.
  4. Sau khi được phê duyệt, người phát trực tuyến có thể cài đặt nó từ Thị trường mở rộng.

Các loại tiện ích mở rộng

KiểuVị tríHành vi
panelBên dưới trình phát luồngHiển thị khi luồng trực tiếp. Thẻ có chiều rộng đầy đủ, chiều cao mặc định 300px.
overlayTrên trình phát videoHiển thị khi trực tiếp. Vị trí/kích thước được bộ truyền phát kiểm soát thông qua công cụ định vị lớp phủ.

API postMessage

Tiện ích mở rộng của bạn tự động nhận dữ liệu ngữ cảnh khi tải. Thực hiện các sự kiện này:

Sử dụng nguồn gốc D1Arena chính xác cho mọi thư. SDK chính thức tự động lấy và xác thực nguồn gốc này từ trang nhúng.

Vì iframe tiện ích mở rộng có chủ ý sử dụng nguồn gốc hộp cát mờ nên máy chủ D1Arena xác thực cửa sổ iframe đã đăng ký chính xác. Mã tiện ích mở rộng vẫn phải xác thực cửa sổ chính và nguồn gốc D1Arena chính xác trước khi chấp nhận ngữ cảnh.

1. Tín hiệu sẵn sàng

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

2. Nhận ngữ cảnh

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. Gửi hành động (tùy chọn)

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

Phạm vi quyền

Khai báo dữ liệu nào tiện ích mở rộng của bạn cần. Người đánh giá xác minh mã của bạn khớp với các quyền đã khai báo.

Phạm viCấp quyền truy cập vào
read:streamTrạng thái luồng, tiêu đề, danh mục
read:viewersSố lượng người xem và danh sách
read:chatTin nhắn trò chuyện (thông qua kênh Pusher)
read:clipsKênh clip qua /api/clips/{slug}
read:tournamentsThông tin trận đấu đang hoạt động qua /api/active-match/{id}
read:channelHồ sơ kênh, người theo dõi, lịch trình

Yêu cầu bảo mật

Tiện ích mở rộng chạy trong iframe được đóng hộp cát với sandbox="allow-scripts". Tiện ích mở rộng không thể của bạn truy cập cookie, localStorage hoặc thực hiện các yêu cầu được xác thực tới d1arena.com.
  • Yêu cầu công khai HTTPS — URL iframe của bạn phải sử dụng TLS và chỉ phân giải thành các địa chỉ mạng công cộng.
  • Nguồn con người có thể đọc được — Không có JavaScript bị xáo trộn hoặc chỉ được rút gọn. Người đánh giá phải có khả năng đọc mã của bạn.
  • Không tải tập lệnh bên ngoài trừ khi được khai báo trong bài nộp của bạn. Thư viện CDN (jQuery, Chart.js, v.v.) đều ổn.
  • Không lọc dữ liệu — Tiện ích mở rộng không được gửi dữ liệu người xem đến các dịch vụ theo dõi hoặc phân tích của bên thứ ba.
  • Chính sách nội dung — Không có quảng cáo, nội dung NSFW, khai thác tiền điện tử hoặc hành vi độc hại.

Quá trình xem xét

Trạng tháiÝ nghĩa
pendingĐã gửi, đang chờ quản trị viên xem xét (thường là 1-3 ngày làm việc).
approvedĐã được phê duyệt và hiển thị trên Thị trường mở rộng.
rejectedBị từ chối có lý do. Hãy khắc phục sự cố và gửi lại.
suspendedTạm thời bị xóa do vi phạm chính sách. Liên hệ hỗ trợ.

Cập nhật phiên bản

Để cập nhật tiện ích mở rộng đã được phê duyệt, hãy xóa phiên bản hiện tại và gửi phiên bản mới có số phiên bản tăng dần. Phiên bản mới sẽ được xem xét lại.

Nhật ký thay đổi

Theo dõi các thay đổi API và các tính năng mới. Chúng tôi tuân theo việc lập phiên bản ngữ nghĩa và thông báo những thay đổi quan trọng trước ít nhất 30 ngày.

v1.0tháng 3 năm 2026
  • Phát hành API công khai lần đầu với xác thực khóa API.
  • Luồng: Liệt kê các luồng trực tiếp, nhận thông tin chi tiết về người phát trực tuyến bằng slug.
  • Danh mục: Tìm kiếm và liệt kê tất cả các danh mục trò chơi.
  • Người dùng: Hồ sơ công khai có số liệu thống kê cạnh tranh, xếp hạng ELO và số huy chương.
  • Đoạn: Duyệt qua và truy xuất chi tiết clip bằng thông tin về người truyền phát/người sáng tạo.
  • Giải đấu: Danh sách, lọc theo trạng thái/giải đấu, lấy số lượng người tham gia.
  • Bảng xếp hạng ELO: Bảng xếp hạng toàn cầu và xếp hạng theo danh mục.
  • Giải đấu: Liệt kê các giải đấu kèm theo thứ hạng và phân tích điểm.
  • D1 Frenzy: Trạng thái Frenzy theo thời gian thực cho bất kỳ người phát trực tiếp nào.
  • Webhooks (EventSub): 12 loại sự kiện bao gồm sự kiện phát trực tuyến, kênh, giải đấu, clip và sự kiện Frenzy.
  • Giới hạn tỷ lệ

Cần trợ giúp?

Câu hỏi về API? Liên hệ với chúng tôi.