Skip to content

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/live

Response 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

ParameterTypeRequiredDefaultDescription
qualitystringNoautoauto, 1080p, 720p, 480p, 360p
dvrbooleanNofalseInclude 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/viewers

Response 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/metadata

Response 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

ParameterTypeRequiredDescription
session_idstringYesActive 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

FieldTypeRequiredDefaultDescription
channel_idstringYesChannel ID
device_typestringYesweb, ios, android, roku, firetv, appletv
qualitystringNoautoStream quality
timezonestringNoUTCTimezone 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/json

Request 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

ParameterTypeRequiredDescription
session_idstringYesActive 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

ParameterTypeRequiredDescription
session_idstringYesActive 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

ParameterTypeRequiredDefaultDescription
typestringNoallfree, premium, ppv
seasonintNoFilter by season
pageintNo1Page number
limitintNo20Results 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
      }
    ]
  }
}