Skip to content

cURL Examples

Command-line examples for testing Lunar Stream API.

Environment Variables

bash
export LUNAR_API_KEY="ls_proj_v1_ydi3lLihcIW0Z9ZAkGz2BjV6caLYqzK41TQAGblW-4E"
export LUNAR_PROJECT_ID="ce4b77e3-3ed0-47ee-a307-ade5f3fbef91"
export LUNAR_API_URL="https://api.lunarstream.kozow.com/api/v1"

Media Servers

Get Available Media Servers

bash
curl -X GET "${LUNAR_API_URL}/media-servers/available?projectId=${LUNAR_PROJECT_ID}" \
  -H "ls-api-key: ${LUNAR_API_KEY}"

Livestreams

Create Livestream

bash
curl -X POST "${LUNAR_API_URL}/livestream" \
  -H "ls-api-key: ${LUNAR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Test Stream",
    "projectId": "'"${LUNAR_PROJECT_ID}"'",
    "mediaServerId": "40fb0295-9fdf-4a97-b1a8-43cdc64dd512"
  }'

Get Livestream

bash
curl -X GET "${LUNAR_API_URL}/livestream/LIVESTREAM_ID?projectId=${LUNAR_PROJECT_ID}" \
  -H "ls-api-key: ${LUNAR_API_KEY}"

List Livestreams

bash
curl -X GET "${LUNAR_API_URL}/livestream?projectId=${LUNAR_PROJECT_ID}&page=1&limit=10" \
  -H "ls-api-key: ${LUNAR_API_KEY}"

Update Livestream

bash
curl -X PATCH "${LUNAR_API_URL}/livestream/LIVESTREAM_ID" \
  -H "ls-api-key: ${LUNAR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "'"${LUNAR_PROJECT_ID}"'",
    "name": "Updated Stream Name"
  }'

Delete Livestream

bash
curl -X DELETE "${LUNAR_API_URL}/livestream/LIVESTREAM_ID?projectId=${LUNAR_PROJECT_ID}" \
  -H "ls-api-key: ${LUNAR_API_KEY}"

Generate Push Token

bash
curl -X POST "${LUNAR_API_URL}/livestream/generate-push-token" \
  -H "ls-api-key: ${LUNAR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "'"${LUNAR_PROJECT_ID}"'",
    "streamKey": "ee04affe2a669854052102fe762bd715",
    "expiresIn": 7200
  }'

Public APIs (No Auth Required)

Get Stream Info

bash
curl -X GET "${LUNAR_API_URL}/livestreams/stream-info/ee04affe2a669854052102fe762bd715"

Testing with jq

Format JSON output with jq:

bash
# Get media servers with formatted output
curl -s -X GET "${LUNAR_API_URL}/media-servers/available?projectId=${LUNAR_PROJECT_ID}" \
  -H "ls-api-key: ${LUNAR_API_KEY}" | jq '.data'

# Create stream and extract RTMP URL
curl -s -X POST "${LUNAR_API_URL}/livestream" \
  -H "ls-api-key: ${LUNAR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Test Stream",
    "projectId": "'"${LUNAR_PROJECT_ID}"'",
    "mediaServerId": "40fb0295-9fdf-4a97-b1a8-43cdc64dd512"
  }' | jq '{
    rtmpUrl: "\(.data.rmtpServer)/\(.data.streamKeyWithParams)",
    hlsUrl: .data.hlsSources[0].url
  }'

Shell Script

bash
#!/bin/bash
# create-stream.sh

set -e

NAME="${1:-My Stream}"

# Get first available media server
SERVER_ID=$(curl -s -X GET "${LUNAR_API_URL}/media-servers/available?projectId=${LUNAR_PROJECT_ID}" \
  -H "ls-api-key: ${LUNAR_API_KEY}" | jq -r '.data[0].id')

if [ "$SERVER_ID" == "null" ]; then
  echo "No media servers available"
  exit 1
fi

# Create livestream
RESULT=$(curl -s -X POST "${LUNAR_API_URL}/livestream" \
  -H "ls-api-key: ${LUNAR_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "'"${NAME}"'",
    "projectId": "'"${LUNAR_PROJECT_ID}"'",
    "mediaServerId": "'"${SERVER_ID}"'"
  }')

echo "Stream created!"
echo "RTMP URL: $(echo $RESULT | jq -r '"\(.data.rmtpServer)/\(.data.streamKeyWithParams)"')"
echo "HLS URL: $(echo $RESULT | jq -r '.data.hlsSources[0].url')"

Released under the MIT License.