Midjourney Imagine API 申请与使用
Midjourney 是一款强大的 AI 绘图工具,通过输入关键字即可生成精美图像。本文档介绍 Midjourney Imagine API 的使用流程,帮助开发者通过文本生成所需图像。
申请流程
访问平台页面点击「Acquire」按钮获取请求凭证。首次申请通常赠送免费额度。
基本使用
在界面填写对应内容:
authorization:在下拉列表中选择。prompt:图片描述词(建议英文),例如Lamborghini speeds inside a volcano。
主要请求参数:
prompt:图片描述词(支持自动翻译)。mode:生成模式,可选fast/relax/turbo,默认 fast。timeout:超时时间(秒)。translation:是否自动翻译非英文 prompt。split_images:是否将 2x2 结果拆分返回单张。action/image_id:对历史图片继续操作时需指定。callback_url:异步回调地址。
调用后返回 JSON 结果,包含以下字段:
task_id:任务 ID。image_id:图片唯一标识。image_url:缩略图 URL。raw_image_url:原图 URL。actions:可执行的操作列表(如 upscale, variation 等)。
图像放大与变换
针对生成的图片进行进一步操作,例如将 action 设为 variation2 并传入 image_id 进行微调。若需放大,可传入 upscale4。
放大后的 actions 包含更多选项:
upscale_2x/upscale_4x:放大倍数。zoom_out_2x/zoom_out_1_5x:缩小画面。pan_left/pan_right/pan_up/pan_down:画面偏移。
图像改写(垫图)
支持输入图片 URL 及描述文字进行改写。图片 URL 需为纯图片链接。
示例 Prompt:
https://cdn.acedata.cloud/v014oc.png an illustration of a car parked on the beach --iw2
将图片链接与文字描述组合传递给 prompt 字段。
图像融合
支持传入多张图片实现融合效果。最多支持 5 张图片 URL。
示例 Prompt:
https://example.com/img1.png https://example.com/img2.png The bear is holding the chainsaw --iw2
局部变换
支持图像局部重绘。需传入图片 ID、掩码(mask)及行为参数 variation_region。
获取掩码
可通过灰度图片 Base64 编码获取掩码。Python 示例代码:
import cv2
import base64
image_path = 'temp.jpg'
gray_image = cv2.imread(image_path)
_, buffer = cv2.imencode('.jpg', gray_image)
base64_encoded = base64.b64encode(buffer).decode('utf-8')
with open('grayscale_image_base64.txt', 'w') as f:
f.write(base64_encoded)
print("success!")
注意:掩码图片必须与原图片尺寸一致,白色区域为重绘区域。
参数设置
action:variation_regionprompt:重绘描述词(可选)image_id:图片唯一标识mask:Base64 编码的掩码
部分代码示例如下:
CURL
curl -X POST 'https://api.acedata.cloud/midjourney/imagine' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{ "prompt": "A cute cat ", "action": "variation_region", "image_id": "1265875488702726144", "mask": "/9j/4AAQSkZJRgABAQAAAQABAAD..." }'
Python
import requests
url = "https://api.acedata.cloud/midjourney/imagine"
headers = {
"accept": "application/json",
"authorization": "Bearer {token}",
"content-type": "application/json"
}
payload = {
"prompt": "A cute cat ",
"action": "variation_region",
"image_id": "1265875488702726144",
"mask": "/9j/4AAQSkZJRgABAQAAAQABAAD..."
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
异步回调
API 支持 Webhook 回调。设置 callback_url 为接收 HTTP 请求的服务地址。
成功时返回:
{"success":true,"task_id":"...","image_url":"..."}
失败时返回:
{"success":false,"task_id":"...","error":{"code":"bad_request","message":"..."}}
流式输出
Midjourney 生成过程包含多次迭代。开启流式输出可在生成过程中实时反馈进度。
修改请求头 accept 为 application/x-ndjson。
Python 示例
import requests
url = 'https://api.acedata.cloud/midjourney/imagine'
headers = {
'content-type': 'application/json',
'accept': 'application/x-ndjson',
'authorization': 'Bearer {token}'
}
body = {"prompt": "a beautiful cat --v 6"}
r = requests.post(url, headers=headers, json=body, stream=True)
for line in r.iter_lines():
print(line.decode())
Node.js 示例
const axios = require("axios");
const url = "https://api.acedata.cloud/midjourney/imagine";
const headers = {
"content-type": "application/json",
"accept": "application/x-ndjson",
"authorization": "Bearer {token}"
};
const body = {
"prompt": "a beautiful cat --v 6",
"action": "generate"
};
axios.post(url, body, { headers: headers, responseType: "stream" })
.then((response) => {
console.log(response.status);
response.data.on("data", (chunk) => {
console.log(chunk.toString());
});
})
.catch((error) => {
console.error(error);
});
注意:流式输出中 progress 字段表示生成进度(0-100)。未完全完成时 actions 为空。

