به محتوای اصلی بروید
D1 Arena

D1 Arena

Loading...

D1 Arena

API توسعه دهنده

جامعه

API توسعه دهنده

ربات‌ها، پوشش‌ها، ابزارهای جریانی و ادغام با داده‌های D1Arena بسازید.

احراز هویت

همه درخواست‌های API نیاز به یک کلید API دارند که در سرصفحه X-API-Key / Authorization: Bearer ارسال شود.

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

برای ایجاد یک کلید API، در داشبورد خود به تنظیمات برنامه نویس بروید. شما می توانید حداکثر 5 کلید داشته باشید.

درخواست‌های API برای هر کلید API با نرخ محدود می‌شوند. وقتی از حد مجاز فراتر رفتید، درخواست‌ها 429 Too Many Requests را با سرصفحه Retry-After برمی‌گردانند.

URL پایه

https://d1arena.com/api/v1

همه نقاط پایانی JSON را برمی‌گردانند. نقاط پایانی صفحه بندی شده شامل یک شیء meta با current_page، last_page و total است.

جریان ها

GET /streams
پخش‌های جاری زنده را فهرست کنید. از صفحه بندی و فیلتر دسته بندی پشتیبانی می کند.
پارامترتایپ کنیدتوضیحات
category_idintegerبر اساس شناسه بازی/رده فیلتر کنید
limitintegerنتایج در هر صفحه (پیش‌فرض: 20)
pageintegerشماره صفحه
پاسخ
{ "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}
وضعیت زنده یک پخش کننده را دریافت کنید و جزئیات پخش جریانی را با نام کاربری یا اسلاگ دریافت کنید.
پاسخ
{ "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" } }

دسته بندی ها

GET /categories
لیست تمام دسته های بازی از جستجو و صفحه بندی پشتیبانی می کند.
پارامترتایپ کنیدتوضیحات
searchstringدسته ها را بر اساس نام فیلتر کنید
limitintegerنتایج در هر صفحه (پیش‌فرض: 50)
پاسخ
{ "data": [ { "id": 5, "name": "Call of Duty", "slug": "call-of-duty", "image": "categories/cod.png" } ], "meta": { "total": 24 } }

کاربران

GET /users/{slug}
مشخصات عمومی بازیکن و آمار رقابتی را با نام کاربری یا اسلاگ دریافت کنید.
پاسخ
{ "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 } } }

کلیپ ها

GET /clips
فهرست کلیپ های عمومی پشتیبانی از فیلتر بر اساس جریان و دسته.
پارامترتایپ کنیدتوضیحات
streamer_idintegerکلیپ ها را بر اساس شناسه کاربری پخش کننده فیلتر کنید
category_idintegerبر اساس شناسه بازی/رده فیلتر کنید
limitintegerنتایج در هر صفحه (پیش‌فرض: 20)
پاسخ
{ "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}
جزئیات یک کلیپ را با استفاده از اسلگ دریافت کنید.
پاسخ
{ "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" } } }

مسابقات

GET /tournaments
لیست مسابقات پشتیبانی از فیلتر بر اساس وضعیت و لیگ.
پارامترتایپ کنیدتوضیحات
statusstringفیلتر بر اساس وضعیت (به عنوان مثال open، in_progress، completed)
league_idintegerبر اساس شناسه لیگ فیلتر کنید
limitintegerنتایج در هر صفحه (پیش‌فرض: 20)
پاسخ
{ "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}
جزئیات مسابقات و تعداد شرکت کنندگان را دریافت کنید.
پاسخ
{ "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

GET /elo/leaderboard
رتبه بندی ELO را دریافت کنید. به صورت اختیاری بر اساس دسته بازی فیلتر کنید.
پارامترتایپ کنیدتوضیحات
category_idintegerبر اساس شناسه بازی/رده فیلتر کنید
limitintegerتعداد نتایج (پیش‌فرض: 50)
پاسخ
{ "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 } }

لیگ ها

GET /leagues
لیست لیگ ها با وضعیت اختیاری و فیلترهای دسته بندی.
پارامترتایپ کنیدتوضیحات
statusstringبر اساس وضعیت لیگ فیلتر کنید
category_idintegerبر اساس شناسه بازی/رده فیلتر کنید
limitintegerنتایج در هر صفحه (پیش‌فرض: 20)
پاسخ
{ "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
جدول رده بندی لیگ (رتبه بندی بازیکنان بر اساس امتیاز) را دریافت کنید.
پاسخ
{ "data": [ { "id": 1, "points": 2400, "wins": 12, "losses": 3, "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 48 } }

پاسخ های خطا

همه خطاها یک پاکت JSON ثابت را برمی گرداند. شیء error همیشه حاوی یک code قابل خواندن توسط ماشین و یک message قابل خواندن توسط انسان است.

فرمت پاسخ به خطا
{ "success": false, "error": { "code": "not_found", "message": "The requested resource could not be found." } }
فرمت خطای اعتبارسنجی (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."] } } }

کدهای وضعیت

200
باشه — درخواست با موفقیت انجام شد. پاسخ حاوی داده های درخواستی است.
400
درخواست بد — درخواست بد شکل است یا پارامترهای لازم را ندارد. برای جزئیات، error.message را بررسی کنید.
401
غیر مجاز — Missing or invalid API key. Ensure you're passing a valid key in the X-API-Key header.
403
ممنوع — کلید API شما غیرفعال شده است یا مجوز این منبع را ندارد. خود را بررسی کنید تنظیمات برنامه نویس.
404
یافت نشد — منبع درخواستی وجود ندارد. اسلاگ، شناسه یا مسیر نقطه پایانی را تأیید کنید.
422
خطای اعتبارسنجی — پارامترهای درخواست اعتبارسنجی ناموفق بود. شیء error.errors نام فیلدها را به مسائل خاص خود نگاشت می کند.
429
نرخ محدود — درخواست های خیلی زیاد سرصفحه Retry-After نشان می‌دهد که قبل از تلاش مجدد چند ثانیه صبر کنید.
500
خطای سرور — یک خطای غیرمنتظره در سمت ما رخ داد. اگر این موضوع ادامه داشت، با پشتیبانی تماس بگیرید.

مرجع کدهای خطا

کدوضعیت HTTPتوضیحات
invalid_api_key401کلید API وجود ندارد، بد شکل است یا وجود ندارد
api_key_disabled403کلید API لغو یا غیرفعال شده است
not_found404منبع درخواستی یافت نشد
validation_error422یک یا چند پارامتر درخواست نامعتبر است
rate_limited429از محدودیت نرخ درخواست برای این کلید API فراتر رفته است
server_error500خطای سرور داخلی - لطفا دوباره امتحان کنید یا با پشتیبانی تماس بگیرید

محدودیت های نرخ

درخواست‌های API برای هر کلید API با نرخ محدود می‌شوند. وقتی از حد مجاز فراتر رفتید، درخواست‌ها 429 Too Many Requests را با سرصفحه Retry-After برمی‌گردانند.

محدودیت بر اساس ردیف

ردیفدرخواست ها / دقیقه (پیش فرض)حداکثر کلید
استارتر (رایگان)605
PRO605
نهایی605
شریک605

سرصفحه های حد امتیاز

درخواست‌های API برای هر کلید API با نرخ محدود می‌شوند. وقتی از حد مجاز فراتر رفتید، درخواست‌ها 429 Too Many Requests را با سرصفحه Retry-After برمی‌گردانند.

سربرگتوضیحات
Retry-Afterچند ثانیه منتظر ماندن قبل از تلاش مجدد (فقط در 429 پاسخ موجود است)

بهترین شیوه ها

نکاتی برای ماندن در محدوده:
  • Cache responses locally — stream and tournament data doesn't change every second.
  • اشتراک در webhooks برای رویدادهای هم‌زمان به‌جای پایان نظرسنجی.
  • درخواست‌های دسته‌ای در صورت امکان - از پارامترهای فیلتر استفاده کنید تا دقیقاً آنچه را که نیاز دارید در تماس‌های کمتر دریافت کنید.

Webhooks (EventSub)

به جای نظرسنجی در اعلان‌های فشار لحظه‌ای مشترک شوید. هنگامی که رویدادی رخ می‌دهد، D1Arena یک HTTP POST را با یک بار JSON امضا شده با HMAC-SHA256 به URL بازگشت به تماس شما ارسال می‌کند.

راه اندازی

اشتراک های وب هوک را در تنظیمات برنامه نویس ایجاد کنید. هر اشتراک نیاز به:

  • URL برگشت به تماس — یک نقطه پایانی HTTPS قابل دسترسی عمومی در سرور شما.
  • رویدادها — یک یا چند نوع رویداد برای مشترک شدن.

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

فرمت بار

هر تحویل وب هوک یک بدنه JSON با این ساختار ارسال می کند:

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

سرصفحه ها

هر تحویل شامل هدرهای زیر برای مسیریابی و تأیید است:

سربرگتوضیحات
Content-Typeapplication/json
X-D1Arena-Eventنوع رویداد (به عنوان مثال stream.online)
X-D1Arena-Signatureهگز هگز HMAC-SHA256 بدنه درخواستی خام
X-D1Arena-Signature-Versionقالب کلید امضا: v2 برای اشتراک‌های فعلی یا v1-hashed-secret برای اشتراک‌های قدیمی
X-D1Arena-Delivery-IdUUID تحویل منحصر به فرد - استفاده برای کپی کردن
X-D1Arena-Timestampمهر زمانی یونیکس از زمان ارسال رویداد

تایید امضاها

همیشه قبل از پردازش یک هوک، سرصفحه X-D1Arena-Signature را تأیید کنید. امضا به صورت HMAC-SHA256(raw_body, webhook_secret) محاسبه می شود.

برای تحویل v2، از رمز whsec_ که هنگام ایجاد اشتراک نشان داده شده است استفاده کنید. برای تحویل v1-hashed-secret پیش ارتقا، ابتدا SHA256(whsec_secret) را از آن راز اصلی محاسبه کنید و از خلاصه هگز با حروف کوچک به عنوان کلید HMAC استفاده کنید. برای انتقال به 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'); });
پایتون
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)

رویدادهای موجود

رویدادتوضیحات
stream.onlineپخش زنده پخش شد
stream.offlineیک پخش کننده آفلاین شد
channel.followکاربر یک کانال را دنبال کرد
channel.subscribeاشتراک حامی جدید در یک کانال
channel.tipنکته ای برای یک پخش کننده ارسال شد
tournament.startedبازی مسابقات آغاز شده است
tournament.endedیک تورنمنت به پایان رسید
tournament.match.completedنتیجه مسابقه ثبت شد
clip.createdیک کلیپ جدید از یک جریان زنده ایجاد شد
overdrive.startedدیوانگی D1 در یک کانال شروع شد
overdrive.level_upD1 Frenzy به سطح بعدی ارتقا یافت
overdrive.endedD1 Frenzy کامل شده یا منقضی شده است

نمونه های بارگذاری رویداد

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

خط مشی تحویل و امتحان مجدد

تلاشتاخیریادداشت ها
اول (اولیه)فوریدر عرض چند ثانیه از رویداد ارسال شد
دوم (تلاش مجدد)30 ثانیهاگر اولین تلاش ناموفق بود یا زمان تمام شد
سوم (تلاش مجدد)2 دقیقهعقب نشینی نمایی
چهارم (نهایی)10 دقیقهآخرین تلاش قبل از علامت گذاری به عنوان ناموفق
Important: Your endpoint must respond with a 2xx status within 10 ثانیه. Non-2xx responses or timeouts trigger a retry. After 10 شکست متوالی, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in تنظیمات برنامه نویس.

بهترین شیوه ها

  • همیشه امضاها را تأیید کنید قبل از پردازش محموله ها برای جلوگیری از رویدادهای جعلی.
  • از Delivery-Id برای حذف مجدد استفاده کنید — تلاش های مجدد، همان شناسه را ارسال می کند، بنابراین شناسه های پردازش شده را ذخیره کنید تا از پردازش مضاعف جلوگیری کنید.
  • به سرعت پاسخ دهید، به صورت ناهمزمان پردازش کنید — فوراً 200 OK را برگردانید و منطق تجاری را در یک شغل پس زمینه مدیریت کنید.
  • فقط از نقاط پایانی HTTPS استفاده کنید — URL های وب هوک باید از TLS استفاده کنند. تماس های HTTP رد می شوند.
  • رویدادهای ناشناخته را با ظرافت مدیریت کنید — انواع رویدادهای جدید ممکن است اضافه شود. برای رویدادهای ناشناخته به جای خطا، 200 را برگردانید.

دیوانگی D1

وقتی پخش‌کننده زنده است، D1 Frenzy با راهنمایی‌ها و اشتراک‌های سریع فعال می‌شود. از طریق 5 سطح با افزایش اهداف پیشرفت می کند.

GET /api/overdrive/{streamerId}

D1 Frenzy فعال را برای استریمر دریافت کنید. در صورت عدم وجود، {"active": false} را برمی‌گرداند.

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

اهداف سطح

سطحامتیاز
1100
2250
3500
41,000
52,000

دیوانگی D1 — امتیاز: نکته $1 → 100; اشتراک 500 × ردیف. مدت زمان: 5 دقیقه; خنک شدن: 30 دقیقه.

برنامه افزودنی SDK

پنل سفارشی و افزونه‌های همپوشانی بسازید که پخش‌کننده‌ها می‌توانند در صفحات کانال خود نصب کنند. برنامه های افزودنی در iframe های جعبه ایمنی اجرا می شوند و از طریق postMessage با صفحه میزبان ارتباط برقرار می کنند.

شروع به کار

  1. یک کلید API در تنظیمات برنامه نویس ایجاد کنید.
  2. برنامه افزودنی خود را به عنوان یک صفحه HTML مستقل که در دامنه شما میزبانی شده است بسازید (HTTPS مورد نیاز است).
  3. آن را برای بررسی در بخش برنامه های افزودنی من ارسال کنید.
  4. پس از تأیید، پخش‌کننده‌ها می‌توانند آن را از Extension Marketplace نصب کنند.

انواع پسوند

تایپ کنیدمکانرفتار
panelزیر پخش کننده استریمدر هنگام پخش جریانی قابل مشاهده است. کارت تمام عرض، ارتفاع پیش‌فرض 300 پیکسل.
overlayروی پخش کننده ویدیودر هنگام زنده قابل مشاهده است. موقعیت/اندازه توسط استریمر از طریق ابزار تعیین موقعیت پوشش کنترل می شود.

postMessage API

برنامه افزودنی شما هنگام بارگیری، داده های زمینه را به طور خودکار دریافت می کند. اجرای این رویدادها:

برای هر پیام از مبدا اصلی D1Arena استفاده کنید. SDK رسمی این منبع را از صفحه جاسازی به طور خودکار استخراج و تأیید می کند.

از آنجایی که iframes های افزودنی عمدا از یک مبدأ جعبه مات مات استفاده می کنند، میزبان D1Arena پنجره iframe ثبت شده دقیق را احراز هویت می کند. کد برنامه افزودنی باید قبل از پذیرش متن، پنجره والد و مبدأ D1Arena را احراز هویت کند.

1. آمادگی سیگنال

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

2. متن را دریافت کنید

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. ارسال اقدامات (اختیاری)

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

محدوده مجوز

اعلام کنید که برنامه افزودنی شما به چه داده هایی نیاز دارد. بازبینان تأیید می کنند که کد شما با مجوزهای اعلام شده شما مطابقت دارد.

دامنهاجازه دسترسی به
read:streamوضعیت جریان، عنوان، دسته
read:viewersتعداد بینندگان و لیست
read:chatپیام های چت (از طریق کانال Pusher)
read:clipsکلیپ های کانال از طریق /api/clips/{slug}
read:tournamentsاطلاعات تطابق فعال از طریق /api/active-match/{id}
read:channelپروفایل کانال، فالوورها، برنامه

الزامات امنیتی

برنامه‌های افزودنی در iframe sandboxed با sandbox="allow-scripts" اجرا می‌شوند. برنامه افزودنی شما نمی تواند به کوکی‌ها، محل ذخیره‌سازی محلی دسترسی دارد یا درخواست‌های احراز هویت شده را به d1arena.com ارسال می‌کند.
  • عمومی HTTPS مورد نیاز است — URL iframe شما باید از TLS استفاده کند و فقط به آدرس های شبکه عمومی حل شود.
  • منبع قابل خواندن برای انسان — بدون جاوا اسکریپت مبهم یا کوچک شده. بازبینان باید بتوانند کد شما را بخوانند.
  • بدون بارگیری اسکریپت خارجی مگر اینکه در ارسال شما اعلام شده باشد. کتابخانه های CDN (jQuery، Chart.js و غیره) خوب هستند.
  • بدون استخراج داده ها — برنامه های افزودنی نباید داده های بیننده را به سرویس های تجزیه و تحلیل یا ردیابی شخص ثالث ارسال کنند.
  • خط مشی محتوا — بدون تبلیغات، محتوای NSFW، استخراج ارز دیجیتال، یا رفتار مخرب.

فرآیند بررسی

وضعیتمعنی
pendingارسال شد، در انتظار بررسی سرپرست (معمولاً 1-3 روز کاری).
approvedتایید شده و در Extension Marketplace قابل مشاهده است.
rejectedبا دلیل رد شد. مشکلات را برطرف کنید و دوباره ارسال کنید.
suspendedبه دلیل نقض خط‌مشی موقتا حذف شد. با پشتیبانی تماس بگیرید.

به روز رسانی نسخه

برای به‌روزرسانی یک برنامه افزودنی تأیید شده، نسخه فعلی را حذف کنید و یک نسخه جدید با شماره نسخه افزایش یافته ارسال کنید. نسخه جدید دوباره مورد بررسی قرار می گیرد.

تغییرات

ردیابی تغییرات API و ویژگی های جدید. ما نسخه‌سازی معنایی را دنبال می‌کنیم و تغییرات قطعی را حداقل 30 روز قبل اعلام می‌کنیم.

v1.0مارس 2026
  • انتشار اولیه API عمومی با احراز هویت کلید API.
  • جریان‌ها: پخش‌های زنده را فهرست کنید، جزئیات پخش‌کننده را بر اساس اسلاگ دریافت کنید.
  • دسته‌ها: همه دسته‌های بازی را جستجو و فهرست کنید.
  • کاربران: نمایه های عمومی با آمار رقابتی، رتبه بندی ELO و تعداد مدال.
  • کلیپ ها: جزئیات کلیپ را با اطلاعات پخش کننده/سازنده مرور و بازیابی کنید.
  • تورنمنت ها: فهرست، فیلتر بر اساس وضعیت/لیگ، دریافت تعداد شرکت کنندگان.
  • ELO Leaderboard: تابلوهای امتیازات جهانی و رتبه بندی شده در هر دسته.
  • لیگ‌ها: لیگ‌ها را با جدول رده‌بندی و تفکیک امتیاز فهرست کنید.
  • D1 Frenzy: وضعیت بی‌درنگ Frenzy برای هر پخش‌کننده.
  • Webhooks (EventSub): 12 نوع رویداد شامل جریان، کانال، مسابقات، کلیپ و رویدادهای Frenzy.
  • محدودیت های نرخ

به کمک نیاز دارید؟

درباره API سؤالی دارید؟ با ما تماس بگیرید.