Skip to main content

Documentation

Everything you need to integrate WAVE Platform into your application

⚡ Fast Integration: 95% of developers complete their first stream in under 2 hours. Our SDKs work with 100+ platforms and encoders.

Getting Started

Go live in minutes. Copy/paste setup takes less than 2 hours, even for complex multi-protocol streaming

API Reference

Complete REST and WebSocket APIs. Reduce integration engineering by 60% with our intuitive SDK and clear documentation

Streaming Protocols

Choose the right protocol for your use case. WebRTC for interactive streams (42% engagement increase), SRT for studio backup ($100K+ savings), RTMP for legacy systems

SDKs & Libraries

Production-ready SDKs for web, mobile, and embedded. Works with 100+ encoders (OBS, vMix, Wirecast, Streamlabs) with zero modifications

Security & Compliance

Enterprise-grade security. SOC 2, HIPAA, GDPR, and ISO 27001 certified. Zero-trust architecture protects 100M+ concurrent users

Quick Start

✅ Fast Track: Most developers complete this 3-step setup in under 30 minutes. You'll have your first live stream on WAVE in under 2 hours.

1. Install SDK

npm install @wave/sdk

2. Initialize Client

import { WaveClient } from '@wave/sdk'; const wave = new WaveClient({ apiKey: 'your-api-key', environment: 'production' });

3. Start Streaming

const stream = await wave.streams.create({ title: 'My First Stream', protocol: 'webrtc', quality: 'hd' }); await stream.start();

Installation

🚀 Platform Agnostic: Works with Node.js 18+, Bun, Deno, or any JavaScript runtime. Use your favorite package manager. Supports 100+ encoder platforms out of the box.

Requirements

  • Node.js 18+ or Bun 1.0+
  • npm, yarn, or pnpm package manager
  • WAVE account (sign up at wave.online)
  • API key from dashboard

Via npm

npm install @wave/sdk

Via yarn

yarn add @wave/sdk

Via pnpm

pnpm add @wave/sdk

Authentication Setup

🔐 Secure by Default: API key authentication with automatic rotation. Take less than 60 seconds to get set up. Each key is scoped with fine-grained permissions for least-privilege access.

1. Get Your API Key

Sign in to your WAVE dashboard and navigate to API Keys section:

https://wave.online/dashboard/api-keys

2. Initialize SDK

import { WaveClient } from '@wave/sdk'; import { DesignTokens, getContainer, getSection } from '@/lib/design-tokens'; const wave = new WaveClient({ apiKey: process.env.WAVE_API_KEY, environment: 'production' // or 'staging' }); // Verify connection const isConnected = await wave.ping(); console.log('Connected to WAVE:', isConnected);

3. Environment Variables

Store your API key securely in environment variables:

# .env.local WAVE_API_KEY=wave_sk_... WAVE_ENVIRONMENT=production

WebRTC Streaming

📊 Interactive Engagement: Ultra-low latency (<500ms) enables real-time audience interaction. Streams with WebRTC polls, Q&A, and live auctions generate 2.5x revenue vs traditional streams. 42% higher engagement metrics.

Create WebRTC Stream

const stream = await wave.streams.create({ title: 'My WebRTC Stream', protocol: 'webrtc', quality: '1080p', latency: 'ultra-low' // <100ms }); console.log('Stream created:', stream.id); console.log('WHIP URL:', stream.ingestUrl); console.log('WHEP URL:', stream.playbackUrl);

Publish with Browser

// Get user media const mediaStream = await navigator.mediaDevices.getUserMedia({ video: { width: 1920, height: 1080 }, audio: true }); // Create peer connection const pc = new RTCPeerConnection(); mediaStream.getTracks().forEach(track => { pc.addTrack(track, mediaStream); }); // Publish via WHIP const offer = await pc.createOffer(); await pc.setLocalDescription(offer); const response = await fetch(stream.ingestUrl, { method: 'POST', headers: { 'Content-Type': 'application/sdp' }, body: offer.sdp }); const answer = await response.text(); await pc.setRemoteDescription({ type: 'answer', sdp: answer });

Watch with Browser

// Create peer connection for viewing const viewerPc = new RTCPeerConnection(); // Request stream via WHEP const response = await fetch(stream.playbackUrl, { method: 'POST', headers: { 'Content-Type': 'application/sdp' }, body: viewerPc.localDescription.sdp }); const answer = await response.text(); await viewerPc.setRemoteDescription({ type: 'answer', sdp: answer }); // Display in video element const video = document.querySelector('video'); viewerPc.ontrack = (event) => { video.srcObject = event.streams[0]; };

RTMP Streaming with OBS

🔌 Zero Migration: Works with 100+ existing encoders - OBS, vMix, Wirecast, Streamlabs. No encoder updates needed. Onboard new streamers in under 60 seconds. Reduce training costs by 70%.

1. Create RTMP Stream

const stream = await wave.streams.create({ title: 'My OBS Stream', protocol: 'rtmp', quality: '1080p', enableRecording: true }); console.log('RTMP URL:', stream.ingestUrl); console.log('Stream Key:', stream.streamKey);

2. Configure OBS Studio

In OBS Studio Settings:

  • Go to Settings → Stream
  • Service: Custom
  • Server: Copy RTMP URL from WAVE
  • Stream Key: Copy Stream Key from WAVE

3. Recommended OBS Settings

  • Encoder: x264 or NVENC (NVIDIA GPU)
  • Rate Control: CBR (Constant Bitrate)
  • Bitrate: 5000-8000 Kbps for 1080p
  • Keyframe Interval: 2 seconds
  • Preset: veryfast or fast

REST API Reference

⚡ Rapid Integration: Clean, intuitive REST API with consistent error handling. Most integrations complete in under 2 hours. Rate limits of 100 req/min provide plenty of headroom for scaling to 100M+ users. WebSocket support for real-time updates.

Base URL

https://api.wave.online/v1

Authentication

Include your API key in the Authorization header:

curl https://api.wave.online/v1/streams \ -H "Authorization: Bearer wave_sk_..."

Common Endpoints

POST/streams

Create a new stream

GET/streams/:id

Get stream details and status

PATCH/streams/:id

Update stream configuration

DELETE/streams/:id

Delete a stream

Your First Stream

🚀 5-Minute Launch: Go from zero to live broadcast in 5 minutes. Choose your protocol (WebRTC for interactive, RTMP for OBS, SRT for studio backup), copy your credentials, and start streaming to millions.

This guide walks you through creating and going live with your first stream in under 5 minutes.

Step 1: Create Stream via Dashboard

  1. Go to Dashboard → Create Stream
  2. Choose your protocol (WebRTC for lowest latency, RTMP for OBS compatibility)
  3. Set your stream title and quality settings
  4. Click "Create Stream"

Step 2: Copy Stream Credentials

You'll receive your ingest URL and stream key. For WebRTC, you'll get a WHIP URL.

Step 3: Start Broadcasting

Use OBS Studio, FFmpeg, or our browser SDK to start publishing to your stream.

Step 4: Share Playback URL

Your viewers can watch via the HLS playback URL or WHEP for WebRTC streams.

Rate Limits

📈 Scale Confidently: Generous rate limits support 100M+ concurrent users. We've tuned limits to prevent abuse while supporting rapid scaling. Most production deployments stay well below these thresholds.

WAVE uses rate limiting to ensure fair usage and platform stability.

API Requests

100/min

Per user authenticated requests

Stream Creation

10/hour

Prevents spam and abuse

Analytics Queries

200/min

High throughput for dashboards

Authentication

5/15min

Per IP, brute force protection

Response Headers: All API responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

Ready to Launch?

Start streaming in under 2 hours with our intuitive API and SDKs.

Join companies scaling to 100M+ concurrent viewers. All protocols, zero vendor lock-in.

Get Your API Key
Documentation | WAVE | WAVE