Midjourney 与 Niji API 参数参考
Midjourney 使用本站统一异步接口,不需要提供 Midjourney 账号或执行服务的密钥。所有请求使用 Authorization: Bearer sk-your-api-key;JSON 请求同时设置 Content-Type: application/json。
本页集中维护字段与协议约束。首次接入可从快速开始阅读;按场景查找参考图与风格码、变体与放大、视频生成和常见问题。
接口与模型
章节:接口与模型| 用途 | 方法与路径 |
|---|---|
| 图片提交 | POST /v1/image/generations |
| 图片估价 | POST /v1/image/generations/estimate |
| 图片查询 | GET /v1/image/generations/{task_id} |
| 视频提交 | POST /v1/video/generations |
| 视频估价 | POST /v1/video/generations/estimate |
| 视频查询 | GET /v1/video/generations/{task_id} |
图片提交包含生成、参考、编辑及后续操作;视频提交包含生成与延长。估价使用相同请求体,不创建生成任务。
图片模型 ID:midjourney-v6、midjourney-v6.1、midjourney-v7、midjourney-v8.1、midjourney-v8.2、niji-v6、niji-v7。视频模型 ID:midjourney-video。
使用当前 Key 调用 GET /v1/models 确认模型权限。某个模型可用不代表它的每个操作、速度和批量档位都已开放;请先估价确认。未配置的档位会拒绝提交,不会自动改成另一种收费模式。这里不使用旧版 /mj/submit/* 协议,也不使用同步 /v1/images/generations。
第一次生成
章节:第一次生成{ "model": "midjourney-v7", "prompt": "A quiet greenhouse at sunrise, soft watercolor illustration", "speed": "fast", "generation_mode": "standard", "aspect_ratio": "3:2", "stylize": 100, "seed": 0, "raw": false, "n": 1}下载该请求 JSON,将下面命令中的 Key 替换为自己的:
curl https://api.hamubox.com/v1/image/generations \ -H "Authorization: Bearer $HAMUBOX_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @midjourney-image-generate.json保存响应的 id,之后每隔约 5 秒查询一次,直至 status 为 completed 或 failed。queued / in_progress 不是失败,也不要反复 POST。HTTP 200 本身不代表图片已生成。
生成完成后,结果可能先返回 Midjourney 官方 CDN 地址,后台继续转存。
图片响应的 result_transfer_status(视频位于 metadata 中)表示保存进度;
需要本站长期地址时,可以继续查询至 stored。结果编号保持不变,URL 可能更新,
已保存的文件优先返回本站地址。failed 的保存状态不等于生成失败。
官方 CDN 可能对服务器下载触发访问验证;遇到这种情况请稍后查询本站地址,
不要重复提交生成请求,以免产生第二次费用。
curl https://api.hamubox.com/v1/image/generations/task_example \ -H "Authorization: Bearer $HAMUBOX_API_KEY"基础参数
章节:基础参数| 字段 | 说明 |
|---|---|
model | 上表中的图片模型 ID |
operation | 默认 generate;其它操作见下文 |
prompt | 生成提示词,最多 4000 字符(包含原生尾随参数)。generate、edit、retexture、region、custom_zoom 必填 |
images | 普通参考图 URL 数组,最多 4 张;在 generate 中是参考,不会自动切换为 edit |
aspect_ratio | 1:1(默认)、2:3、3:2、3:4、4:3、9:16、16:9 |
speed | fast 或 relax。建议明确指定;后续操作省略时优先继承原任务速度 |
generation_mode | standard(默认)、draft、hd,不是速度设置 |
stylize | 整数 0–1000,风格化强度 |
chaos | 整数 0–100,结果差异程度 |
seed | 整数 0–4294967295;0 有效 |
raw | 布尔值;启用后减少模型默认审美修饰,并非无审核模式 |
negative_prompt | 排除的内容,等价于 --no;最多 4000 字符,不包含其它参数、花括号或控制字符 |
image_weight | 普通参考图权重,0–3;Niji V7 为 0–2,需要同时提供 images |
tile | 布尔值,生成可平铺图案 |
weird | 0–3000 的整数,增加非典型审美;不适用于 Niji |
n | 图片任务只能是 1,表示一次任务/一组结果,不是仅生成一张图片 |
max_cost_usd | 可选费用上限,0–10000 美元;估价超出上限时拒绝提交 |
draft 可用于 V7 / V8.1 / V8.2,hd 可用于 V8.1 / V8.2,均只用于 generate。Draft 是草稿生成模式,HD 是高清生成模式;它们与 Fast/Relax 分别控制生成方式与队列速度,价格也分别计算。这里不支持 turbo。
negative_prompt、image_weight、tile 和 weird 首版仅支持 generate。后续变体等继承父任务设置,不重新传这些字段。
原生提示词格式
章节:原生提示词格式支持把常见的 MJ 参数放在提示词末尾,仍提交到 /v1/image/generations,不是另一个同步接口。描述放前面,参数放后面,参数名区分大小写。
{ "model": "midjourney-v7", "prompt": "A quiet greenhouse at sunrise --v 7 --ar 16:9 --s 150 --chaos 0 --seed 42 --raw --no text, watermark --fast", "aspect_ratio": "1:1", "speed": "relax", "n": 1}此例实际使用 16:9、Fast,而不是 JSON 中的 1:1、Relax。估价和提交都会先解析相同的尾随参数,再按生效的规格计费。
| 原生写法 | 对应结构化字段 |
|---|---|
--ar / --aspect | aspect_ratio |
--s / --stylize,--c / --chaos,--seed | stylize、chaos、seed |
--raw / --style raw | raw: true |
--no,--iw,--tile,--w / --weird | negative_prompt、image_weight、tile: true、weird |
--sref,--sw,--sv | 风格参考图/数字风格码、风格权重和版本 |
--cref,--cw | 角色参考图和权重 |
--oref,--ow | Omni Reference 和权重 |
--p / --profile | profile_codes,需提供明确的共享代码 |
--draft,--hd,--sd | generation_mode;--sd 对应 standard |
--fast,--relax | speed |
--zoom | zoom,仅用于 custom_zoom |
--v / --version,--niji | 只核对版本,必须与 model 一致,不会替换已选择的模型 |
- 优先级:尾随参数 > 对应 JSON 创作参数 > 默认值。同一普通参数重复时以最后一次为准;同时出现 Fast/Relax,或多个不同的生成模式,会明确报错。
- 参考素材可放在文本开头,例如
https://example.com/a.png https://example.com/b.png a garden --ar 16:9。这些 URL 会替换 JSON 的images,仍受参考图数量和下载校验限制。 --sref会整体替换style_references和style_codes,支持同一参数下用空格分隔图片 URL 与数字风格码;--cref、--oref、--p也替换各自对应的参考内容。平台工作台同时带有情绪版选择时,明确的--p优先。- 参数覆盖不会改变模型权限、
n: 1、父任务归属或max_cost_usd。例如model: "midjourney-v7"搭配--v 8.2会拒绝;不会按 V7 的价格调用 V8.2。 - 不支持的参数会返回明确的 HTTP 400,而不是悄悄忽略。
--q/--quality、--turbo、--r/--repeat、排列生成、视频命令仍不能使用。其它字段和模型限制仍按本页规定验证;复制官网参数不代表所有官网能力都已开放。 - 空提示词与超过 4000 字符会分别说明原因;只有参数、没有必填的正文描述,也会报错。普通单词或 URL 内的
--不会被当成参数。
原始提示词保留在任务记录中,生成使用解析后的内容。视频接口仍只接受下方列出的结构化参数,不使用此图片解析规则。
参考图、风格与角色
章节:参考图、风格与角色参考素材必须是无需登录即可读取的公网 HTTPS 图片 URL,支持 PNG、JPEG、WebP,单张不超过 10 MB。不要求使用平台图床,但链接及其重定向不能指向内网地址,也不能携带登录凭据或使用非标准端口。不支持 blob:、本地路径或图片 Data URL。可先使用素材上传接口取得 URL;mask 是下文单独说明的例外。
{ "model": "midjourney-v7", "prompt": "A traveler standing in a sunlit greenhouse", "speed": "fast", "style_references": [ "https://example.com/style.png" ], "style_weight": 100, "omni_reference": "https://example.com/character.png", "omni_weight": 100}| 字段 | 范围与适用条件 |
|---|---|
style_references | 最多 4 张风格参考图 URL |
style_codes | 最多 4 个不重复的纯数字字符串,每个 1–20 位,不包含 --sref 前缀;与 style_references 合计不超过 4 项 |
style_weight | 0–1000 的整数,必须同时提供风格图片或风格码 |
style_version | 可选。V6 / V6.1:1–4;V7 图片风格参考:1–6,含风格码时仅 4 或 6;其它模型省略 |
character_references | 最多 4 张;仅 V6 / V6.1 / Niji V6 |
character_weight | 0–100 的整数,需搭配角色参考图 |
omni_reference | 单张参考图 URL,仅 V7 的 standard 模式 |
omni_weight | 1–1000 的整数,需搭配 Omni Reference |
profile_codes | 最多 4 个不重复的公开个性化/情绪版代码,每个 2–32 位英文字母或数字;不包含 --p 前缀 |
风格、角色和 Omni 参数只用于 generate 或适用的 edit。V8 不接受 character_references / omni_reference,需要结合图片修改时使用 edit。
Omni 的 Fast 和 Relax 分别计价,不沿用普通生图的报价。若返回 model_price_error,表示平台尚未配置该操作和速度的有效价格,生成未提交、未扣款;请联系管理员,不要重复提交或改成普通生图来绕过报价。
profile_codes 仅用于 Midjourney 的 generate,不用于 Niji;支持与 V7 Standard 的 omni_reference、omni_weight 组合。组合请求沿用对应速度的 Omni 报价,不额外加收个性化费用,不能同时传 style_weight 或 style_version。不要传 default、global、random,也不要把数字风格码当作个性化代码。代码是否可用仍取决于分享权限与模型兼容性。平台情绪版创建和管理不属于本公共 API 的开放范围。
多结果与后续操作
章节:多结果与后续操作成功任务的 outputs 是全部可见结果,不只是第一张。常规图片生成通常返回 4 张,某些模式可能更多或更少,客户端必须遍历数组,不能写死数量。下方是字段节选,不代表固定输出数量:
{ "id": "task_example", "object": "image.generation.task", "model": "midjourney-v7", "operation": "generate", "status": "completed", "outputs": [ { "id": "output_1", "object": "image.generation.output", "url": "https://example.com/result-1.png", "mime_type": "image/png" }, { "id": "output_2", "object": "image.generation.output", "url": "https://example.com/result-2.png", "mime_type": "image/png" } ], "actions": [ { "operation": "variation", "output_index": 0 }, { "operation": "variation", "output_index": 1 } ]}后续操作仍 POST 图片端点,但传入本站的 parent_task_id 和 actions 提供的 operation、output_index。父任务必须属于当前用户且已完成;model 必须与父图片任务一致。不要传上游任务 ID 或按钮 customId。
{ "model": "midjourney-v7", "operation": "variation", "parent_task_id": "task_example", "output_index": 0}output_index 从 0 开始;请直接使用对应动作的值,不要使用图片界面筛选或排序后的下标。output_1 对应原始下标 0,output_2 对应 1。后续操作返回新的任务 ID,需要另行查询。
operation | 用途 |
|---|---|
variation / vary_subtle / vary_strong | 变体/轻微重绘/较强重绘 |
reroll | 按原始设置重新生成 |
upscale_subtle / upscale_creative | 保守放大/创意放大 |
zoom_1_5 / zoom_2 | 向外扩展画面 |
pan_left / pan_right / pan_up / pan_down | 向对应方向扩图 |
custom_zoom | 自定义扩图,另传 prompt 和 zoom(1–2),可传 aspect_ratio |
region | 局部重绘,另传 prompt 和 PNG Data URL mask |
select | 提取已有单图,不等同于付费重新放大;已取得单图 URL 时无需再次调用 |
只展示并提交 actions 实际返回的操作。 不同模型、结果阶段和图片可用动作不同;例如某些放大或局部重绘需要先取得单图,不能假设所有四宫格都支持。
{ "model": "midjourney-v7", "operation": "upscale_subtle", "parent_task_id": "task_selected_image", "output_index": 0, "speed": "fast"}除 region / custom_zoom 外,后续操作不重新传 prompt 或 aspect_ratio;也不要传 images、seed、raw、chaos、stylize 或参考控制参数,这些继承原任务。mask 必须是有效 PNG,Data URL 总长度不超过 8 MiB,宽高分别为 1–8192 像素;只允许用于 region。
编辑、融合与图转提示词
章节:编辑、融合与图转提示词operation | 模型与参数 |
|---|---|
edit | V8.1 / V8.2,1–4 张 images 和非空 prompt |
retexture | V6.1,1 张 images 和非空 prompt |
blend | 2–4 张 images,正方形比例,不传提示词或风格化参数 |
describe | 1 张 images,不传提示词或其它生成控制参数 |
{ "model": "midjourney-v8.2", "operation": "edit", "prompt": "Change the greenhouse into a winter garden, preserve the traveler", "images": [ "https://example.com/source.png" ], "speed": "fast"}{ "model": "midjourney-v7", "operation": "describe", "images": [ "https://example.com/source.png" ]}describe 完成后读取顶层 descriptions 字符串数组,通常有多个候选提示词;不会因此生成四张图片,也不保证永远有四条描述。客户端应支持没有 outputs 的成功任务。选择一条描述再次生成时,另行提交 generate,按新任务计费。
视频生成与延长
章节:视频生成与延长MJ 视频使用 midjourney-video,至少需要一张首帧图,不支持仅提示词的纯文生视频。
{ "model": "midjourney-video", "images": [ "https://example.com/start.png" ], "prompt": "The camera slowly moves forward through the greenhouse", "resolution": "480p", "speed": "fast", "motion": "low", "n": 2}| 字段 | 说明 |
|---|---|
operation | generate(默认)或 extend |
images | 生成时 1–2 张 URL,顺序为首帧、可选尾帧 |
prompt | 可选运动描述,最多 4000 字符,不允许原生参数或排列语法 |
resolution | 480p(默认,SD)或 720p(HD) |
speed | fast / relax;720p 必须 Fast。480p Relax 也需要当前线路和价格支持 |
motion | low(默认)或 high |
n | 1(默认)、2 或 4,表示本次视频输出条数;与图片的 n 含义不同 |
raw | 可选布尔值 |
loop | 可选布尔值,循环视频;不能同时提供尾帧 |
max_cost_usd | 可选本次任务费用上限 |
初次视频约 5 秒,每次延长约 4 秒,最多延长 4 次。实际编码时长可能略有差异。不接受 duration、seconds、aspect_ratio、first_frame_url 或 reference_video_urls,不能通过这些字段指定任意时长或上传外部视频进行延长。
查询成功后遍历 outputs[].url 获取全部视频;metadata.url 兼容提供第一条结果,不代表只有一条。
{ "model": "midjourney-video", "operation": "extend", "parent_task_id": "task_video_example", "output_index": 0, "prompt": "Continue the gentle camera movement", "resolution": "480p", "speed": "fast", "n": 1}延长使用本平台已完成的视频父任务和原始结果下标(0–3),不要传 images,也不要开启 loop。resolution 必须与父任务一致,建议显式填写。每次延长都会创建新任务;再次延长时使用最新任务 ID。达到延长次数上限或父任务缺少必要信息时会拒绝请求。
估价、扣费与失败处理
章节:估价、扣费与失败处理向对应 /estimate 端点发送与实际提交完全相同的 JSON(包括速度、模式、批量和父任务),返回顶层 estimated_cost_usd(美元)和 quota(内部额度单位)。估价不创建任务、不发起生成;不是锁价承诺。
curl https://api.hamubox.com/v1/image/generations/estimate \ -H "Authorization: Bearer $HAMUBOX_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @midjourney-image-generate.json提交时可将接受的最高金额填入 max_cost_usd。超出会返回 HTTP 409;需要重新确认价格,不要自动提高限额。正式价格以模型广场及当前 Key 的实时估价为准,不应把示例中的结果数量当成额外的计费乘数。
- 图片生成按组估价,后续变体、放大等是独立操作;视频批量按完整请求估价,不要再自行重复乘
n。 - 模型广场中的 MJ 单位为“次”,表示一次任务。图片的一组通常包含多张结果,并非每张都按页面基础价收费;视频也不是按秒计费,具体金额以规格、批量和操作的估价为准。
- 无法估价的操作或档位不要提交。费用、权限、原任务可用动作都会在提交时重新验证。
- 任务失败读取
error.message,费用读取usage;结算与退款说明见计费文档。 - 没有结果 URL 时先检查
status,不要立即重发。已经生成但正在保存结果的任务应继续查询,不能通过重新生成来修复保存问题。 - 提交断网或超时不代表上游没收到。已获得任务 ID 时只查询该任务;尚未获得 ID 时先核对任务记录,避免重复收费。
