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日 下午6:08。
沒找到答案?加客服微信 JsnonoChat,傳送報錯資訊裡的 request id,我們幫你排查。