Skip to main content
← Back to API Documentation

Official SDKs

Client libraries for 6 programming languages and platforms

6 Languages
Type-safe
Auto-generated
Well-documented

Why Use Official SDKs?

Type Safety

Full TypeScript/type definitions for autocomplete and compile-time safety

Error Handling

Built-in retry logic, exponential backoff, and typed error responses

Automatic Updates

SDKs auto-generated from OpenAPI spec, always in sync with API

Authentication

Simplified authentication with API key management

Pagination

Automatic pagination handling with iterators and cursors

Community Support

Active community, regular updates, and dedicated support

JavaScript / TypeScript

Web
Node.js
2.4k
v2.1.0

Installation

npm install @wave/api-client

Quick Start

import { WaveClient } from '@wave/api-client';

import { DesignTokens, getContainer, getSection } from '@/lib/design-tokens';
const client = new WaveClient({
  apiKey: process.env.WAVE_API_KEY
});

// Create stream
const stream = await client.streams.create({
  title: 'My First Stream',
  protocol: 'webrtc'
});

// Get analytics
const analytics = await client.analytics.getStream(stream.id);

console.log('Viewers:', analytics.concurrent_viewers);

Python

Python 3.8+
1.2k
v1.8.0

Installation

pip install wave-python

Quick Start

from wave import WaveClient

client = WaveClient(api_key=os.environ['WAVE_API_KEY'])

# Create stream
stream = client.streams.create(
    title='My First Stream',
    protocol='webrtc'
)

# Get analytics
analytics = client.analytics.get_stream(stream.id)

print(f"Viewers: {analytics.concurrent_viewers}")

Go

Go 1.19+
850
v0.9.0

Installation

go get github.com/wave-inc/wave-go

Quick Start

package main

import (
    "fmt"
    "os"
    "github.com/wave-inc/wave-go"
)

func main() {
    client := wave.NewClient(os.Getenv("WAVE_API_KEY"))

    // Create stream
    stream, _ := client.Streams.Create(&wave.StreamCreateParams{
        Title: "My First Stream",
        Protocol: "webrtc",
    })

    // Get analytics
    analytics, _ := client.Analytics.GetStream(stream.ID)

    fmt.Printf("Viewers: %d\n", analytics.ConcurrentViewers)
}

Swift (iOS)

iOS 14+
macOS 11+
640
v1.5.0

Installation

pod "WaveSDK", "~> 1.5"

Quick Start

import WaveSDK

let client = WaveClient(apiKey: ProcessInfo.processInfo.environment["WAVE_API_KEY"]!)

// Create stream
client.streams.create(
    title: "My First Stream",
    protocol: .webrtc
) { result in
    switch result {
    case .success(let stream):
        print("Stream ID: \(stream.id)")

        // Get analytics
        client.analytics.getStream(stream.id) { analyticsResult in
            if case .success(let analytics) = analyticsResult {
                print("Viewers: \(analytics.concurrentViewers)")
            }
        }
    case .failure(let error):
        print("Error: \(error)")
    }
}

Kotlin (Android)

Android 8+
520
v1.3.0

Installation

implementation "com.wave:wave-android:1.3.0"

Quick Start

import com.wave.WaveClient
import com.wave.models.StreamCreateParams

val client = WaveClient(System.getenv("WAVE_API_KEY"))

// Create stream
val stream = client.streams.create(
    StreamCreateParams(
        title = "My First Stream",
        protocol = Protocol.WEBRTC
    )
)

// Get analytics
val analytics = client.analytics.getStream(stream.id)

println("Viewers: ${analytics.concurrentViewers}")

Ruby

Ruby 2.7+
380
v0.7.0

Installation

gem install wave-ruby

Quick Start

require 'wave'

client = Wave::Client.new(api_key: ENV['WAVE_API_KEY'])

# Create stream
stream = client.streams.create(
  title: 'My First Stream',
  protocol: 'webrtc'
)

# Get analytics
analytics = client.analytics.get_stream(stream.id)

puts "Viewers: #{analytics.concurrent_viewers}"

Common SDK Features

Features available across all SDKs

Stream Management

  • • Create/update/delete streams
  • • Multi-protocol support
  • • Recording configuration
  • • Transcoding profiles

Analytics

  • • Real-time viewer counts
  • • Historical analytics
  • • Engagement metrics
  • • Geographic distribution

Content

  • • Recording management
  • • VOD uploads
  • • Media library
  • • Download URLs

Need Help?

Official SDKs - WAVE API Documentation | WAVE