Media

Money

Dispatch

Company

Quickstart

WAVE has one gateway and three ways in. Pick the one that matches who — or what — is calling.

For people: an API key

  1. Claim a key at console.wave.online. The same key authenticates every WAVE product; the gateway enforces scope and metering in one place.
  2. Set it as an environment variable:
export WAVE_API_KEY=wave_sk_live_...
  1. Confirm the gateway is up. No key required, and nothing is billed:
curl -i https://api.wave.online/health
  1. Make your first product call. /v1/clips is metered — it bills by clip minutes:
curl -H "Authorization: Bearer $WAVE_API_KEY" \
  https://api.wave.online/v1/clips

One key authenticates every WAVE product. A live product serves the call; a preview product answers with its preview state until it ships. See which is which at wave.online/products.json.

For agents: MCP

An agent running inside Claude, Cursor, or any MCP-capable client reaches WAVE through the live MCP server rather than raw HTTP:

{
  "mcpServers": {
    "wave": {
      "url": "https://api.wave.online/mcp",
      "transport": "http",
      "headers": { "Authorization": "Bearer $WAVE_API_KEY" }
    }
  }
}

The MCP server is a thin protocol adapter over the same gateway, so the key carries the same scope and metering it would over REST. If your client cannot set a custom header, use the environment-variable pattern documented on MCP server instead. See MCP tools for the full tool catalogue.

For autonomous agents: pay per call over x402

An agent with no account and no key can still call WAVE. It sends the request; the gateway answers with a 402 and the exact terms to pay:

curl -s -X POST https://api.wave.online/v1/render \
  -H "Content-Type: application/json" -d '{}'
{
  "x402Version": 1,
  "error": "payment required",
  "accepts": [{
    "scheme": "exact",
    "network": "base",
    "maxAmountRequired": "600000",
    "resource": "/v1/render",
    "payTo": "0x13014b6e42d6cae7d82798c17244b003c431b68c",
    "asset": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"
  }]
}

The agent signs the accepts[0] authorization, retries with an X-PAYMENT header, and the gateway settles on Base mainnet before serving the request. No signup, no stored card.

The same 402 also carries the terms a second way: a base64-encoded x402 v2 body in the PAYMENT-REQUIRED response header (x402Version: 2, network: "eip155:8453", amount in place of maxAmountRequired). Both describe the same charge; the gateway accepts a retry with either credential header, X-PAYMENT for v1 or PAYMENT-SIGNATURE for v2, so a generic x402 client can use whichever version it already speaks. See Agent commerce for the full challenge-and-settle flow and MPP for the second protocol the gateway accepts alongside x402.

Next