Client libraries for 6 programming languages and platforms
Full TypeScript/type definitions for autocomplete and compile-time safety
Built-in retry logic, exponential backoff, and typed error responses
SDKs auto-generated from OpenAPI spec, always in sync with API
Simplified authentication with API key management
Automatic pagination handling with iterators and cursors
Active community, regular updates, and dedicated support
npm install @wave/api-clientimport { 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);pip install wave-pythonfrom 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 get github.com/wave-inc/wave-gopackage 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)
}pod "WaveSDK", "~> 1.5"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)")
}
}implementation "com.wave:wave-android:1.3.0"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}")gem install wave-rubyrequire '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}"Features available across all SDKs