API 参考
Midjourney 绘图任务
Midjourney 异步绘图接口:POST /mj/submit/imagine 等提交任务,GET /mj/task/{id}/fetch 轮询结果。兼容常见的 Midjourney Proxy 协议,含放大、变换、扩图、局部重绘、图生文、视频的请求示例与按次计费说明。
Midjourney 是异步任务接口,用法和 OpenAI 格式的同步接口不同:先提交任务拿到任务 ID,再轮询查询,直到出图。路径和字段兼容常见的 Midjourney Proxy 协议,已经写好的 MJ 代码把地址换成 https://www.tutujin.com、Key 换成本站的即可。
https://www.tutujin.com/mj/submit/imagine请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer sk-...,控制台创建的 API Key。Midjourney Proxy 客户端常用的 mj-api-secret: sk-... 也可以 |
Content-Type | 是 | application/json |
请求体里不需要 model 字段:调用哪个接口、执行哪个动作,就按对应的模型计费。
接口一览
| 接口 | 用途 | 计费模型 |
|---|---|---|
POST /mj/submit/imagine | 文生图,base64Array 可带垫图 | mj_imagine |
POST /mj/submit/action | 点结果里的按钮:放大、变换、强 / 弱变换、重新生成、扩图、平移 | mj_upscale、mj_variation、mj_high_variation、mj_low_variation、mj_reroll、mj_zoom、mj_pan |
POST /mj/submit/modal | 局部重绘、自定义扩图的第二步 | mj_modal |
POST /mj/submit/describe | 图生文:根据图片反推提示词 | mj_describe |
POST /mj/submit/edits | 按提示词编辑图片 | mj_edits |
POST /mj/submit/video | 文 / 图生视频,一次生成 4 段 | mj_video |
POST /mj/submit/upload-discord-images | 上传图片,换取可在提示词里引用的图片地址 | mj_upload |
GET /mj/task/{id}/fetch | 查询单个任务 | 免费 |
POST /mj/task/list-by-condition | 按 {"ids": [...]} 批量查询 | 免费 |
各操作的单价见本页底部的模型列表或模型广场。目录里没有列出的操作(目前包括 Blend、Shorten、换脸)暂不支持,请求会返回「无可用渠道」,不会扣费。
请求参数
| 参数 | 类型 | 用于 | 说明 |
|---|---|---|---|
prompt | string | imagine、edits、video、modal | 提示词,可以带 --ar 16:9 等 Midjourney 参数。--fast、--relax、--turbo 会被忽略,速度档位由本站固定 |
base64Array | array | imagine、upload | 图片数组,每项是 data:image/png;base64,...。imagine 中作为垫图 |
taskId | string | action、modal | 要继续操作的原任务 ID |
customId | string | action | 按钮 ID,从原任务结果的 buttons 里取,决定执行哪个操作 |
maskBase64 | string | modal | 局部重绘的蒙版图片(base64) |
base64 | string | describe | 要反推提示词的图片(base64) |
image | string | edits、video | 参考图或视频首帧的图片地址 |
motion | string | video | 运动幅度,low 或 high |
请求示例
先提交 imagine,再轮询任务直到 status 为 SUCCESS 或 FAILURE:
curl https://www.tutujin.com/mj/submit/imagine \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "一只在窗边晒太阳的橘猫,水彩风格 --ar 3:2"
}'
# 用上一步返回的 result(任务 ID)查询
curl https://www.tutujin.com/mj/task/$TASK_ID/fetch \
-H "Authorization: Bearer $TUTUJIN_API_KEY"import os
import time
import requests
BASE = "https://www.tutujin.com"
HEADERS = {"Authorization": "Bearer " + os.environ["TUTUJIN_API_KEY"]}
submit = requests.post(
f"{BASE}/mj/submit/imagine",
headers=HEADERS,
json={"prompt": "一只在窗边晒太阳的橘猫,水彩风格 --ar 3:2"},
timeout=60,
).json()
if submit["code"] != 1:
raise RuntimeError(submit.get("description"))
task_id = submit["result"]
while True:
time.sleep(5)
task = requests.get(f"{BASE}/mj/task/{task_id}/fetch", headers=HEADERS, timeout=30).json()
if task["status"] in ("SUCCESS", "FAILURE"):
break
print(task["status"], task.get("imageUrl") or task.get("failReason"))
for b in task.get("buttons") or []:
print(b["label"], b["customId"])const BASE = 'https://www.tutujin.com'
const headers = { Authorization: `Bearer ${process.env.TUTUJIN_API_KEY}`, 'Content-Type': 'application/json' }
const submit = await fetch(`${BASE}/mj/submit/imagine`, {
method: 'POST',
headers,
body: JSON.stringify({ prompt: '一只在窗边晒太阳的橘猫,水彩风格 --ar 3:2' }),
}).then((r) => r.json())
if (submit.code !== 1) throw new Error(submit.description)
let task
do {
await new Promise((r) => setTimeout(r, 5000))
task = await fetch(`${BASE}/mj/task/${submit.result}/fetch`, { headers }).then((r) => r.json())
} while (!['SUCCESS', 'FAILURE'].includes(task.status))
console.log(task.status, task.imageUrl ?? task.failReason)
for (const b of task.buttons ?? []) console.log(b.label, b.customId)出图通常需要几十秒到一两分钟,轮询间隔 3–10 秒即可,不必更频繁。
继续操作:放大、变换、扩图、平移
任务完成后,结果里的 buttons 就是 Midjourney 界面上的按钮。把按钮的 customId 和原任务 ID 一起提交到 /mj/submit/action,会生成一个新任务,用同样的方式轮询:
curl https://www.tutujin.com/mj/submit/action \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"taskId": "1794500000000001",
"customId": "MJ::JOB::upsample::1::2f4a9c1e7b3d5a8f0c6e1b92"
}'upsample 对应放大(U1–U4、2x / 4x 放大),variation 对应变换(V1–V4),reroll 是重新生成,Outpaint 是扩图,pan_* 是平移。
局部重绘(Vary Region)和自定义扩图分两步:先用 action 提交 Inpaint 或 CustomZoom 按钮,返回 code 21 和一个新的任务 ID,这一步不扣费;再把这个 ID 连同新的 prompt(局部重绘还要 maskBase64 蒙版)提交到 /mj/submit/modal,按 mj_modal 计费。
响应示例
提交成功:
{ "code": 1, "description": "Submit success", "result": "1794500000000001" }查询结果:
{
"id": "1794500000000001",
"action": "IMAGINE",
"status": "SUCCESS",
"progress": "100%",
"imageUrl": "https://www.tutujin.com/mj/image/1794500000000001",
"failReason": "",
"buttons": [
{ "customId": "MJ::JOB::upsample::1::2f4a9c1e7b3d5a8f0c6e1b92", "label": "U1" },
{ "customId": "MJ::JOB::variation::1::2f4a9c1e7b3d5a8f0c6e1b92", "label": "V1" }
]
}| 字段 | 说明 |
|---|---|
code | 提交结果:1 成功;21 表示需要再提交 modal(局部重绘、自定义扩图);其他值表示失败,见 description |
result | 任务 ID |
status | NOT_START、SUBMITTED、IN_PROGRESS、SUCCESS、FAILURE |
progress | 进度,例如 67% |
imageUrl | 结果图(四宫格或放大后的单图),经本站域名中转;拿到后尽快下载保存 |
videoUrls | video 任务生成的视频地址 |
promptEn | describe 任务反推出的提示词 |
buttons | 可继续执行的操作 |
failReason | 失败原因 |
计费
- 按次计费,每个操作对应一个模型名,价格见下方列表。提交成功(
code为 1)才扣费;提交被拒绝不扣费,任务最终失败会退回。 - 所有放大按钮(U1–U4、2x、4x)都按
mj_upscale计费,扩图按mj_zoom计费,同一模型名下的不同按钮价格相同。 - 局部重绘、自定义扩图的第一步不扣费,第二步按
mj_modal计费。 - 查询任务免费。
注意事项
- 这个接口是异步的:不要在一个 HTTP 请求里等结果,提交后保存任务 ID,轮询或稍后再查。
- 不支持回调(
notifyHook会被忽略),请用轮询获取结果。 - 速度档位由本站固定,提示词里的
--fast、--relax、--turbo不起作用。 - 提示词触发 Midjourney 的内容审核时,提交会失败或任务以
FAILURE结束,修改提示词后再提交。 - 结果图地址只适合短期使用,下载后转存到自己的存储。
支持此接口的模型
| 模型 | 厂商 | 最低价分组 | 输入 ¥/百万 | 输出 ¥/百万 | 按次 ¥/次 |
|---|---|---|---|---|---|
| Midjourney Upload | Midjourney | 标准 | — | — | ¥0.02 |
| Midjourney Describe | Midjourney | 标准 | — | — | ¥0.1 |
| Midjourney Imagine | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Variation | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Vary (Strong) | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Vary (Subtle) | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Reroll | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Upscale | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Zoom Out | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Pan | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Vary Region / Custom Zoom | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Edit | Midjourney | 标准 | — | — | ¥0.4 |
| Midjourney Video | Midjourney | 标准 | — | — | ¥2.8 |
价格为人民币,取各模型最低价分组;价格更新于 2026年11月13日 17:58。
没找到答案?加客服微信 JsnonoChat,发送报错信息里的 request id,我们帮你排查。