Skip to content

Media Servers API

Endpoints for retrieving available media servers. Requires API Key authentication.

Get Available Media Servers

Get list of media servers available for streaming.

http
GET /media-servers/available

Headers

HeaderValue
ls-api-key<your_api_key>

Query Parameters

ParameterTypeRequiredDescription
projectIdstringYesProject UUID

Example

bash
curl -X GET "https://api.lunarstream.kozow.com/api/v1/media-servers/available?projectId=ce4b77e3-3ed0-47ee-a307-ade5f3fbef91" \
  -H "ls-api-key: ls_proj_v1_ydi3lLihcIW0Z9ZAkGz2BjV6caLYqzK41TQAGblW-4E"
javascript
const response = await fetch(
  'https://api.lunarstream.kozow.com/api/v1/media-servers/available?projectId=ce4b77e3-3ed0-47ee-a307-ade5f3fbef91',
  {
    headers: {
      'ls-api-key': process.env.LUNAR_STREAM_API_KEY
    }
  }
);
const { data } = await response.json();
python
import requests

response = requests.get(
    'https://api.lunarstream.kozow.com/api/v1/media-servers/available',
    headers={'ls-api-key': os.environ['LUNAR_STREAM_API_KEY']},
    params={'projectId': 'ce4b77e3-3ed0-47ee-a307-ade5f3fbef91'}
)
data = response.json()['data']

Response

json
{
  "data": [
    {
      "id": "40fb0295-9fdf-4a97-b1a8-43cdc64dd512",
      "name": "zlmediakit",
      "serverType": "ZLMediaKIT",
      "host": "stream.lunarstream.kozow.com",
      "port": 1935,
      "config": null,
      "createdAt": "2026-01-12T18:06:42.495Z"
    },
    {
      "id": "a88c26e5-7c30-43eb-a08b-5c58bf7c712a",
      "name": "mediamtx",
      "serverType": "MediaMTX",
      "host": "stream.lunarstream.kozow.com",
      "port": 1936,
      "config": null,
      "createdAt": "2026-01-12T18:06:57.369Z"
    }
  ],
  "meta": {}
}

Server Types

TypeDescriptionBest For
ZLMediaKITHigh-performance C++ media serverProduction, high-volume
MediaMTXLightweight Go-based serverDevelopment, testing

Choosing a Media Server

When creating a livestream, you need to specify which media server to use:

javascript
// Get available servers
const servers = await getAvailableMediaServers(projectId);

// Choose ZLMediaKIT for production
const zlmServer = servers.find(s => s.serverType === 'ZLMediaKIT');

// Create livestream with selected server
const livestream = await createLivestream({
  name: 'My Stream',
  projectId: projectId,
  mediaServerId: zlmServer.id
});

RTMP Connection

Each media server provides RTMP ingestion:

rtmp://{host}:{port}/live/{streamKey}?pushToken={token}

Example:

rtmp://stream.lunarstream.kozow.com:1935/live/ee04affe2a669854052102fe762bd715?pushToken=eyJhbGci...

Released under the MIT License.