MJ
悠船协议:图片生成、参考图与异步任务查询
接口
https://www.yunqiai.chat/v1/tob/diffusionhttps://www.yunqiai.chat/v1/tob/job/{jobId}密钥从 YOUCHUAN_API_KEY 环境变量读取,值为 YunQi API 密钥。生成请求的 model 可为 mj_imagine 或 youchuan-image,两个名称都可调用同一 MJ 接口;提示词字段为 text,版本参数放在 text 中。
Authorization: Bearer <YOUCHUAN_API_KEY>
Content-Type: application/json
Accept: application/json不使用 x-api-key、x-goog-api-key、x-youchuan-secret 或 x-youchuan-app。环境变量名称不是请求头。/v1/tob/subscribe 不用于生成图片。
密钥需要开通对应的 MJ 图片权限。创建密钥时选择包含目标能力的分组,避免使用仅包含文本模型的分组。
版本与质量
显式指定 --v 或 --niji,二者不同时使用。本接口未指定版本时默认 v7;不要套用 Midjourney 网站的默认版本。
| 版本参数 | --q 可用值 | 说明 |
|---|---|---|
| --v 5.1 / --v 5.2 / --v 6 | 0.25 / 0.5 / 1 | 默认 1 |
| --v 6.1 | 0.5 / 1 / 2 | 默认 1 |
| --v 7 | 1 / 2 / 4 | 默认 1 |
| --v 8 / --v 8.1 | 1 / 4 | 默认 1 |
| --v 8.2 | 1 / 2 / 3 / 4 | 默认 1 |
| --niji 5 / --niji 6 | 0.25 / 0.5 / 1 | 默认 1 |
| --niji 7 | 不发送 --q | 不支持质量参数 |
--q 不是 OpenAI Images 的 quality=low/medium/high,也不是输出像素尺寸。质量参数不承诺每个画面的视觉效果逐档提升;请求受理或参数回显不能独立证明底层计算档位。
生成参数
以下参数均写在 text 末尾,参数前留空格,末尾不加逗号或句号。不要将 size、n、quality、aspectRatio、response_format 放进 JSON 请求体。text 长度为 1–8192 字符;v8 系列正文不超过 1024 字符,不含图片引用与参数。
| 参数 | 取值 | 说明 |
|---|---|---|
| --ar W:H | 正整数比例,默认 1:1 | 例如 16:9、9:16、4:3、2:3;不保证固定像素宽高。 |
| --raw | 开关 | 减少默认风格化;历史版本的兼容性不同。 |
| --chaos | 0–100,默认 0 | 结果变化程度。 |
| --seed | 整数 0–4294967295 | 随机种子;不保证跨版本或服务更新后逐像素复现。 |
| --stylize / --s | 0–1000,默认 100 | 风格化强度。 |
| --weird / --w | 0–3000,默认 0 | 非常规造型程度。 |
| --no | 排除内容 | 负向描述,不保证绝对排除。 |
| --tile | 开关 | 无缝平铺;不与 v7 draft 组合。 |
| --fast / --turbo | 二选一 | 快速 / 极速模式;本接口 v7、v8.1、v8.2 可用 turbo,费用以控制台为准。 |
| --draft | 开关 | 草图模式;本页示例使用 v7,完成后可执行 enhance。 |
| --hd | 仅 v8.1 / v8.2 | 原生 2K 档位,并非固定 2048×2048;尺寸随比例变化。 |
| --exp | 0–100,默认 0 | v7 / v8.1 / v8.2 的实验性美学强度。 |
通用参数不代表每个历史版本都支持。V8.1/V8.2 的 SD 最大比例为 14:1、HD 为 4:1,含纵向对称比例。不要自动改变客户选定的模型、质量或模式重试。
组合约束
- --fast 与 --turbo 不同时使用;niji 7 不发送 --q。
- v7 的 --draft 不与 --tile、--oref 组合;--oref 不与 --q 4 组合。draft 请求不附加 --q 4,不据此承诺草图的质量档位。
- --hd 仅用于 v8.1 / v8.2,不能追加到旧版本。
- 结果数量以 urls 为准,不固定假设四张,不用 JSON 的 n 控制。
| 组合语法 | text 末尾 |
|---|---|
| v7 | --v 7 --fast --q 1 --s 100 --ar 16:9 |
| v8.1 HD | --v 8.1 --fast --hd --q 4 --raw --ar 16:9 |
| v7 draft | --v 7 --fast --draft --ar 1:1 |
| niji 7 | --niji 7 --fast --s 500 --ar 2:3 |
以上只展示语法,配置由调用方选择。操作类型与生成模式会影响费用,具体倍率见下节。
计费规则
MJ 按任务计费,不按返回图片数量直接相乘;二次操作创建的新任务另行计费。mj_imagine 与 youchuan-image 均按各自控制台定价及以下适用倍率计算。
任务费用 = 基础任务价格 × 操作倍率 × Turbo 倍率 × Draft 倍率 × HD 倍率。基础价格、币种与账户分组折扣以控制台为准;多个条件同时满足时,倍率相乘。
| 操作 | 操作倍率 |
|---|---|
| diffusion、reroll | 1× |
| variation、inpaint、remix、edit、upload-paint、retexture | 1.5× |
| upscale,type=0 | 1.5× |
| upscale,type=1 | 2× |
| pan、outpaint、remove-background、enhance | 1× |
| 参数条件 | 附加倍率 | 适用范围 |
|---|---|---|
| Turbo 生效 | 2× | 使用 Turbo 模式的任务;不与 --fast 同时发送。 |
| v7 且 --draft 生效 | 0.5× | 仅 diffusion。 |
| v8.1 / v8.2 且 --hd 生效 | 1.5× | 仅 diffusion。 |
| 不满足对应条件 | 1× | 不附加该倍率。 |
例如普通 v7 生成为 1×、v7 draft 为 0.5×、v8.1/v8.2 HD 为 1.5×、HD 加 Turbo 为 3×,均相对于基础任务价格,并以参数组合可用为前提。v5 专用 upscale type=2/3 的价格单独查看控制台。
本规则没有为 --q 或 --ar 单独设置附加倍率,q4 不等于四倍费用。cost.fastCost、cost.feeCost 不直接当作客户币种金额;实际扣费及失败任务结算以控制台账单为准。
任务流程
提交后保存响应 id,用同一密钥查询任务。status=1 执行中,status=2 成功,status=3 失败。只有成功状态且存在有效 urls,才进入下载和后续操作。
{
"id": "TASK_ID",
"status": 1,
"comment": "执行中",
"urls": [],
"cost": {
"fastCost": 1,
"feeCost": 60
}
}| 结果 | 处理 |
|---|---|
| status=1 | 每隔 5 秒查询同一任务;默认等待预算 6 分钟。 |
| status=2 | 检查 urls 与 audits,下载全部可用图片。 |
| status=3 | 停止查询,保存 comment、cost 与完整响应到受控业务日志。 |
| HTTP 400 / 404 | 参数错误 / 任务不存在或不可访问;停止轮询并核对请求。 |
| HTTP 401 / 403 | 停止自动轮询。先读错误正文:insufficient_user_quota 表示账号余额不足以预扣费;其他情况核对密钥、分组权限与任务归属。新建 Key 不会增加账号余额。 |
| HTTP 429 | 遵守 Retry-After,只重试原任务查询。 |
| HTTP 500 / 502 / 503 / 504 | 预算内延迟重试 GET,不重新 POST 生成。 |
| 未知状态 / 非 JSON 响应 | 保留诊断,不显示为成功。 |
六分钟是客户端等待预算,不代表任务已取消或生成时长承诺。超时后保留 id 恢复查询;提交超时但没有 id 时先核对控制台或联系客服,不自动重复提交。
imageNo 从 0 开始,使用原始 urls 数组位置,不对过滤后的数组重新编号。图片二次操作返回新的任务 id,需要单独查询。
签名下载链接完整保留查询参数,及时保存文件。向存储地址下载时不附带 YunQi API 密钥。空链接和审核受限项不计为可用结果。
图片操作
以下路径前缀均为 /v1/tob/,方法为 POST。jobId 为已完成的源任务 ID,imageNo 为源图片编号。选填字段用问号标注。
| 路径 | 请求字段 | 用途与约束 |
|---|---|---|
| /v1/tob/diffusion | model、text | model:mj_imagine 或 youchuan-image;文生图或 URL 参考图。版本与比例放入 text,例如 --v 7 --ar 3:2。 |
| /v1/tob/variation | jobId、imageNo、type | type=0 轻微变化,1 强烈变化。 |
| /v1/tob/upscale | jobId、imageNo、type | type=0 标准高清,1 创意高清;2 / 3 为 v5 的 2x / 4x。需匹配源版本。 |
| /v1/tob/reroll | jobId | 沿用原始生成参数重新生成。 |
| /v1/tob/pan | jobId、imageNo、direction、scale、remixPrompt? | direction:0 下、1 右、2 上、3 左;scale:1.1–3。 |
| /v1/tob/outpaint | jobId、imageNo、scale、remixPrompt? | 向周围扩图;scale:1.1–2。 |
| /v1/tob/inpaint | jobId、imageNo、mask、remixPrompt? | 按蒙版指定区域重绘。 |
| /v1/tob/remix | jobId、imageNo、remixPrompt、mode? | 修改提示词;mode=0 强变化(默认),1 弱变化。 |
| /v1/tob/edit | jobId、imageNo、canvas、imgPos、remixPrompt、mask? | 设置输出画布、原图放置区域和编辑提示词。 |
| /v1/tob/upload-paint | imgUrl、mask、canvas、imgPos、remixPrompt | 使用可访问图片 URL 进行画布编辑。 |
| /v1/tob/retexture | imgUrl、remixPrompt | 基于参考图调整材质和风格;提示词版本不低于 6.1。 |
| /v1/tob/remove-background | imgUrl | 移除图片背景。 |
| /v1/tob/enhance | jobId、imageNo | 仅用于 --draft 生成的源任务。 |
高级编辑和转绘的结果仅支持继续执行高清操作。不要将 GPT Images 的任务、图片索引或蒙版格式直接套入 MJ。
参考图与画布
单张或多张图片 URL 放在 text 开头,后接提示词;URL 必须能由服务端直接读取,不能是本机路径或需要登录的网页。不要使用裸 Base64 代替 URL。
{
"model": "mj_imagine",
"text": "IMAGE_URL_1 IMAGE_URL_2 A blue mug on a red table --iw 1 --ar 3:2 --v 7"
}| 引用方式 | text 写法 | 约束 |
|---|---|---|
| 普通垫图 | IMAGE_URL_1 IMAGE_URL_2 描述 --iw 1 --v 7 | 多张 URL 以空格分隔;影响内容、构图和色彩。v6/v6.1/v7/v8.1/v8.2 的 iw 为 0–3,niji 7 为 0–2。 |
| 风格参考 | 描述 --sref STYLE_URL_1 STYLE_URL_2 --sw 100 --sv 6 --v 7 | sw=0–1000,默认 100;参考风格,不保证主体身份。v7 的 sv 为 1–6;v6.1/niji 6 为 1–4;v8.1/v8.2 只用 6。 |
| 角色参考 | 描述 --cref PERSON_URL --cw 100 --v 6.1 | 仅 v6、v6.1、niji 6;cw=0–100,默认 100。低权重偏向脸部,高权重更多保留发型和服装。 |
| 万物引用 | 描述 --oref OBJECT_URL --ow 200 --v 7 | 仅 v7,一次一张;ow=1–1000,默认 100;不与 draft、q4 组合。 |
参考图使用 PNG、JPEG、WebP 或 GIF 的 HTTP(S) 直链。优先使用稳定公开地址;签名 URL 则需保留完整查询参数并覆盖任务读取时段。sv 是风格算法版本,不是主模型版本。参考图不是可编辑图层,不保证逐像素保留主体。
canvas 为编辑画布宽高,结果可能按模型规格缩放;imgPos 为原图在新画布中的宽高和左上角位置。mask.areas 的 width / height 为原图尺寸,points 按 x、y 成对排列。也可用同尺寸黑白蒙版 URL,白色为重绘区域。
{
"jobId": "SOURCE_TASK_ID",
"imageNo": 0,
"canvas": {
"width": 1280,
"height": 1024
},
"imgPos": {
"width": 1024,
"height": 1024,
"x": 128,
"y": 0
},
"remixPrompt": "Extend the white tabletop around the blue mug"
}提交示例
{
"model": "mj_imagine",
"text": "现代东方建筑,清晨薄雾,电影级建筑摄影,无文字 --v 8.1 --fast --hd --q 4 --raw --ar 16:9"
}完整 Python 客户端从 YOUCHUAN_API_KEY 读取密钥,先保存任务 id,再轮询和下载;支持按原任务恢复。JSON 示例中的图片 URL 和任务 ID 需替换成自己的实际值。
图片保存
任务完成后立即遍历 urls,保存为 mj-imagine-任务ID-原始序号.png。完整示例会实际编码为 PNG,并记录每张图片的下载结果;单张失败仍处理其他图片,恢复下载不再次生成。
悠船存储说明的上游默认留存为 30 天;这不是签名 URL 的有效期或永久存储承诺。客户应自行保存文件,下载存储链接时不要附带 API 密钥。