MMS AI OPEN PLATFORM

OpenAI 兼容 API 设计预览

本页展示 MMS AI 开放平台的目标协议。当前已开放 /v1/models/v1/chat/completions(Beta);图片、视频、数字人、音频与任务接口仍在开发。

下载 SKILL.md放入 AI 编程工具 · 自动获取全部接口能力 立即下载
Beta 开放模型列表与交流接口已可接入;媒体生成、余额、价格与任务查询将在后续版本开放。公网地址:https://mmsai.cn/v1

注册、登录与创建密钥

  1. 前往官网注册账号并完成邮箱验证。
  2. 可在API 密钥创建密钥。
  3. 使用 GET /v1/modelsPOST /v1/chat/completions 开始接入;媒体类接口尚未开放。
安全要求禁止把密钥写入网页、客户端安装包、Git 仓库或日志。泄露后应立即重置。

浏览器本机授权(Browser Auth)

任意终端 / 桌面应用只要按本文参数打开入口,均可完成登录授权;密钥经本机 HTTP 回调回传,无需用户手工复制。安全边界是 loopback 回跳与登录态,不依赖固定客户端名单。

GET/connect/browser-auth

固定入口:

http
https://mmsai.cn/connect/browser-auth?client=my-cli&response_type=api_key&redirect_uri=http%3A%2F%2F127.0.0.1%3A54321%2Fcallback&state=RANDOM
字段类型/状态必填说明
clientstring终端自定 ID,2~64 位字母数字,可含 . _ -(如 my-cli、uopenclaw)
response_typestring固定 api_key
redirect_uriurl本机回调,仅 127.0.0.1/localhost + /callback
statestring随机串,防 CSRF;回跳须原样带回

终端适配步骤

  1. 本机监听 http://127.0.0.1:<随机端口>/callback(仅 loopback)。
  2. 自定稳定的 client(如 my-cliuopenclaw),生成随机 state,用系统浏览器打开入口 URL。
  3. 用户在官网登录并点击「同意并回传密钥」。
  4. 浏览器跳回本机:成功带 api_key + state;拒绝带 error=access_denied
  5. 校验 state 后写入本地密钥(如 MMS_API_KEY),再请求 GET /v1/models 验证。

官网同意后会先在品牌结果页展示「授权成功」,并静默向本机 /callback 投递密钥(密钥不进入官网地址栏)。若终端未收到,结果页提供「手动完成回传」整页跳转兜底。

成功回跳示例(本机监听收到的请求):

http
http://127.0.0.1:54321/callback?api_key=mms_sk_xxxx&state=RANDOM

拒绝回跳示例:

http
http://127.0.0.1:54321/callback?error=access_denied&state=RANDOM
安全约束redirect_uri 仅允许 http://127.0.0.1:<port>/callbackhttp://localhost:<port>/callback;须登录;须校验 state;每个 client 对应控制台密钥名 BA:<client>,再次授权会轮换使旧 Key 失效;密钥勿写入网页或安装包。

兼容说明:旧路径 /connect/uopenclaw 会自动跳转到 /connect/browser-auth 并保留 query。

快速开始

统一基础地址:

http
https://mmsai.cn/v1

交流接口可同步或流式返回;图片、视频、数字人、短剧和音频采用异步任务协议,提交成功后通过任务 ID 查询。

请求方式与公共格式

POSThttps://mmsai.cn/v1/{resource}
字段类型/状态必填说明
AuthorizationBearer stringAPI Secret Key
Content-Typeapplication/jsonJSON 请求格式
Idempotency-Keystring媒体建议防止重复创建和扣费
X-Client-Request-Idstring调用方链路 ID

请求体统一使用 UTF-8 JSON。上传文件时使用 multipart/form-data。每个响应都携带 x-request-id,报障时请提供该值。

bash
curl https://mmsai.cn/v1/chat/completions -H "Authorization: Bearer $MMS_API_KEY" -H "Content-Type: application/json" -H "Idempotency-Key: order_20260713_001" -d '{"model":"mms-chat-pro","messages":[{"role":"user","content":"你好"}]}'

身份认证

所有请求都应在服务端发起。不要把 API Key 暴露在浏览器、桌面包或移动端代码中。

bash
curl https://mmsai.cn/v1/models \
  -H "Authorization: Bearer $MMS_API_KEY"

模型列表

GET/v1/models

返回账户可用的平台模型,支持使用 typecapabilitystatus 查询。稳定的 id 由 MMS 分配,不暴露服务商、内部模型和成本价格。

json
{"object":"list","data":[{"id":"mms-image-pro","object":"model","name":"MMS Image Pro","type":"image","logo":"https://mmsai.cn/models/mms-image-pro.png","description":"高质量商业图片生成模型","advantages":["中文理解","文字排版","风格稳定"],"scenarios":["商品海报","社交配图"],"status":"available","capabilities":["text_to_image","image_to_image"]}]}

模型详情

GET/v1/models/{model_id}

返回模型介绍、Logo、描述、优势、适用场景、能力、参数约束和当前可用状态。调用前应读取 capabilitieslimits,不要硬编码不同模型的私有参数。

json
{"id":"mms-video-pro","object":"model","name":"MMS Video Pro","type":"video","logo":"https://mmsai.cn/models/mms-video-pro.png","description":"适合商业短片与运镜生成","advantages":["运动稳定","镜头语言丰富"],"scenarios":["广告短片","产品展示"],"status":"available","capabilities":["text_to_video","image_to_video"],"limits":{"durations":[5,10],"aspect_ratios":["16:9","9:16","1:1"],"max_prompt_length":2000}}

模型价格

GET/v1/pricing/models

只返回当前账户实际适用的平台出售价格。价格可能按 Token、次、张、秒或分钟计费;提交媒体任务前可使用返回规则进行预估,最终以用量账单为准。

字段类型/状态必填说明
billing_typeenumtoken、per_call、duration
pricedecimal string按次/时长每计费单位的平台售价
input_pricedecimal stringToken输入 Token 售价
output_pricedecimal stringToken输出 Token 售价
unitstring1K tokens、image、second 等
effective_atdatetime价格生效时间
json
{"object":"list","currency":"CNY","data":[{"model":"mms-chat-pro","billing_type":"token","input_price":"0.010000","output_price":"0.030000","unit":"1K tokens"},{"model":"mms-image-pro","billing_type":"per_call","price":"0.080000","unit":"image"},{"model":"mms-video-pro","billing_type":"duration","price":"0.600000","unit":"second","minimum_charge":"3.000000"}],"effective_at":"2026-07-13T00:00:00+08:00"}

余额查询

GET/v1/balance

返回账户可消费余额、冻结中的预授权金额和套餐额度。金额字段均为字符串,避免浮点精度问题。

json
{"object":"balance","currency":"CNY","available_balance":"128.500000","frozen_balance":"6.000000","cash_balance":"98.500000","gift_balance":"30.000000","quotas":{"text":120000,"image":35,"video":120},"plan":{"name":"专业版","expires_at":"2026-08-13T23:59:59+08:00"}}

交流 / Chat Completions

POST/v1/chat/completions

兼容 OpenAI Chat Completions,包括非流式响应与 SSE 流式输出。

javascript
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.MMS_API_KEY,
  baseURL: "https://mmsai.cn/v1"
});

const response = await client.chat.completions.create({
  model: "mms-chat-pro",
  messages: [{ role: "user", content: "写一个产品短片脚本" }]
});

素材上传

POST/v1/files
字段类型/状态必填说明
filebinary图片、音频或视频文件
purposestring固定为 generation
bash
curl https://mmsai.cn/v1/files -H "Authorization: Bearer $MMS_API_KEY" -F "purpose=generation" -F "file=@./reference.png"

返回的 file_id 可用于生图、生视频、数字人、短剧和音频接口。禁止把本地文件路径直接写入 JSON。

图片生成

POST/v1/images/generations
字段类型/状态必填说明
modelstring平台模型 ID
promptstring图片描述词
sizestring输出尺寸
ninteger生成数量
json
{"model":"mms-image-pro","prompt":"极简科技产品海报","size":"1024x1024","n":1}

视频生成

POST/v1/videos/generations
MMS Extension

视频生成采用异步任务。响应返回平台任务 ID,不直接暴露外部任务 ID。

json
{"model":"mms-video-pro","prompt":"电影感产品展示","duration":5,"aspect_ratio":"16:9","input_images":["https://example.com/ref.jpg"]}

数字人 / 口播生成

POST/v1/avatars/generations
MMS Extension
字段类型/状态必填说明
modelstring数字人模型 ID
avatar_file_idstring人物素材
audio_file_idstring驱动音频
aspect_ratiostring如 9:16、16:9
json
{"model":"mms-avatar-pro","avatar_file_id":"file_avatar_01","audio_file_id":"file_audio_01","aspect_ratio":"9:16","callback_url":"https://example.com/mms/webhook"}

短剧生成

POST/v1/dramas/generations
MMS Extension

支持剧本生成、角色分析、分镜和成片任务。较长任务必须配置 Webhook,并通过客户端业务 ID 保证幂等。

json
{"model":"mms-drama-pro","title":"重启人生","script":"第一集完整剧本……","characters":[{"name":"林夏","reference_file_id":"file_role_01"}],"episode":1,"aspect_ratio":"9:16"}

音频生成

POST/v1/audio/speech
字段类型/状态必填说明
modelstring语音模型 ID
inputstring待合成文本
voicestring平台音色 ID
response_formatstringmp3、wav、pcm
json
{"model":"mms-tts-pro","input":"欢迎使用 MMS AI 开放平台","voice":"female_warm","response_format":"mp3","speed":1.0}

任务查询

GET/v1/tasks/{task_id}
json
{"id":"task_01J...","object":"generation.task","status":"succeeded","progress":100,"output":[{"type":"video","url":"https://..."}],"usage":{"total_units":5}}

Webhook 回调

异步任务进入终态后,网关使用 HMAC-SHA256 签名向配置地址发送事件。消费方必须校验时间戳、签名并按事件 ID 幂等处理。

json
{"id":"evt_01J...","type":"task.succeeded","created":1783915200,"data":{"task_id":"task_01J...","status":"succeeded","output":[{"type":"video","url":"https://..."}]}}

响应格式与状态码

同步接口直接返回业务对象;异步提交返回任务对象。HTTP 状态码表示请求结果,不能只根据响应正文中的字段判断成功。

字段类型/状态必填说明
200成功同步请求成功并返回结果
202已接收异步任务已创建,继续查询
400请求错误检查字段与模型能力
401未认证检查 Bearer 密钥
402余额不足充值或更换套餐
429限流按 Retry-After 退避
500/503服务异常使用相同幂等键重试
json
{"id":"task_01J...","object":"generation.task","status":"queued","created":1783915200,"request_id":"req_01J..."}

错误处理

字段类型/状态必填说明
invalid_request_error400请求参数错误
authentication_error401API Key 无效
insufficient_quota402账户余额不足
rate_limit_error429超过速率限制
api_error500网关内部错误
json
{"error":{"message":"The requested model is unavailable.","type":"model_unavailable","param":"model","code":"model_unavailable"},"request_id":"req_01J..."}

速率限制与幂等

响应头返回 x-ratelimit-limitx-ratelimit-remainingx-request-id。媒体提交建议携带 Idempotency-Key,相同账户和 Key 在有效期内只创建一个平台任务。

常见场景与故障排查

任务一直生成中

查询 updated_at;超时后携带 request_id 联系支持,客户端应采用退避轮询。

重复任务或重复扣费

媒体提交使用稳定的 Idempotency-Key;网络超时后使用原 Key 重试。

素材无法读取

优先使用上传接口返回的 file_id;外链必须是公网 HTTPS。

模型参数不一致

读取 /v1/models 的 capabilities,不传服务商私有字段。

余额不足

在控制台检查现金与套餐额度;预授权失败会释放或退款。

Webhook 重复或乱序

按事件 id 幂等,比较 created 时间,并校验签名和时间戳。

陕ICP备2024045939号