文本调用 · cURL
curl https://tryaiapi.com/v1/chat/completions \ -H "Authorization: Bearer $INFWAVE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [ {"role": "user", "content": "Hello"} ] }'
视觉模型任务 · cURL
curl https://tryaiapi.com/v1/video/generations \ -H "Authorization: Bearer $INFWAVE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seedance-2.0", "prompt": "A cinematic product shot", "duration": 5, "resolution": "480p", "aspect_ratio": "16:9" }'
Models

文本模型与视觉模型,一个 Key 接入

统一查看 Claude、ChatGPT、Gemini、DeepSeek 与视觉模型的调用入口、模型 ID 获取方式和状态;完整目录见 模型页面

Claude 模型
输入价格$9.00 / 1M Tokens 起
输出价格$45.00 / 1M Tokens 起
官方价对比登录后显示专属折扣

当前可直接调用。支持 Anthropic Messages 原生入口,也可通过 OpenAI 兼容入口接入团队现有工具。

入口
/v1/messages
状态
可直接调用
计费
Token
Claude 反代 按量计费 Messages
ChatGPT 模型
输入价格$0.20 / 1M Tokens 起
输出价格$1.25 / 1M Tokens 起
官方价对比按模型分组显示

开通后返回可用模型 ID。适合已有 OpenAI SDK、Cursor、Codex CLI、LangChain 的迁移场景。

入口
/v1/chat/completions
状态
需开通
计费
Token
OpenAI 兼容 按量计费 工具
Gemini 模型
输入价格$0.20 / 1M Tokens 起
输出价格$1.25 / 1M Tokens 起
官方价对比按模型分组显示

通过 OpenAI 兼容入口承接多模态路由,具体模型 ID 以控制台和 /v1/models 为准。

入口
/v1/chat/completions
状态
需开通
计费
Token
OpenAI 兼容 多模态 按量计费
DeepSeek 模型
输入价格$0.20 / 1M Tokens 起
输出价格$1.25 / 1M Tokens 起
官方价对比按模型分组显示

面向成本控制和推理场景。公开页保留稳定能力,具体可用别名仍以实时模型接口返回为准。

入口
/v1/chat/completions
状态
需开通
计费
Token
推理 成本控制 按量计费
Seedance 2.0
任务价格¥1.40 / 5 秒起
秒价¥0.28 / 秒起
官方价对比按视频任务规则显示

已接入视频异步任务流程。使用同一个 API Key 提交生成任务,轮询 job 状态,并在使用记录中查看任务详情。

固定别名
doubao-seedance-2.0
入口
/v1/video/generations
状态
可直接调用
视频任务 异步生成 任务计费
没有符合当前筛选条件的模型。

机器可读模型目录见 /docs/models.json;接口定义见 /docs/openapi.json

curl · List models
curl https://tryaiapi.com/v1/models \ -H "Authorization: Bearer $INFWAVE_KEY"
Quick Start

三步接入

STEP 01

申请 API Key

登录控制台,创建 API Key。支持对公账户 + 增值税发票。

STEP 02

选择调用入口

文本模型替换 SDK base URL;视觉模型使用 /v1/video/generations 提交任务。

STEP 03

查看结果与用量

文本请求实时返回;视觉模型按任务轮询,完成后可下载结果,并进入使用记录汇总。

API Endpoints

调用入口

GET

/v1/models

接入前查询当前可调用模型 ID。ChatGPT 模型 ID 以此接口返回为准。

POST

/v1/chat/completions

OpenAI 兼容入口。完成 base URL 替换后,OpenAI SDK、Cursor、Codex CLI、LangChain 可走此入口。

POST

/v1/messages

Anthropic Messages 原生入口。Claude Code 与 Anthropic SDK 可直接切换到 Infwave base URL。

POST

/v1/video/generations

视觉模型异步任务入口。提交 prompt、时长、清晰度和画幅后返回 job_id 与 poll_url。

GET

/v1/video/generations/{task_id}

轮询视觉模型任务状态,查看完成结果、失败原因和视频下载地址。

Code Examples · Advanced

进阶场景示例

文本高级能力与视觉模型异步任务示例,每个场景给出 cURL / Python / JavaScript 三种写法。

cURL · 流式响应(SSE)
curl -N https://tryaiapi.com/v1/chat/completions \ -H "Authorization: Bearer $INFWAVE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [{"role": "user", "content": "写一首关于云的短诗"}], "stream": true }'
Python · 流式响应
from openai import OpenAI client = OpenAI(base_url="https://tryaiapi.com/v1", api_key="$INFWAVE_KEY") stream = client.chat.completions.create( model="claude-sonnet-4-6", messages=[{"role": "user", "content": "写一首关于云的短诗"}], stream=True, ) for chunk in stream: print(chunk.choices[0].delta.content or "", end="")
JavaScript · 流式响应
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://tryaiapi.com/v1", apiKey: process.env.INFWAVE_KEY, }); const stream = await client.chat.completions.create({ model: "claude-sonnet-4-6", messages: [{ role: "user", content: "写一首关于云的短诗" }], stream: true, }); for await (const chunk of stream) { process.stdout.write(chunk.choices[0].delta.content ?? ""); }
cURL · 视觉模型异步任务
# 1. Submit job curl https://tryaiapi.com/v1/video/generations \ -H "Authorization: Bearer $INFWAVE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "doubao-seedance-2.0", "prompt": "A cinematic product shot on a clean studio desk", "duration": 5, "resolution": "480p", "aspect_ratio": "16:9" }' # 2. Poll result curl https://tryaiapi.com/v1/video/generations/$JOB_ID \ -H "Authorization: Bearer $INFWAVE_KEY"
Python · 视觉模型异步任务
import os import time import requests headers = { "Authorization": f"Bearer {os.environ['INFWAVE_KEY']}", "Content-Type": "application/json", } job = requests.post( "https://tryaiapi.com/v1/video/generations", headers=headers, json={ "model": "doubao-seedance-2.0", "prompt": "A cinematic product shot on a clean studio desk", "duration": 5, "resolution": "480p", "aspect_ratio": "16:9", }, ) job.raise_for_status() poll_url = job.json()["poll_url"] while True: result = requests.get(poll_url, headers=headers) result.raise_for_status() data = result.json() if data["status"] in {"completed", "failed", "cancelled", "timeout"}: print(data) break time.sleep(5)
JavaScript · 视觉模型异步任务
const headers = { Authorization: `Bearer ${process.env.INFWAVE_KEY}`, "Content-Type": "application/json", }; const submit = await fetch("https://tryaiapi.com/v1/video/generations", { method: "POST", headers, body: JSON.stringify({ model: "doubao-seedance-2.0", prompt: "A cinematic product shot on a clean studio desk", duration: 5, resolution: "480p", aspect_ratio: "16:9", }), }); const job = await submit.json(); while (true) { const res = await fetch(job.poll_url, { headers }); const result = await res.json(); if (["completed", "failed", "cancelled", "timeout"].includes(result.status)) { console.log(result); break; } await new Promise((resolve) => setTimeout(resolve, 5000)); }
cURL · 工具调用(Function Calling)
curl https://tryaiapi.com/v1/chat/completions \ -H "Authorization: Bearer $INFWAVE_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [{"role": "user", "content": "杭州天气怎么样?"}], "tools": [{ "type": "function", "function": { "name": "get_weather", "parameters": { "type": "object", "properties": {"city": {"type": "string"}} } } }] }'
Python · 工具调用
from openai import OpenAI client = OpenAI(base_url="https://tryaiapi.com/v1", api_key="$INFWAVE_KEY") resp = client.chat.completions.create( model="claude-sonnet-4-6", messages=[{"role": "user", "content": "杭州天气怎么样?"}], tools=[{ "type": "function", "function": { "name": "get_weather", "parameters": { "type": "object", "properties": {"city": {"type": "string"}}, }, }, }], ) print(resp.choices[0].message.tool_calls)
JavaScript · 工具调用
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://tryaiapi.com/v1", apiKey: process.env.INFWAVE_KEY, }); const resp = await client.chat.completions.create({ model: "claude-sonnet-4-6", messages: [{ role: "user", content: "杭州天气怎么样?" }], tools: [{ type: "function", function: { name: "get_weather", parameters: { type: "object", properties: { city: { type: "string" } }, }, }, }], }); console.log(resp.choices[0].message.tool_calls);
SDK Configuration

各客户端配置示例

Claude Code

Claude 全系
# 设置环境变量后直接启动 export ANTHROPIC_BASE_URL=https://tryaiapi.com export ANTHROPIC_API_KEY=your-infwave-key claude

Cursor

Claude + ChatGPT
# Settings → Models → Override OpenAI Base URL Base URL: https://tryaiapi.com API Key: your-infwave-key # Claude 可直接填 claude-sonnet-4-6;ChatGPT 模型 ID 先查 /v1/models

Anthropic Python SDK

Claude 全系
import anthropic client = anthropic.Anthropic( base_url="https://tryaiapi.com", api_key="your-infwave-key", ) msg = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": "Hello"}], )

OpenAI Python SDK

Claude + ChatGPT
# model 换名即切 provider from openai import OpenAI client = OpenAI( base_url="https://tryaiapi.com/v1", api_key="your-infwave-key", ) # Claude resp = client.chat.completions.create( model="claude-sonnet-4-6", messages=[{"role": "user", "content": "Hello"}], ) # ChatGPT — 同一个 client,具体模型 ID 先查 /v1/models resp = client.chat.completions.create( model="chatgpt-model-id", messages=[{"role": "user", "content": "Hello"}], )

视觉模型 API

Seedance / 视频任务
# 标准 HTTP 调用:提交任务后轮询 poll_url curl https://tryaiapi.com/v1/video/generations \ -H "Authorization: Bearer your-infwave-key" \ -H "Content-Type: application/json" \ -d '{"model":"doubao-seedance-2.0","prompt":"A product video","duration":5,"resolution":"480p","aspect_ratio":"16:9"}'

Codex CLI

Claude + ChatGPT
# Codex CLI 使用 OpenAI 兼容格式 export OPENAI_BASE_URL=https://tryaiapi.com/v1 export OPENAI_API_KEY=your-infwave-key codex

LangChain

Claude 全系
from langchain_anthropic import ChatAnthropic llm = ChatAnthropic( base_url="https://tryaiapi.com", api_key="your-infwave-key", model="claude-sonnet-4-6", )
FAQ

常见问题

如何验证我用的是真模型?
每次请求的响应会包含上游官方的原始字段(Anthropic 的 request_id、OpenAI 的 idsystem_fingerprint),与直连 API 完全一致。你也可以访问 透明度页面 查看数据库 schema,确认我们不存储任何 prompt 或 response 内容。
计费方式是什么?
文本模型按 token 用量计费;视觉模型按任务、时长和上游模型计费。登录控制台后可查看实时余额、用量明细、按模型/日期/Key 分组导出。支持对公转账 + 增值税发票。
你们会存储我的 prompt 和 response 吗?
文本通道不在普通数据库层保存 prompt 或 response 正文。视觉模型属于异步任务,任务参数、状态、成本、结果地址和失败原因会用于任务追踪与计费;完整边界以 透明度页面 为准。
支持 Streaming 吗?
文本模型支持 Anthropic 原生 SSE streaming 和 OpenAI 兼容 streaming,在请求中设置 "stream": true 即可。视觉模型不是 streaming 响应,而是提交任务后通过 /v1/video/generations/{task_id} 轮询结果。
视觉模型怎么调用?
使用同一个 API Key 调用 POST /v1/video/generations,提交后会返回 job_idpoll_url。任务完成后可在轮询响应或「视觉模型使用详情」里查看结果、下载地址和失败原因。
和直连 Anthropic / OpenAI API 有什么区别?
文本通道保留 Anthropic / OpenAI 的兼容协议能力,包括 Streaming 和 Tool Calling;视觉模型由 Infwave 的异步任务接口统一多家视频上游。区别是:同一个 Key、余额和使用记录打通,支持人民币对公结算 + 增值税发票。