ข้ามไปยังเนื้อหา

Stream Status API

ใช้เอ็นด์พอยต์ Stream Status เพื่อถาม DailyPlay ว่าควรแสดงสตรีมตอนนี้หรือไม่ — ก่อนที่จะใส่ iframe, ปุ่ม Play ลอย หรือ overlay กำหนดเองบนเว็บไซต์

นี่คือ GET สาธารณะ (ไม่ต้องมี API key) เหมาะสำหรับเจ้าของไซต์/แอปที่ต้องการ:

  • แสดง overlay ของสตรีมเฉพาะตอนสตรีมใช้งานอยู่
  • ซ่อนปุ่ม Play เมื่อแคมเปญยังไม่เริ่มหรือจบแล้ว
  • ไม่โหลดตัวเล่นสตรีมเต็มเมื่อไม่มีเกมที่เผยแพร่
GET https://app.dailyplay.ai/api/stream-status?org_slug=<org-slug>&stream_slug=<stream-slug>
พารามิเตอร์ จำเป็น คำอธิบาย
org_slug ใช่ slug องค์กร (จาก URL แชร์สตรีม)
stream_slug ใช่ slug สตรีม (จาก URL แชร์สตรีม)

การยืนยันตัวตน: ไม่มี
CORS: Access-Control-Allow-Origin: * (เรียกจากเบราว์เซอร์ได้)
แคช: public, s-maxage=30, stale-while-revalidate=60 — โฮสต์สามารถ poll ประมาณทุก 30 วินาที

https://app.dailyplay.ai/api/stream-status?org_slug=your-org&stream_slug=summer-campaign

HTTP 200 พร้อม success: true หมายถึงคำขอถูกประมวลผลแล้ว ใช้ data.available เพื่อตัดสินใจ ว่าจะแสดง UI สตรีมหรือไม่

{
"success": true,
"data": {
"available": true,
"reason": null,
"total_games": 4,
"starts_at": null,
"ends_at": null,
"timezone": "UTC",
"server_time": "2026-10-15T07:23:43.597Z",
"stream": {
"slug": "summer-campaign",
"status": "active"
},
"organization": {
"slug": "your-org"
}
}
}
{
"success": true,
"data": {
"available": false,
"reason": "stream_inactive",
"total_games": 0,
"starts_at": null,
"ends_at": null,
"timezone": "UTC",
"server_time": "2026-10-15T07:23:43.597Z",
"stream": {
"slug": "summer-campaign",
"status": "draft"
},
"organization": {
"slug": "your-org"
}
}
}
ฟิลด์ ประเภท คำอธิบาย
available boolean true เมื่อผู้เข้าชมเล่นสตรีมได้
reason string | null เหตุผลที่ไม่พร้อมใช้ (null เมื่อพร้อมใช้)
total_games number จำนวนเกมที่เผยแพร่แล้วบนสตรีม (0 เมื่อไม่สาธารณะ)
starts_at / ends_at string | null ขอบเขตตารางเวลาเป็น ISO UTC (จากโซนเวลาของสตรีม)
timezone string โซนเวลาสตรีมที่ใช้ตรวจตารางเวลา
server_time string นาฬิกาเซิร์ฟเวอร์ (ISO UTC) ของการตัดสินใจ
stream.slug / status string ตัวตนและสถานะสตรีม
organization.slug string slug องค์กร
reason ความหมาย
not_public สตรีมไม่สาธารณะ (ไม่เปิดเผยรายละเอียด)
stream_inactive สถานะไม่ใช่ active (เช่น draft / archived)
stream_not_started เวลาปัจจุบันอยู่ก่อน starts_at
stream_ended เวลาปัจจุบันอยู่หลัง ends_at
no_games สตรีมใช้งาน/สาธารณะแต่ไม่มีเกมที่เผยแพร่
รหัส เมื่อ
400 ขาด org_slug หรือ stream_slug
404 ไม่พบองค์กรหรือสตรีม
405 เมธอดอื่นนอกจาก GET / OPTIONS
500 ข้อผิดพลาดเซิร์ฟเวอร์
{
"success": false,
"error": "Stream not found"
}

ต้องเป็นจริงทั้งหมดดังนี้:

  1. มีสตรีมภายใต้ org slug ที่ระบุ
  2. สตรีมเป็นสาธารณะ
  3. สถานะสตรีมเป็น active
  4. หากมีเวลาเริ่ม ต้องเริ่มแล้ว (ในโซนเวลาของสตรีม)
  5. หากมีเวลาสิ้นสุด ต้องยังไม่สิ้นสุด
  6. มีเกมที่เผยแพร่แล้วอย่างน้อยหนึ่งเกมติดกับสตรีม

เจ้าของไซต์มักไม่ใส่ปุ่ม Play ลอยหรือโมดอลลงใน DOM จนกว่าสตรีมจะสด

<script>
async function shouldShowStreamOverlay(orgSlug, streamSlug) {
const url =
"https://app.dailyplay.ai/api/stream-status" +
`?org_slug=${encodeURIComponent(orgSlug)}` +
`&stream_slug=${encodeURIComponent(streamSlug)}`;
const res = await fetch(url);
const json = await res.json();
return Boolean(json?.success && json?.data?.available);
}
async function maybeMountOverlay() {
const available = await shouldShowStreamOverlay(
"your-org",
"summer-campaign"
);
if (!available) {
// อย่าใส่ iframe / ปุ่มลอย
return;
}
// ใส่ overlay หรือ iframe:
// https://app.dailyplay.ai/stream/your-org/summer-campaign/widget?origin=...
}
maybeMountOverlay();
// ไม่บังคับ: ตรวจซ้ำทุก ~30 วินาทีให้สอดคล้องแคช CDN
setInterval(maybeMountOverlay, 30000);
</script>
วัตถุประสงค์ URL
หน้าสตรีมเต็ม https://app.dailyplay.ai/stream/<org-slug>/<stream-slug>
วิดเจ็ต / overlay ลอย https://app.dailyplay.ai/stream/<org-slug>/<stream-slug>/widget?origin=<encoded-site-origin>

ดู snippet วิดเจ็ตโฮสต์ที่ Floating Play Button สคริปต์วิดเจ็ตของ DailyPlay ก็เกตตัวเปิดสตรีมให้แสดงเฉพาะเมื่อเล่นได้