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')"