Midjourney 图像格式(Midjourney Proxy/Midjourney Proxy Plus)

请你注意 该接口 非Midjourney官方的接口,而是基于作者 novicezk 的开源项目 midjourney-proxy 实现的midjourney代理接口。 该项目分为两个版本,New API 都已经适配:

功能类别 开源版 付费版
基础功能
Imagine指令及相关动作
垫图支持
Blend(图片混合)
Describe(图生文)
任务实时进度
中文prompt翻译
prompt敏感词检测
user-token连接wss
多账号配置
高级功能
Shorten(prompt分析)
焦点移动(Pan)
图片变焦(Zoom)
局部重绘(Vary Region)
关联按钮动作和Remix模式
获取图片seed值
账号管理
账号池持久化
多种存储支持(Redis/MySQL)
账号信息获取和设置
任务取消功能
内置管理后台
智能特性
MJ V6.0支持
账号状态自动监控
模式自动切换
niji・journey Bot支持
InsightFace人脸服务
安全性能
动态配置支持
token掉线问题修复
自动验证功能
违禁词自动申诉

📝 简介

Midjourney是一个强大的图像生成和处理模型,可以根据自然语言描述创建、编辑和修改图像。通过提供不同的接口,可以实现各种图像生成和处理任务。

🔄 流程示意图

Midjourney.webp

流程说明

  1. 初始任务

    • Imagine: 文本生成图片
    • Blend: 多图混合
    • Describe: 图片描述
    • Swap Face: 人脸替换
  2. 图片处理

    • U1-U4: 放大操作
    • V1-V4: 变体生成
    • Pan: 图片平移
    • Zoom: 图片缩放
  3. 特殊流程

    • Action + Modal: 需要弹窗确认的操作
    • Action 直接执行: 不需要弹窗的操作
  4. 任务管理

    • 获取任务详情
    • 获取图片 Seed
    • 上传至 Discord

💡 请求示例

提交Imagine任务 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/imagine' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "prompt": "Cat",
  "base64Array": [],
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

响应示例:

{
  "code": 1,
  "description": "提交成功",
  "properties": {},
  "result": 1320098173412546
}

提交Blend任务 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/blend' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "base64Array": [
    "data:image/png;base64,xxx1",
    "data:image/png;base64,xxx2"
  ],
  "dimensions": "SQUARE",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

响应示例:

{
  "code": 1,
  "description": "提交成功",
  "properties": {},
  "result": 1320098173412546
}

提交Describe任务 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/describe' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "botType": "MID_JOURNEY",
  "base64": "data:image/png;base64,xxx",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

响应示例:

{
  "code": 1,
  "description": "提交成功",
  "properties": {},
  "result": 1320098173412546
}

提交Modal ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/modal' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "maskBase64": "",
  "prompt": "",
  "taskId": "14001934816969359"
}'

响应示例:

{
  "code": 1,
  "description": "提交成功",
  "properties": {},
  "result": 1320098173412546
}

提交swap_face任务 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/insight-face/swap' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "sourceBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RDnYdriP1wsS81kwU8OVs/R3xu8s6bX7+zYnOH8coSqpmRSBjqerjcBlr2OB/lbAf/2Q==",
  "targetBase64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBwgHBgkIBwgKCgkLDRYPDQwMDRsUFRAWIB0iIiAdHx8kKDQsJCYxJx8fLT0tMTU3Ojo6Iys/RD849k="
}'

响应示例:

{
  "code": 0,
  "description": "string",
  "result": "string"
}

执行Action动作 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/action' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "chooseSameChannel": true,
  "customId": "MJ::JOB::upsample::1::82c51c9d-bc33-4c07-a471-36c3dcb1a6f0",
  "taskId": "1728781324658687",
  "accountFilter": {
    "channelId": "",
    "instanceId": "",
    "modes": [],
    "remark": "",
    "remix": true,
    "remixAutoConsidered": true
  },
  "notifyHook": "",
  "state": ""
}'

响应示例:

{
  "code": 1,
  "description": "提交成功",
  "properties": {},
  "result": 1320098173412546
}

上传文件到discord ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/submit/upload-discord-images' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
  "base64Array": [],
  "filter": {
    "channelId": "",
    "instanceId": "",
    "remark": ""
  }
}'

响应示例:

{
  "code": 0,
  "description": "string",
  "result": [
    "string"
  ]
}

根据ID列表查询任务 ✅

curl --location --request POST 'https://$Burncloud_API_BaseUrl/mj/task/list-by-condition' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "ids": []
}'

响应示例:

[
  {
    "action": "IMAGINE",
    "buttons": [
      {
        "customId": "string",
        "emoji": "string",
        "label": "string",
        "style": 0,
        "type": 0
      }
    ],
    "description": "string",
    "failReason": "string",
    "finishTime": 0,
    "id": "string",
    "imageUrl": "string",
    "progress": "string",
    "prompt": "string",
    "promptEn": "string",
    "properties": {},
    "startTime": 0,
    "state": "string",
    "status": "NOT_START",
    "submitTime": 0
  }
]

指定ID获取任务 ✅

curl --location --request GET 'https://$Burncloud_API_BaseUrl/mj/task/{id}/fetch' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Content-Type: application/json'

响应示例:

{
  "action": "IMAGINE",
  "buttons": [
    {
      "customId": "string",
      "emoji": "string",
      "label": "string",
      "style": 0,
      "type": 0
    }
  ],
  "description": "string", 
  "failReason": "string",
  "finishTime": 0,
  "id": "string",
  "imageUrl": "string",
  "progress": "string",
  "prompt": "string",
  "promptEn": "string",
  "properties": {},
  "startTime": 0,
  "state": "string",
  "status": "NOT_START",
  "submitTime": 0
}

获取任务图片的seed ✅

curl --location --request GET 'https://$Burncloud_API_BaseUrl/mj/task/{id}/image-seed' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer $Burncloud_API_KEY' \
--header 'Content-Type: application/json'

响应示例:

{
  "code": 0,
  "description": "string",
  "result": "string"
}

📮 请求

端点

提交Imagine任务

POST /mj/submit/imagine

根据文本提示创建图片。

提交Blend任务

POST /mj/submit/blend

根据多个输入图片融合生成新图片。

提交Describe任务

POST /mj/submit/describe

根据输入图片生成文字描述。

提交Modal

POST /mj/submit/modal

提交模态信息,用于调整图片生成细节。

提交swap_face任务

POST /mj/insight-face/swap

根据源图片和目标图片进行人脸交换。

执行Action动作

POST /mj/submit/action

对已生成的图片进行后续操作,如放大、调整等。

上传文件到discord

POST /mj/submit/upload-discord-images

将图片上传到discord平台。

根据ID列表查询任务

POST /mj/task/list-by-condition

根据指定的任务ID列表查询任务详情。

指定ID获取任务

GET /mj/task/{id}/fetch

根据任务ID获取任务详情。

获取任务图片的seed

GET /mj/task/{id}/image-seed

获取指定任务生成图片的seed值。

鉴权方法

在请求头中包含以下内容进行 API 密钥认证:

Authorization: Bearer $Burncloud_API_KEY$OPENAI_API_KEY

其中 $OPENAI_API_KEY 是您的 API 密钥。

请求体参数

提交 Imagine 任务

botType
prompt
base64Array
accountFilter
notifyHook
state

提交 Blend 任务

base64Array
dimensions

提交 Describe 任务

base64

提交 Modal 任务

maskBase64
prompt
taskId

提交 Swap Face 任务

sourceBase64
targetBase64

执行 Action 动作

chooseSameChannel
customId
taskId

上传文件到 Discord

base64Array
filter

根据 ID 列表查询任务

ids

通用响应格式

所有接口都返回相似的响应结构:

code
状态码 说明
1 提交成功
22 任务排队中
21 参数错误
23 系统错误
24 账号不可用
25 余额不足
description
properties
result

📥 响应

成功响应

action

字符串值 说明
IMAGINE 创建图片
UPSCALE 放大图片
VARIATION 变体生成
ZOOM 缩放图片
PAN 平移图片
DESCRIBE 图片描述
BLEND 图片混合
SHORTEN 缩短提示词
SWAP_FACE 人脸替换

buttons

数组包含属性 说明
customId 动作标识
emoji 按钮图标
label 按钮文本
style 样式(2=Primary, 3=Green)
type 系统内部使用的类型

description

failReason

finishTime

id

imageUrl

progress

prompt

promptEn

status

字符串值 说明
NOT_START 未开始
SUBMITTED 已提交
MODAL 模态操作中
IN_PROGRESS 进行中
FAILURE 失败
SUCCESS 成功
CANCEL 已取消

submitTime

startTime

错误响应

当请求出现问题时,API 将返回错误响应:

HTTP 状态码

错误响应格式

{
  "code": <错误码>,
  "description": "错误描述信息",
  "result": null
}

💡 最佳实践

Prompt 编写建议

  1. 使用清晰简洁的语言描述期望的图像内容
  2. 可以参考Midjourney支持的各种参数来控制图片风格
  3. 适当使用否定描述以排除不需要的元素
  4. 可以通过图片URL作为参考来指导生成

图片生成流程

  1. 提交Imagine任务,获得初步图片
  2. 必要时通过Blend、Modal等任务进一步优化
  3. 执行Action动作进行图片微调
  4. 将满意的结果图片上传保存

图片格式要求

  1. 支持的图片格式:

    • JPEG/JPG

    • PNG

    • GIF (静态)

    • WEBP

  2. 图片大小限制:

    • 文件大小:最大 4MB

    • 分辨率:建议 1024x1024 或更高

    • 宽高比:支持 1:1、2:3、3:2

性能优化建议

  1. Base64 编码:

    • 使用标准 Base64 编码格式

    • 包含正确的 MIME 类型前缀

    • 压缩图片以减少数据传输

  2. 任务处理:

    • 使用 webhook 接收任务完成通知

    • 合理设置重试策略

    • 建议使用异步处理方式

错误处理


Revision #3
Created 14 August 2025 07:05:51 by Burncloud
Updated 19 August 2025 04:36:42 by Burncloud