API 使用指南
用最简单的话,告诉你每个接口怎么用
⚠️ 先搞清楚:API 和网站是两回事
很多人分不清「在网站上用」和「调 API」的区别,这里说清楚:
🌐 网站功能(给普通用户)
- • 打开网页,填个提示词,点按钮,等结果
- • 有界面、有按钮、有进度条,所见即所得
- • 适合偶尔用一下、体验一下效果
- • 不需要写代码
🔌 API 接口(给开发者)
- • 用代码发 HTTP 请求,拿 JSON 结果
- • 没有界面,纯数据交互
- • 适合接入自己的产品、批量处理、自动化
- • 需要会写代码(或者用 Postman 之类的工具)
简单来说:这个网站是给开发者用的。我们把 AI 绘画、视频、音乐的能力通过 API 开放出来,你用代码调用,嵌入到你自己的产品里。
如果你不是开发者,不需要用这个网站。想用 AI 绘画/视频去 www.mxai.cn, 想做音乐去 www.suno.cn —— 那些才是给普通用户用的网站。
想接入 OpenClaw、扣子等 AI 助手?对接 API 需要具备开发能力。个人用户建议直接访问 www.mxai.cn 或 www.suno.cn 页面上的「OpenClaw 接入」入口,我们配备了openclaw的skill, 以及 MCP ,可直接让AI调用,无需写代码即可使用。
开始之前
所有接口都需要一个 API Key 来验证身份。获取方式很简单:
- 注册并登录商户后台
- 进入「API 密钥管理」页面
- 点击「创建新 API 密钥」,拿到你的 access_key
每次请求都要带上这两个 Header:
Authorization: Bearer 你的access_key Content-Type: application/json
基础地址:/api/v2
V1 接口把 v2 换成 v1 就行,参数完全一样。
🎨 AI 绘画
一共有 5 个绘画接口,根据你的需求选一个就行。
1. 基础绘图 — POST /draw
最基础的文生图/图生图接口,基于 Gemini 2.5 Flash 模型。
POST /api/v2/draw
{
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "一只可爱的小猫在花园里玩耍" }
]
}
],
"stream": false
}想用参考图?在 content 数组里加一个 image_url 类型的元素就行。stream 设为 true 可以实时看到生成进度。
2. Pro 绘图 — POST /draw-pro
高级模型,画质更好,支持 2K/4K 分辨率。参数和基础绘图一样,多了个 size 参数。
POST /api/v2/draw-pro
{
"messages": [...], // 同上
"stream": false,
"size": "4K" // 可选 2K 或 4K,默认 2K
}3. 即梦 4.5 绘图 — POST /draw-4-5
即梦 4.5 模型,参数和 Pro 一样。
4. 一次出 4 张图 — POST /draw-4-5-four-images
一次请求生成 4 张图片,适合需要多个方案对比的场景。参数同基础绘图,不需要 stream。
5. 统一绘图接口 — POST /nano-pro 或 /images/gemini3pro
功能最全的绘图接口,支持多种模型、多通道、参考图(最多 14 张)、自定义比例。
POST /api/v2/nano-pro
{
"prompt": "赛博朋克风格的城市夜景",
"stream": false,
"image_size": "2K", // 可选 1K、2K、4K
"aspect_ratio": "16:9", // 可选 1:1、3:4、4:3、9:16、16:9
"reference_images": [ // 可选,最多 14 张参考图
"https://example.com/ref.jpg"
]
}⚠️ /images/gemini3pro 是同步接口,生成时间可能较长,客户端超时建议设为 10 分钟。
💡 绘画接口通用提示
- • 除了 /images/gemini3pro 是同步的,其他都是异步的(提交后拿 task_id,轮询查结果)
- • 参考图建议放在国际服务器上,国内 CDN 可能访问不了
- • 提示词越详细,出图效果越好(风格、光线、构图都可以写)
🎬 即梦视频
基于豆包的视频生成,支持文生视频、图生视频、首尾帧视频三种模式。
提交任务 — POST /video/generate
视频参数直接写在文本里,用 --ratio、--dur、--rs 控制。
// 文生视频
POST /api/v2/video/generate
{
"model": "doubao-seedance-1.0-pro-fast",
"content": [
{ "type": "text", "text": "小猫在花园玩耍 --ratio 16:9 --dur 5" }
]
}
// 图生视频:加一个 image_url 元素
// 首尾帧:加两个 image_url,分别设 role 为 first_frame 和 last_frame--ratio:视频比例(16:9、9:16、1:1 等)
--dur:时长秒数(2~12 秒)
--rs:分辨率(480p、720p、1080p,默认 1080p)
查询结果 — GET /video/task
GET /api/v2/video/task?task_id=你的task_id
每 5~10 秒查一次,status 变成 completed 就能拿到 video_url 了。失败的话积分会自动退还。
⚠️ 生成的视频 24 小时后会被清理,请及时下载保存。
🎥 Sora 视频
OpenAI 的 Sora 视频生成,有普通版和 Pro 版,还支持角色定制。
生成视频 — POST /sora/generate
POST /api/v2/sora/generate
{
"prompt": "一只猫咪在月光下漫步,电影质感",
"aspect_ratio": "16:9", // 16:9 或 9:16,默认 9:16
"duration": 10, // 10 或 15 秒
"reference_image": "https://..." // 可选,参考图
}Pro 版把路径换成 /sora/generate/pro,参数完全一样。
查询结果 — GET /sora/query
GET /api/v2/sora/query?task_id=你的task_id
角色定制
可以从已生成的视频中提取角色,然后在新视频中复用。
创建角色:POST /sora/create-character
查询角色:GET /sora/query-character?task_id=xxx
💡 通道机制
Sora 和 Veo 支持通道选择,在请求头加 X-Channel 可以指定不同通道(不同价格/供应商)。不传就用默认通道。
📹 Veo 视频
Google 的 Veo 视频生成,支持多种模型。
生成视频 — POST /veo/generate
POST /api/v2/veo/generate
{
"model": "veo3-fast", // 可选 veo3-fast、veo31、veo31-fast 等
"prompt": "金毛犬在海边奔跑,夕阳西下",
"aspectRatio": "16:9", // 注意这里是驼峰命名
"images": ["https://..."] // 可选,0张=文生视频,1张=首帧,2张=首尾帧
}查询结果 — GET /veo/task
GET /api/v2/veo/task?task_id=你的task_id
🎵 Suno 音乐
基于 Suno 的音乐生成全家桶,从创作到后期处理一条龙。
核心:生成音乐 — POST /music/generate
两种创作模式:灵感模式(给个描述让 AI 自由发挥)和自定义模式(自己写歌词)。
// 灵感模式:给个描述就行
POST /api/v2/music/generate
{
"model": "chirp-v3-0",
"title": "夏日微风",
"make_instrumental": false,
"gpt_description_prompt": "轻快的夏日流行曲,带有吉他和钢琴"
}
// 自定义模式:自己写歌词 + 风格标签
{
"model": "chirp-v3-0",
"title": "夏日微风",
"make_instrumental": false,
"prompt": "微风吹过田野\n阳光洒满大地",
"tags": "pop, acoustic, summer"
}
// 延长模式:把一首歌续写下去
{
"model": "chirp-v3-0",
"title": "夏日微风(续)",
"make_instrumental": false,
"task": "extend",
"continue_clip_id": "之前的歌曲ID"
}
// 翻唱模式
{
"task": "cover",
...
}查询结果
单个查询:GET /music/task?id=任务ID(注意这里是数字 ID)
批量查询:GET /music/tasks?ids=1,2,3
其他音乐接口
POST /music/upload
上传音频文件(传 audio_url)
POST /music/whole-song
把片段合成完整歌曲(传 clip_id)
POST /music/aligned-lyrics
歌词时间轴对齐(传 lyrics + suno_id)
POST /music/upsample
音质升采样(传 clip_id + model_name)
POST /music/video
生成音乐 MV(传 task_id + suno_id)
POST /music/convert-wav
转换为 WAV 格式(传 task_id + suno_id)
POST /music/crop
裁剪音乐片段(传 clip_id + start_time + end_time)
POST /music/speed
变速处理(传 clip_id + speed 倍率)
💰 积分相关
查余额 — GET /points/balance
GET /api/v2/points/balance
// 返回 { "remaining_points": 1500 }查流水 — GET /points/logs
GET /api/v2/points/logs?page=1&pageSize=20 // type: 1=消耗 2=充值 3=手动调整 4=退还
查价格 — GET /gemini3pro/v2/channel-points
这个接口不需要认证,可以直接调用,返回所有 API 的积分价格。
❓ 常见问题
异步接口怎么拿结果?
除了 /images/gemini3pro 是同步的(等着就行),其他绘画、视频、音乐接口都是异步的。 流程是:提交任务 → 拿到 task_id → 每隔 5~10 秒查一次状态 → status 变成 completed 就拿到结果了。 建议设个最大超时(比如 5 分钟),别无限轮询。
任务失败了积分会退吗?
会的,自动退还,不用你操作。查询任务时会看到 points_refunded: true。
报 429 是什么意思?
请求太频繁了,被限流了。降低请求频率就行。响应头里的 X-RateLimit-Limit 和 X-RateLimit-Remaining 可以看到你的 QPS 上限和剩余次数。
V1 和 V2 有什么区别?
V2 是用 Bun + Hono 重写的,性能更好。参数和 V1 完全兼容,只需要把 URL 里的 /api/v1 换成 /api/v2 就行。推荐用 V2。
X-Channel 是什么?
通道机制。同一个接口可以有不同的通道,价格和供应商可能不一样。在请求头加 X-Channel: premium 就能指定通道。 不传就用默认通道。目前 nano-pro、Sora、Veo 支持通道选择。
积分怎么算的?
1 元 = 100 积分。不同接口消耗不同,可以通过 /gemini3pro/v2/channel-points 查看所有接口的价格。 视频类接口按分辨率和时长计费,绘画和音乐按次计费。
📋 快速代码示例
完整调用流程(以 Sora 为例)
// 第一步:提交任务
const res = await fetch('/api/v2/sora/generate', {
method: 'POST',
headers: {
'Authorization': 'Bearer 你的access_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: '一只猫咪在月光下漫步',
aspect_ratio: '16:9',
duration: 10
})
})
const { data } = await res.json()
const taskId = data.task_id // 拿到任务 ID
// 第二步:轮询查结果
let result = null
for (let i = 0; i < 60; i++) { // 最多查 60 次(5 分钟)
await new Promise(r => setTimeout(r, 5000)) // 等 5 秒
const query = await fetch(
`/api/v2/sora/query?task_id=${taskId}`,
{ headers: { 'Authorization': 'Bearer 你的access_key' } }
)
const { data: task } = await query.json()
if (task.status === 'completed') {
result = task.video_url
break
}
if (task.status === 'failed') {
console.error('生成失败:', task.error)
break
}
}
console.log('视频地址:', result)🚨 错误码速查
| 错误码 | 意思 | 怎么办 |
|---|---|---|
| 200 | 成功 | ✅ |
| 400 | 参数不对 | 检查请求参数 |
| 401 | 认证失败 | 检查 API Key 是否正确 |
| 402 | 积分不够 | 去后台充值 |
| 403 | 接口被禁用 | 联系管理员 |
| 429 | 请求太频繁 | 降低频率或联系提升 QPS |
| 500 | 服务器出错 | 稍后重试 |