Skip to content

Livestreams API

Endpoints for livestream management. Requires API Key authentication.

Create Livestream

Create a new livestream.

http
POST /livestream

Headers

HeaderValue
ls-api-key<your_api_key>
Content-Typeapplication/json

Request Body

FieldTypeRequiredDescription
namestringYesStream name
projectIdstringYesProject UUID
mediaServerIdstringYesMedia server UUID

Example

bash
curl -X POST https://api.xxxxxx.xxx/api/v1/livestream \
  -H "ls-api-key: ls_proj_v1_ydi3lLihcIW0Z9ZAkGz2BjV6caLYqzK41TQAGblW-4E" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Live Stream",
    "projectId": "ce4b77e3-3ed0-47ee-a307-ade5f3fbef91",
    "mediaServerId": "40fb0295-9fdf-4a97-b1a8-43cdc64dd512"
  }'
javascript
const response = await fetch('https://api.xxxxxx.xxx/api/v1/livestream', {
  method: 'POST',
  headers: {
    'ls-api-key': process.env.LUNAR_STREAM_API_KEY,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'My Live Stream',
    projectId: 'ce4b77e3-3ed0-47ee-a307-ade5f3fbef91',
    mediaServerId: '40fb0295-9fdf-4a97-b1a8-43cdc64dd512'
  })
});

Response

json
{
  "data": {
    "id": "d926da37-56ae-4212-83bc-f20d9de64d6b",
    "name": "My Live Stream",
    "status": "READY_FOR_USE",
    "streamKey": "ee04affe2a669854052102fe762bd715",
    "pushToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "hlsSources": [
      {
        "name": "origin",
        "url": "https://stream.lunarstream.kozow.com/hls/ee04affe2a669854052102fe762bd715/master.m3u8"
      },
      {
        "name": "bunny",
        "url": "https://bunny.lunarstream.kozow.com/hls/ee04affe2a669854052102fe762bd715/master.m3u8"
      },
      {
        "name": "gcore",
        "url": "https://gcore.lunarstream.kozow.com/hls/ee04affe2a669854052102fe762bd715/master.m3u8"
      }
    ],
    "startedAt": null,
    "endedAt": null,
    "createdAt": "2026-01-12T18:12:38.918Z",
    "rtmpServer": "rtmp://stream.lunarstream.kozow.com/live",
    "streamKeyWithToken": "ee04affe2a669854052102fe762bd715?pushToken=eyJhbGci..."
  },
  "meta": {}
}

Response Fields

FieldDescription
idUnique livestream identifier
nameStream name
statusStream status (READY_FOR_USE, LIVE, ENDED)
streamKeyUnique stream key for RTMP
pushTokenJWT token for RTMP authentication
hlsSourcesArray of HLS playback URLs from active CDN providers
rtmpServerRTMP server URL
streamKeyWithTokenStream key with push token (use in OBS)
createdAtCreation timestamp

Get Livestream

Get a specific livestream by ID.

http
GET /livestream/:id

Headers

HeaderValue
ls-api-key<your_api_key>

Query Parameters

ParameterTypeRequiredDescription
projectIdstringYesProject UUID

Example

bash
curl -X GET "https://api.xxxxxx.xxx/api/v1/livestream/d926da37-56ae-4212-83bc-f20d9de64d6b?projectId=ce4b77e3-3ed0-47ee-a307-ade5f3fbef91" \
  -H "ls-api-key: ls_proj_v1_ydi3lLihcIW0Z9ZAkGz2BjV6caLYqzK41TQAGblW-4E"

Response

json
{
  "data": {
    "id": "d926da37-56ae-4212-83bc-f20d9de64d6b",
    "name": "My Live Stream",
    "status": "READY_FOR_USE",
    "streamKey": "ee04affe2a669854052102fe762bd715",
    "pushToken": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
    "hlsSources": [
      {
        "name": "origin",
        "url": "https://stream.lunarstream.kozow.com/hls/ee04affe2a669854052102fe762bd715/master.m3u8"
      },
      {
        "name": "bunny",
        "url": "https://bunny.lunarstream.kozow.com/hls/ee04affe2a669854052102fe762bd715/master.m3u8"
      }
    ],
    "startedAt": null,
    "endedAt": null,
    "createdAt": "2026-01-12T18:12:38.918Z",
    "rtmpServer": "rtmp://stream.lunarstream.kozow.com/live",
    "streamKeyWithToken": "ee04affe2a669854052102fe762bd715?pushToken=eyJhbGci..."
  },
  "meta": {}
}

Response Fields

FieldDescription
idUnique livestream identifier
nameLivestream name
statusCurrent status: READY_FOR_USE, STARTED, ENDED
streamKeyUnique stream key for RTMP
pushTokenJWT token for authentication
hlsSourcesArray of HLS playback sources (see below)
startedAtTimestamp when stream started (null if not started)
endedAtTimestamp when stream ended (null if not ended)
createdAtCreation timestamp
rtmpServerRTMP server URL
streamKeyWithTokenStream key with push token (use in OBS)

HLS Sources

FieldDescription
nameCDN identifier (e.g., origin, bunny, gcore)
urlFull HLS playback URL

Broadcasting Setup

Use rtmpServer and streamKeyWithToken to configure OBS or other broadcasting software:

  • Server: rtmpServer value
  • Stream Key: streamKeyWithToken value

Playback

Use the first available URL from hlsSources array for video playback. Implement CDN failover by trying subsequent URLs if the primary fails.

Released under the MIT License.