WAVE SDK for Python
Media infrastructure for the agentic internet. Official Python SDK for WAVE, by WAVE Online, LLC.
Installation
pip install wave-sdk
Quick start
from wave_sdk import Wave
client = Wave(api_key="your-api-key", organization_id="org_123")
# Search your organization's indexed media
results = client.search.search(query="product launch")
# List your org's published pricing tiers (requires the pricing:read scope)
manifests = client.pricing.list_manifests()
# Transcribe a recording and auto-generate captions for it
transcription = client.transcribe.create(source_url="https://example.com/clip.mp4")
captions = client.captions.generate(media_id=transcription.id, media_type="video")
# Propose a plan across WAVE products for a plain-English intent (requires
# composer:write). A proposal never executes anything.
proposal = client.compose.compose("live captions for tomorrow's webinar")
print(proposal.stages, proposal.price_rows, proposal.executes) # executes is always False
All 43 APIs
P1 - Core
| API | Description |
|---|---|
wave.pipeline |
Live streaming engine |
wave.studio |
Multi-camera production |
P2 - Enterprise
| API | Description |
|---|---|
wave.fleet |
Device fleet management |
wave.ghost |
AI auto-directing |
wave.mesh |
Multi-region failover |
wave.edge |
CDN and edge workers |
wave.pulse |
Analytics and BI |
wave.prism |
Virtual Device Bridge |
wave.zoom |
Zoom integration |
P3 - Content & Commerce
| API | Description |
|---|---|
wave.clips |
Video clips |
wave.editor |
Video editor |
wave.voice |
Voice synthesis |
wave.phone |
Phone calls |
wave.collab |
Collaboration |
wave.captions |
Auto-captions |
wave.chapters |
Video chapters |
wave.studio_ai |
AI assistant |
wave.transcribe |
Transcription |
wave.sentiment |
Sentiment analysis |
wave.search |
Content search |
wave.scene |
Scene detection |
wave.vault |
Recording storage |
wave.marketplace |
Marketplace |
wave.connect |
Integrations |
wave.distribution |
Social simulcast |
wave.desktop |
Desktop Node |
wave.signage |
Digital signage |
wave.qr |
QR codes |
wave.audience |
Polls/Q&A |
wave.creator |
Monetization |
P4 - Specialized
| API | Description |
|---|---|
wave.podcast |
Podcast production |
wave.slides |
Slides-to-video |
wave.usb |
USB relay |
Cross-cutting
| API | Description |
|---|---|
wave.notifications |
User notifications, preferences, delivery |
wave.drm |
Digital rights management |
wave.realtime |
Live control and event plane (WebSocket) |
Agent-native and comms productization (2.1.0)
| API | Description |
|---|---|
wave.transcripts |
The voice-agent transcript (list + read) |
wave.mail |
Send, reply, search, transcript email, and SMS |
wave.meter |
Read-only usage ledger and rollup (meter:read) |
wave.pricing |
The seller tier-manifest registry (pricing:read/:write) |
wave.perception |
Agentic live-media subscribe() control plane |
wave.inference |
One completion endpoint through the measured funnel |
Composer (PR4)
| API | Description |
|---|---|
wave.compose |
POST /v1/compose: propose a plan across products (composer:write/:read) |
wave.compose.compose(intent, ...) never executes anything — the response's
executes field is a literal False. wave.compose.save_flow(proposal)
saves the proposal as a flow with createdBy.kind: "wave-composer"; until a
composer:write console token exists, it never calls the console silently —
it prints (and returns) the exact curl a signed-in console session can run:
proposal = client.compose.compose("live captions for tomorrow's webinar", budget_usd=5)
curl_cmd = client.compose.save_flow(proposal) # prints the curl; does not save it itself
Error handling
from wave_sdk import WaveError, RateLimitError
try:
client.clips.get("invalid-id")
except RateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after}s")
except WaveError as e:
print(f"{e.code}: {e.message} ({e.status_code})")
Requirements
- Python 3.9+
- httpx
- pydantic
Migrating from 2.0.0
If you installed wave-av-sdk or wave-sdk at 2.0.0, two names changed:
- Install
wave-sdk(notwave-av-sdk). - Import
wave_sdk(notwave).
-from wave import Wave
+from wave_sdk import Wave
Nothing below the top-level name changed, so replacing the import line is the
whole migration. The old wave package collided with the Python standard
library's own wave module and was never importable from an installed
2.0.0 — full detail, the uninstall step, and a bulk find-and-replace are in
MIGRATING.md.
Note that the wave.<api> names in the tables above are attributes of a client
instance, not module paths: name your client whatever you like
(client = Wave(...) in the quick start above), and client.clips is the row
the table writes as wave.clips.
License
Apache-2.0 - WAVE Online, LLC. See LICENSE and NOTICE; the WAVE marks are not licensed under the Apache grant.
Metadata
Release files for wave-sdk 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wave_sdk-2.2.0.tar.gz | 64.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wave_sdk-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 131.6 kB
Release files / wave_sdk-2.2.0.tar.gz
| Download URL | wave_sdk-2.2.0.tar.gz |
|---|---|
| Size | 64.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2d4b3a5af1b31e159dcaf912f3c56a8137f28b7ac49e067c87ccd1dba5cf644
|
|
BLAKE2b-256 checksum How to use checksums |
a19e0389cdd51f3a46d978655a148fffd0619270a41ea28ae2f10b52fc18df34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency logRelease files / wave_sdk-2.2.0-py3-none-any.whl
| Download URL | wave_sdk-2.2.0-py3-none-any.whl |
|---|---|
| Size | 67.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c11bd3db94a1b7438ef4861452c11c890648434a9bbe1c95573069b17921fec9
|
|
BLAKE2b-256 checksum How to use checksums |
011287d0f55defb74cf3d17df8e94535207e12d5f8d50c070eff76e17d6d16b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.
Transparency log