Enterprise-grade APIs for live streaming at 100M+ concurrent user scale
All API requests are made to this base URL
Production Endpoint
https://api.wave.inc/v1Bearer token in Authorization header
60-1000 req/min based on tier
JSON with UTF-8 encoding
v1. Major version changes are announced 6 months in advance with migration guides provided.From API key to live streaming in under 10 minutes
Complete reference for 500+ REST endpoints covering streams, analytics, content, and more
Real-time bidirectional communication for live stream events and analytics updates
Configure event-driven integrations with HMAC signature verification
Client libraries for JavaScript, Python, Go, Swift, Kotlin, and Ruby
API keys, OAuth 2.0, JWT tokens, and scope-based permission management
Rate limiting tiers, headers, quotas, and best practices for high-volume usage
Complete example with request and response
curl -X POST https://api.wave.inc/v1/streams \
-H "Authorization: Bearer wave_live_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"title": "Product Launch 2025",
"protocol": "webrtc",
"recording": {
"enabled": true,
"format": "mp4"
},
"transcoding": {
"enabled": true,
"profiles": ["720p", "1080p"]
}
}'
# Response: 201 Created
{
"id": "stream_abc123xyz",
"title": "Product Launch 2025",
"status": "idle",
"ingest": {
"webrtc": {
"whip_url": "https://rtc.wave.inc/whip/stream_abc123xyz"
}
},
"playback": {
"hls": "https://stream.wave.inc/hls/stream_abc123xyz/index.m3u8"
}
}Standard status codes used throughout the API
Request succeeded
Resource created successfully
Invalid request parameters
Missing or invalid API key
Insufficient permissions
Resource does not exist
Rate limit exceeded
Server error occurred
Best practices and patterns for using WAVE API
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid request parameters",
"details": {
"field": "protocol",
"reason": "Must be one of: webrtc, rtmp, srt, ndi"
},
"request_id": "req_xyz789"
}
}GET /v1/streams?limit=20&cursor=abc123
{
"data": [...],
"pagination": {
"next_cursor": "def456",
"has_more": true,
"total": 150
}
}Use the Idempotency-Key header for safe retries on POST/PATCH requests:
POST /v1/streams Idempotency-Key: unique-uuid-here Authorization: Bearer wave_live_xxxxx # Same key within 24h returns same response # without creating duplicate resources