跳转到主要内容
POST
/
v1
/
tasks
Midjourney
curl --request POST \
  --url https://www.qingbo.dev/v1/tasks \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "<string>",
  "action": "<string>",
  "prompt": "<string>",
  "aspect_ratio": "<string>",
  "image_urls": [
    "<string>"
  ],
  "seed": 123,
  "callback_url": "<string>",
  "speed": "<string>",
  "ref_task_id": "<string>",
  "index": 123,
  "direction": "<string>",
  "zoom_ratio": 123,
  "custom_id": "<string>",
  "version": "<string>",
  "niji": true,
  "quality": "<string>",
  "stylize": 123,
  "chaos": 123,
  "negative_prompt": "<string>"
}
'
import requests

url = "https://www.qingbo.dev/v1/tasks"

payload = {
"model": "<string>",
"action": "<string>",
"prompt": "<string>",
"aspect_ratio": "<string>",
"image_urls": ["<string>"],
"seed": 123,
"callback_url": "<string>",
"speed": "<string>",
"ref_task_id": "<string>",
"index": 123,
"direction": "<string>",
"zoom_ratio": 123,
"custom_id": "<string>",
"version": "<string>",
"niji": True,
"quality": "<string>",
"stylize": 123,
"chaos": 123,
"negative_prompt": "<string>"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: '<string>',
action: '<string>',
prompt: '<string>',
aspect_ratio: '<string>',
image_urls: ['<string>'],
seed: 123,
callback_url: '<string>',
speed: '<string>',
ref_task_id: '<string>',
index: 123,
direction: '<string>',
zoom_ratio: 123,
custom_id: '<string>',
version: '<string>',
niji: true,
quality: '<string>',
stylize: 123,
chaos: 123,
negative_prompt: '<string>'
})
};

fetch('https://www.qingbo.dev/v1/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://www.qingbo.dev/v1/tasks"

payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"seed\": 123,\n \"callback_url\": \"<string>\",\n \"speed\": \"<string>\",\n \"ref_task_id\": \"<string>\",\n \"index\": 123,\n \"direction\": \"<string>\",\n \"zoom_ratio\": 123,\n \"custom_id\": \"<string>\",\n \"version\": \"<string>\",\n \"niji\": true,\n \"quality\": \"<string>\",\n \"stylize\": 123,\n \"chaos\": 123,\n \"negative_prompt\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://www.qingbo.dev/v1/tasks")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"action\": \"<string>\",\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ],\n \"seed\": 123,\n \"callback_url\": \"<string>\",\n \"speed\": \"<string>\",\n \"ref_task_id\": \"<string>\",\n \"index\": 123,\n \"direction\": \"<string>\",\n \"zoom_ratio\": 123,\n \"custom_id\": \"<string>\",\n \"version\": \"<string>\",\n \"niji\": true,\n \"quality\": \"<string>\",\n \"stylize\": 123,\n \"chaos\": 123,\n \"negative_prompt\": \"<string>\"\n}")
.asString();
{
  "task_id": "task-wave1781770984b950327128",
  "model": "midjourney",
  "action": "imagine",
  "status": "queued",
  "created_at": 1781770984120,
  "progress": 0
}
Midjourney 通过统一异步任务接口 /v1/tasks 调用,用 action 字段区分操作,一个 model 暴露全部能力。 两类操作:
  • 独立生成类 — 不依赖前序任务:imagine(文生图)、blend(多图融合)、describe(图转文)、edits(全图重写)
  • 链式操作类 — 基于前一个任务的产物再加工,需传 ref_task_id 引用前序任务:upscale(放大)、variation / high-variation / low-variation(变体)、reroll(重出网格)、zoom(外绘缩放)、pan(方向平移)、remix-strong / remix-subtle(v8 重塑)
imagine 等生成类返回 2×2 四宫格(一张图含 4 个画面)。要对其中某一张放大 / 变体,用链式操作传 ref_task_id(该网格任务的 task_id)+ index(1-4 选第几张)。详见 链式操作

定价

按操作 + 速度档计费(单位 USD)。speedrelax(默认) / fast / turbo
操作relax / 默认fastturbo
imagine$0.05067$0.06192$0.1125
其余全部 action$0.06192$0.06192$0.1125
任务失败自动全额退款。

Action 速查

action类型必填说明
imagine生成prompt文生图;可加 image_urls 做图像引导。出四宫格
blend生成image_urls(2-4)多图融合,无 prompt
describe生成image_urls(1)图转文,返回 4 条提示词建议
edits生成prompt + image_urls(1)全图重写(背景替换 / 风格迁移)
upscale链式ref_task_id + index放大网格中第 index
variation链式ref_task_id + index基于某张出新的四宫格变体
high-variation链式ref_task_id + index强变体(变化幅度大)
low-variation链式ref_task_id + index弱变体(保持主体)
reroll链式ref_task_id用同 prompt 重出一组四宫格
zoom链式ref_task_id + zoom_ratio外绘缩放(<2 用 1.5x,≥2 用 2x)
pan链式ref_task_id + directionleft/right/up/down 平移外绘
remix-strong链式ref_task_id + indexv8/v8.1 大幅重塑,可改 prompt
remix-subtle链式ref_task_id + indexv8/v8.1 保守重塑

调用示例

curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "action": "imagine",
    "prompt": "a majestic eagle soaring over snowy mountains, cinematic",
    "aspect_ratio": "16:9",
    "version": "7",
    "speed": "fast"
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "action": "upscale",
    "ref_task_id": "task-wave1781770984b950327128",
    "index": 2
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "action": "blend",
    "image_urls": [
      "https://cdn.example.com/a.jpg",
      "https://cdn.example.com/b.jpg"
    ],
    "aspect_ratio": "1:1"
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "action": "describe",
    "image_urls": ["https://cdn.example.com/photo.jpg"]
  }'
curl -X POST https://www.qingbo.dev/v1/tasks \
  -H "Authorization: Bearer $WAVE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "midjourney",
    "action": "pan",
    "ref_task_id": "task-wave...upscale_task",
    "direction": "right"
  }'
{
  "task_id": "task-wave1781770984b950327128",
  "model": "midjourney",
  "action": "imagine",
  "status": "queued",
  "created_at": 1781770984120,
  "progress": 0
}
提交后用 GET /v1/tasks/{task_id} 轮询状态,详见 任务系统

可用模型

模型 ID说明
midjourneyMidjourney 全功能,15 种 action(生成 + 链式),支持 v5.1–v8.1 / niji

链式操作

链式 action 基于前一个任务的产物再加工,核心是 ref_task_idindex
1

先生成网格

imagine 拿到响应里的 task_id(例如 task-wave1781770984b950327128),它对应一张 2×2 四宫格
2

引用网格 + 选图

链式操作传 ref_task_id(= 上一步的 task_id)+ index(1-4,左上=1 右上=2 左下=3 右下=4)。例如 upscale 放大第 2 张。
3

继续链式

放大后的单图任务又可作为 zoom / panref_task_id,层层叠加。
ref_task_id 必须是你自己已成功同一渠道的任务,否则报错(source_task_not_found / source_task_not_owned / source_task_not_success / source_task_channel_mismatch)。引用的是任务 task_id,不是结果图片 URL
各链式 action 对来源任务的要求:
action来源任务选图
upscale / variationimagine / reroll 的四宫格index 必填
high-variation / low-variationupscale 后的单图index 必填
rerollimagine 的四宫格不需 index
zoom / panupscale 后的单图不需 index
remix-strong / remix-subtlev8/v8.1 的 imagine 四宫格index 必填

通用参数

model
string
必填
固定 midjourney
action
string
默认值:"generate"
操作类型,见 Action 速查。生成类传 imagine/blend/describe/edits,链式类传对应 action
prompt
string
提示词。imagine/edits 必填;支持原生 MJ flags(如 --ar 16:9)。blend/describe 不用
aspect_ratio
string
默认值:"1:1"
画面比例,如 1:1 / 16:9 / 9:16 / 2:3 / 3:2 / 4:3 / 3:4 / 21:9 / 9:21
image_urls
string[]
参考图。blend 2-4 张,describe/edits 1 张,imagine 可选(图像引导)
seed
integer
随机种子
callback_url
string
任务终态回调地址(可选,替代轮询)

模型特定参数

speed
string
默认值:"relax"
速度档 relax / fast / turbo,影响出图速度与计费(见 定价)
ref_task_id
string
链式操作必填 — 前序任务的 task_id(本平台返回的 wave task_id)。见 链式操作
index
integer
选四宫格第几张(1-4)。upscale/variation/high-variation/low-variation/remix-* 需填
direction
string
pan 平移方向:left / right / up / down
zoom_ratio
number
zoom 缩放倍数:<2 走 Outpaint 1.5x,≥2 走 CustomZoom 2x
custom_id
string
高级:直接指定 MJ 按钮 ID(给了则忽略 index),用于网关未抽象的特殊操作
version
string
MJ 版本:8.1 / 7 / 6.1 / 5.2 / 5.1
niji
boolean
切换 Niji(动漫)模式
quality
string
画质 --q:0.25 / 0.5 / 1 / 2
stylize
integer
风格化强度 --s,0-1000
chaos
integer
变异度 --c,0-100
negative_prompt
string
排除元素 --no

资源限制

  • blend 参考图 2-4 张,单张 ≤ 12 MiB
  • describe 同步返回较快(1-3 秒),结果为文本建议
  • pan 仅 v6/v6.1/v7/niji6 支持;v8/v8.1 已移除
  • remix-strong / remix-subtle 仅 v8/v8.1

相关文档