Skip to main content
← Back to Documentation

WAVE API Documentation

Enterprise-grade APIs for live streaming at 100M+ concurrent user scale

REST API v1
WebSocket API
Production Ready
99.99% SLA

API Base URL

All API requests are made to this base URL

Production Endpoint

https://api.wave.inc/v1

Authentication

Bearer token in Authorization header

Rate Limits

60-1000 req/min based on tier

Response Format

JSON with UTF-8 encoding

Example: Create Stream

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"
  }
}

HTTP Status Codes

Standard status codes used throughout the API

200

OK

Request succeeded

201

Created

Resource created successfully

400

Bad Request

Invalid request parameters

401

Unauthorized

Missing or invalid API key

403

Forbidden

Insufficient permissions

404

Not Found

Resource does not exist

429

Too Many Requests

Rate limit exceeded

500

Internal Server Error

Server error occurred

Common API Patterns

Best practices and patterns for using WAVE API

Error Handling

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request parameters",
    "details": {
      "field": "protocol",
      "reason": "Must be one of: webrtc, rtmp, srt, ndi"
    },
    "request_id": "req_xyz789"
  }
}

Pagination

GET /v1/streams?limit=20&cursor=abc123

{
  "data": [...],
  "pagination": {
    "next_cursor": "def456",
    "has_more": true,
    "total": 150
  }
}

Idempotency

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
API Documentation - WAVE Developer Platform | WAVE