AIWave API

AIWave API Documentation

The AIWave API gives you one OpenAI-compatible endpoint for DeepSeek, GLM, Kimi, Qwen and ERNIE. If your code already talks to OpenAI, you change two lines — the base_url and the API key — and every Chinese AI model below becomes available. Zero Data Retention, no separate accounts per provider, one balance in USD.

Get an API Key →See Pricing →

Base URL and authentication

Every endpoint lives under a single base URL. Authentication uses a bearer token, exactly as the OpenAI API does, so existing SDKs and HTTP clients work without modification.

Base URL:  https://aiwave.live/v1
Header:    Authorization: Bearer sk-YOUR_KEY

Create a key in the console. Keys are scoped to your account balance; there is no per-provider signup.

Quick start: migrate from OpenAI in two lines

The official openai-python SDK works unchanged. Point it at AIWave and pick any model ID from the table below.

from openai import OpenAI

client = OpenAI(
    api_key="sk-YOUR_KEY",
    base_url="https://aiwave.live/v1",   # ← only change
)

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Explain MoE routing in two sentences."}],
)
print(response.choices[0].message.content)

Node.js is the same idea with the openai-node SDK:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.AIWAVE_API_KEY,
  baseURL: "https://aiwave.live/v1",
});

const res = await client.chat.completions.create({
  model: "glm-5",
  messages: [{ role: "user", content: "Hello!" }],
});

API reference

EndpointMethodReference
/v1/chat/completionsPOSTChat Completions API →
/v1/embeddingsPOSTEmbeddings API →
/v1/modelsGETList Models API →

Guides

Available models

These are the model IDs currently served by the gateway, grouped by provider. Pass the ID verbatim as the model field. For per-model context windows, capabilities and price, browse the model directory; live rates are on the pricing page.

ProviderModelsModel IDs
DeepSeek10deepseek-chat deepseek-r1 deepseek-r1-distill-qwen-14b deepseek-r1-distill-qwen-32b deepseek-reasoner deepseek-v3 deepseek-v3.2 deepseek-v3.2-think deepseek-v4-flash deepseek-v4-pro
GLM (Zhipu AI)9glm-4.5 glm-4.5-air glm-4.6 glm-4.7 glm-4.7-flash glm-4.7-flashx glm-5 glm-5-turbo glm-5.1
Kimi (Moonshot AI)6kimi-k2.5 kimi-k3 moonshot-v1-32k moonshot-v1-32k-vision-preview moonshot-v1-8k moonshot-v1-8k-vision-preview
Qwen (Alibaba)8qwen3-235b-a22b-instruct-2507 qwen3-235b-a22b-thinking-2507 qwen3-32b qwen3-8b qwen3-coder-480b-a35b-instruct qwen3.5-122b-a10b qwen3.5-27b qwen3.5-397b-a17b
ERNIE (Baidu)27ERNIE 4.5 Turbo ERNIE 5.0 ernie-3.5-128k ernie-3.5-8k ernie-3.5-8k-preview ernie-4.0-8k ernie-4.0-8k-latest ernie-4.0-8k-preview ernie-4.0-turbo-128k ernie-4.0-turbo-8k ernie-4.0-turbo-8k-latest ernie-4.0-turbo-8k-preview ernie-4.5-8k ernie-4.5-turbo ernie-5.0 ernie-5.0-thinking-preview ernie-5.1 ernie-char-8k ernie-char-fiction-8k ernie-lite-8k ernie-lite-pro-128k ernie-novel-8k ernie-speed-128k ernie-speed-8k ernie-speed-pro-128k ernie-tiny-8k ernie-x1.1
MiniMax1minimax-m2.5

Model availability changes as providers ship new versions. Call GET /v1/models at runtime rather than hard-coding a list; see the changelog for additions and deprecations.

Streaming responses

Set stream: true to receive server-sent events. The chunk format matches the OpenAI specification, so streaming parsers written for OpenAI work unchanged.

stream = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[{"role": "user", "content": "Write a haiku about latency."}],
    stream=True,
)
for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

The stream terminates with a data: [DONE] sentinel. Full parameter reference is in the Chat Completions documentation.

Error codes

Errors use standard HTTP status codes with a JSON body describing the failure.

StatusMeaningWhat to do
400Bad RequestMalformed JSON, missing messages, or an unknown parameter.
401UnauthorizedMissing or invalid Authorization: Bearer header.
403ForbiddenThe key is valid but not permitted to use the requested model.
404Not FoundUnknown model ID. Call GET /v1/models for the current list.
429Too Many RequestsRate limit or quota exhausted. Back off exponentially and retry.
500Internal Server ErrorUnexpected gateway error. Safe to retry with backoff.
503Service UnavailableUpstream model provider is overloaded. Retry, or fall back to another model.
{
  "error": {
    "message": "Model not found",
    "type": "invalid_request_error",
    "code": "model_not_found"
  }
}

For 429 and 503, retry with exponential backoff and consider falling back to a second model — the same request body works across every provider, which makes fallback a one-line change.

Compatibility notes

Where to go next

Start with a USD balance →Browse models →

One endpoint covers 25+ Chinese AI models; verify the live catalog before production.