Appearance
SECTION 6 — LIVE CHANNEL
28. GET /creators/:id/channel/live
Get full live channel info including status, viewer count, and stream details.
Request
http
GET /creators/creator_001/channel/liveResponse 200 OK (Live)
json
{
"status": "success",
"data": {
"creator_id": "creator_001",
"creator_name": "Chris Spencer",
"is_live": true,
"channel": {
"channel_id": "ch_101",
"channel_name": "Chris Spencer 24/7",
"channel_number": 101,
"is_live": true,
"watching_now": 13000,
"watching_now_formatted": "13K",
"stream": {
"stream_id": "stream_abc123",
"title": "Behind the Laughs",
"started_at": "2024-11-01T18:15:00Z",
"thumbnail_url": "https://cdn.droptv.com/streams/stream_abc123/thumb.jpg",
"stream_url": "https://cdn.droptv.com/streams/stream_abc123/stream.m3u8",
"dvr_url": "https://cdn.droptv.com/streams/stream_abc123/dvr.m3u8"
}
},
"user_state": {
"is_following": false,
"is_subscribed": false
}
}
}Response 200 OK (Offline)
json
{
"status": "success",
"data": {
"creator_id": "creator_001",
"is_live": false,
"channel": {
"channel_id": "ch_101",
"channel_name": "Chris Spencer 24/7",
"channel_number": 101,
"is_live": false,
"stream": null
},
"message": "Chris Spencer is currently offline"
}
}29. GET /creators/:id/channel/live/stream
Get the playback stream URL.
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| quality | string | No | auto | auto, 1080p, 720p, 480p, 360p |
| dvr | boolean | No | false | Include DVR/rewind URL |
Request
http
GET /creators/creator_001/channel/live/stream?quality=auto&dvr=true
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"data": {
"stream_id": "stream_abc123",
"is_live": true,
"quality": "auto",
"stream_url": "https://cdn.droptv.com/streams/stream_abc123/stream.m3u8",
"dvr_url": "https://cdn.droptv.com/streams/stream_abc123/dvr.m3u8",
"thumbnail_url": "https://cdn.droptv.com/streams/stream_abc123/thumb.jpg",
"token": "stream_token_xyz",
"token_expires_at": "2024-11-01T23:59:59Z",
"watching_now": 13000,
"watching_now_formatted": "13K",
"available_qualities": ["1080p", "720p", "480p", "360p"]
}
}30. GET /creators/:id/channel/live/viewers
Get real-time viewer count and breakdown.
Request
http
GET /creators/creator_001/channel/live/viewersResponse 200 OK
json
{
"status": "success",
"data": {
"creator_id": "creator_001",
"channel_id": "ch_101",
"is_live": true,
"viewers": {
"watching_now": 13245,
"watching_now_formatted": "13.2K",
"peak_today": 18500,
"peak_today_formatted": "18.5K",
"peak_all_time": 52000,
"peak_all_time_formatted": "52K",
"by_device": {
"web": 5200,
"ios": 3800,
"android": 2400,
"roku": 1100,
"firetv": 600,
"appletv": 145
}
},
"last_updated_at": "2024-11-01T18:30:45Z"
}
}31. GET /creators/:id/channel/live/metadata
Get stream metadata including health, bitrate, and CDN info.
Request
http
GET /creators/creator_001/channel/live/metadataResponse 200 OK
json
{
"status": "success",
"data": {
"stream_id": "stream_abc123",
"is_live": true,
"stream_health": "good",
"started_at": "2024-11-01T17:00:00Z",
"uptime_seconds": 4500,
"uptime_formatted": "1h 15m",
"latency_mode": "low",
"bitrate_kbps": 6000,
"resolution": "1080p",
"frame_rate": 30,
"cdn": {
"provider": "cloudfront",
"region": "us-east-1",
"edge_location": "Atlanta, GA"
},
"drm": { "enabled": false, "type": null, "license_url": null },
"stream_urls": {
"hls": "https://cdn.droptv.com/streams/stream_abc123/stream.m3u8",
"dvr": "https://cdn.droptv.com/streams/stream_abc123/dvr.m3u8",
"thumbnail": "https://cdn.droptv.com/streams/stream_abc123/thumb.jpg"
}
}
}32. GET /creators/:id/channel/live/qualities
Get available stream quality options for a session. Requires authentication.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| session_id | string | Yes | Active session ID |
Request
http
GET /creators/creator_001/channel/live/qualities?session_id=sess_watch_xyz001
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"data": {
"session_id": "sess_watch_xyz001",
"current_quality": "auto",
"available_qualities": [
{ "label": "Auto", "value": "auto", "description": "Adjusts automatically" },
{ "label": "1080p", "value": "1080p", "bitrate_kbps": 6000, "resolution": "1920x1080", "frame_rate": 30 },
{ "label": "720p", "value": "720p", "bitrate_kbps": 3500, "resolution": "1280x720", "frame_rate": 30 },
{ "label": "480p", "value": "480p", "bitrate_kbps": 1500, "resolution": "854x480", "frame_rate": 30 },
{ "label": "360p", "value": "360p", "bitrate_kbps": 800, "resolution": "640x360", "frame_rate": 30 }
]
}
}33. POST /creators/:id/channel/live/watch
Initiate a Watch Live session with full EPG, stream, and viewer data.
Request
http
POST /creators/creator_001/channel/live/watch
Content-Type: application/json
Authorization: Bearer <token>Request Body
json
{
"channel_id": "ch_101",
"device_type": "web",
"quality": "auto",
"timezone": "America/New_York"
}Request Body Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| channel_id | string | Yes | — | Channel ID |
| device_type | string | Yes | — | web, ios, android, roku, firetv, appletv |
| quality | string | No | auto | Stream quality |
| timezone | string | No | UTC | Timezone for EPG |
Response 200 OK
json
{
"status": "success",
"data": {
"session": {
"session_id": "sess_watch_xyz001",
"started_at": "2024-11-01T18:15:00Z",
"expires_at": "2024-11-01T23:59:59Z",
"heartbeat_interval_seconds": 30,
"device_type": "web"
},
"stream": {
"stream_id": "stream_abc123",
"stream_url": "https://cdn.droptv.com/streams/stream_abc123/stream.m3u8",
"dvr_url": "https://cdn.droptv.com/streams/stream_abc123/dvr.m3u8",
"thumbnail_url": "https://cdn.droptv.com/streams/stream_abc123/thumb.jpg",
"quality": "auto",
"available_qualities": [
{ "label": "1080p", "bitrate_kbps": 6000 },
{ "label": "720p", "bitrate_kbps": 3500 },
{ "label": "480p", "bitrate_kbps": 1500 },
{ "label": "360p", "bitrate_kbps": 800 }
],
"token": "stream_token_xyz_abc",
"token_expires_at": "2024-11-01T23:59:59Z",
"latency_mode": "low"
},
"channel": { "channel_id": "ch_101", "channel_name": "Chris Spencer 24/7", "channel_number": 101, "is_live": true },
"creator": { "id": "creator_001", "name": "Chris Spencer", "is_verified": true },
"viewers": { "watching_now": 13000, "watching_now_formatted": "13K", "peak_today": 18500, "peak_today_formatted": "18.5K" },
"epg": { "date": "2024-11-01", "timezone": "America/New_York", "current_program": {}, "schedule": [] }
}
}Errors
json
{ "status": "error", "code": 404, "message": "No active live stream found for this creator" }json
{ "status": "error", "code": 403, "message": "Subscription required to watch this channel" }json
{ "status": "error", "code": 429, "message": "Maximum concurrent streams reached. Please close another session." }34. PATCH /creators/:id/channel/live/watch
Update an existing watch session. Requires authentication.
Request
http
PATCH /creators/creator_001/channel/live/watch
Authorization: Bearer <token>
Content-Type: application/jsonRequest Body
json
{
"session_id": "sess_watch_xyz001",
"quality": "720p",
"device_type": "web"
}Response 200 OK
json
{
"status": "success",
"data": {
"session_id": "sess_watch_xyz001",
"quality": "720p",
"stream_url": "https://cdn.droptv.com/streams/stream_abc123/720p/stream.m3u8",
"token": "stream_token_refreshed_xyz",
"token_expires_at": "2024-11-01T23:59:59Z"
}
}35. DELETE /creators/:id/channel/live/watch
End the active watch session. Requires authentication.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| session_id | string | Yes | Active session ID |
Request
http
DELETE /creators/creator_001/channel/live/watch?session_id=sess_watch_xyz001
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"message": "Watch session ended",
"data": {
"session_id": "sess_watch_xyz001",
"watch_duration_seconds": 2340,
"watch_duration_formatted": "39:00",
"ended_at": "2024-11-01T18:54:00Z"
}
}36. GET /creators/:id/channel/live/heartbeat
Keep session alive and receive real-time updates. Requires authentication.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| session_id | string | Yes | Active session ID |
Request
http
GET /creators/creator_001/channel/live/heartbeat?session_id=sess_watch_xyz001
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"data": {
"session_id": "sess_watch_xyz001",
"session_valid": true,
"expires_at": "2024-11-01T23:59:59Z",
"next_heartbeat_seconds": 30,
"stream": {
"stream_id": "stream_abc123",
"is_live": true,
"health": "good",
"token": "stream_token_xyz_refreshed",
"token_expires_at": "2024-11-01T23:59:59Z"
},
"viewers": { "watching_now": 13245, "watching_now_formatted": "13.2K", "delta": 245 },
"epg": {
"current_program": { "program_id": "prog_002", "title": "Behind the Laughs", "elapsed_minutes": 16, "remaining_minutes": 29, "progress_percent": 35 },
"next_program": { "program_id": "prog_003", "title": "Chris Spencer Presents", "starts_in_minutes": 29, "start_time_formatted": "7:00 PM" }
}
}
}37. GET /creators/:id/channel/ondemand
Get all on-demand content for a creator's channel.
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| type | string | No | all | free, premium, ppv |
| season | int | No | — | Filter by season |
| page | int | No | 1 | Page number |
| limit | int | No | 20 | Results per page |
Request
http
GET /creators/creator_001/channel/ondemand?type=all&season=1&page=1&limit=20
Authorization: Bearer <token>Response 200 OK
json
{
"status": "success",
"data": {
"creator_id": "creator_001",
"total": 9,
"page": 1,
"content": [
{
"content_id": "ep_001",
"type": "free",
"title": "E1: Pilot Episode",
"thumbnail_url": "https://cdn.droptv.com/episodes/ep_001/thumb.jpg",
"duration_formatted": "24:32",
"season": 1,
"episode_number": 1,
"is_free": true,
"is_locked": false,
"views_formatted": "1.2M",
"stream_url": "https://cdn.droptv.com/episodes/ep_001/stream.m3u8"
},
{
"content_id": "prem_001",
"type": "premium",
"title": "Behind the Scenes",
"thumbnail_url": "https://cdn.droptv.com/premium/prem_001/thumb.jpg",
"duration_formatted": "45:00",
"is_free": false,
"is_locked": true,
"stream_url": null
},
{
"content_id": "ppv_001",
"type": "ppv",
"title": "Live Comedy Special",
"thumbnail_url": "https://cdn.droptv.com/ppv/ppv_001/thumb.jpg",
"duration_formatted": "1:15:00",
"is_free": false,
"is_locked": true,
"price": 3.99,
"currency": "USD",
"stream_url": null
}
]
}
}