MetaChat在最新的版本更新中,发布了Midjourney API,提供了生图、放大、微调等Midjourney的AI生图能力。笔者测试了一下,国内网络可以正常接入。
接入方式很简单:
首先注册MetaChat账号,打开MetaChat网站 https://metachat.fun ,注册成为会员。
其次,进入设置页面,找到充值入口,充值成功后,即会自动创建APPID和API Key。按照接口文档提供的接口描述,即可快捷调用Midjourney API。
Midjourney API
概述
MetaChat ( https://metachat.fun ) 面向合作伙伴提供开放平台 API,提供包括 Midjourney 等 AIGC 模型的基础能力和扩展特性,供合作伙伴集成和二次开发。本手册描述开放平台的接入方法、各类 API 的调用方法和注意事项,供合作伙伴的服务端开发人员参考。
1、接入鉴权
MetaChat 开放平台提供服务端 HTTPS RESTful API 接口,服务端基础 URL 和 API 前缀如下:
https://api.mmchat.xyz/open/v1
调用 MetaChat 开放平台 API 时,需使用 MetaChat 为合作伙伴分配的应用 ID(App ID)和鉴权密钥(API Key)进行合法鉴权,具体方法:
在 HTTP Header 中填写 X-App-ID 字段,标识合作伙伴的应用 ID(App ID)。
在 HTTP Header 中填写标准的 Authentication Bearer 字段,标识合作伙伴的鉴权密钥(API Key)。
开放平台 API 参数格式为 JSON,请在 HTTP Header 中标识相应的 Content-Type,并注意请求参数的填写和响应参数的解析。
以 curl 命令行工具调用为例:
curl https://api.mmchat.xyz/open/v1/models \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-H "X-App-ID: $APP_ID"
2、异常处理
MetaChat 开放平台 API 有如下两类异常返回:
服务级或应用级,利用 HTTP 标准的 400/500 系列 status code 返回异常,此时无需解析返回参数。
401 - authentication_error
: 鉴权失败,通常是 App ID 或 API Key 未填写或填写错误。
403 - permission_error
: 授权失败,通常是 App ID 或 API Key 已过期或已停用。
404 - not_found_error
: 请求资源不存在,通常是 API path 填写错误。
429 - rate_limit_error
: 限流,通常是 API 调用太频繁。
500 - internal_error
: MetaChat 开放平台内部错误。
API 级,此时 HTTP status code 为 200,具体错误信息在返回参数中描述。 status
: API 调用结果,string 类型,Success 表示成功,Fail 表示失败。 message
:描述信息,string 类型,通常用于 Fail 时的错误信息。 data
: API 返回数据,object 结构,具体定义参见后文 API 描述,当 Fail 时 data 为空。
示例:
{
"status": "Fail",
"message": "Midjourney 绘图描述中存在错误的参数,请修改后重新提交。",
"data": null
}
由于图片生成需要较长的 AI 服务时间,各图片生成和变换类 API 只负责创建和提交各类绘图任务,任务执行进度和最终生成的图片结果,需要调用后文描述的「查询结果」API 获取。
API 说明
Midjourney API
提供 Midjourney 官方支持的各类图片生成、变换、描述和融合能力,通常用于灵活多变的单一图片生成场景。
由于图片生成需要较长的 AI 服务时间,各图片生成和变换类 API 只负责创建和提交各类绘图任务,任务执行进度和最终生成的图片结果,需要调用后文描述的「查询结果」API 获取。
图片生成
POST /midjourney/imagine
-
说明:根据提示词、参数和参考图,生成 1 张四宫格图片。
-
请求参数(POST body)
-
prompt
: 提示词,string 类型,必填,支持中英文。提示词末尾可携带自定义参数(例如 --style raw --ar 1:1 --v 6 等),自定义参数会覆盖 params 中对应参数,未提供自定义参数时,以 params 参数为准。 -
model
: 模型版本,string 类型,取值mj-v6
(Midjourney V6,默认值)、mj-niji-v6
(Niji 6)。 -
params
: 绘图参数,object 类型-
aspect
: 图片比例,string 类型,取值 1:1(默认),2:3,3:2,3:4,4:3,16:9,9:16 等。 -
stylize
: 风格化程度,number 类型,取值 1 - 1000(默认 100)。 -
quality
: 画质,number 类型,取值 0.25(普通),0.5(标清),1(高清,默认)。 -
chaos
: 混乱程度,number 类型,取值 0 - 1000(默认 0)。 -
style
: 绘图风格,string 类型,取值 raw。 -
seed
: 随机种子,number 类型,取值 0 - 4294967295 间的整数。 -
no
: 排除关键词列表,string 列表,支持中英文。 -
iw
: 参考图权重,当参考图用于 Image Prompt 时有效,number 类型,取值 0 - 3(默认 1)。
-
-
images
: 参考图参数,array 类型,可包含 1 - 3 张参考图(JPG/PNG/WebP 格式),每张参考图定义为 object 类型-
url
: 图片完整 URL,string 类型,必填,需确保访问该 URL 能正常下载图片文件。 -
type
: 图片 MIME 类型,string 类型,必填,取值 image/png,image/jpg,image/jpeg,image/webp。 -
size
: 图片文件大小,number 类型,图片文件大小(bytes)。 -
w
: 图片宽度,number 类型。 -
h
: 图片高度,number 类型。 -
image_prompt
: 参考图是否用于 Image Prompt,boolean 类型。 -
sref
: 参考图是否用于风格一致性 sref,boolean 类型。 -
cref
: 参考图是否用于角色一致性 cref,boolean 类型。 -
sw
: 参考图用于风格一致性 sref 时的权重,number 类型,取值 0 - 1000(默认 100)。 -
cw
: 参考图用于角色一致性 cref 时的权重,number 类型,取值 0 - 100(默认 100)。
-
-
color
: 彩通 TPG 色号,string 类型,选填,如 11-0105TPG。色号定义详见 https://www.qtccolor.com/secaiku/dir/6 ,TPG 色号共计 2625 种。
-
-
请求参数示例
{ "prompt": "赛博朋克大都市", "model": "mj-v6", "params": { "aspect": "16:9", "stylize": 100, "quality": 1, "chaos": 0, "style": "raw", "seed": 123456, "no": [ "cat", "dog" ] }, "images": [{ "url": "https://yyy.com/aaa.jpg", "type": "image/jpg", "size": 1024123, "w": 1280, "h": 800, "cref": true, "cw": 0 }] }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。 -
prompt
: 最终生效的绘图提示词,string 类型,包括绘图描述、完整参数和参考图片等信息。 -
model
: 最终生效的模型版本,同请求字段定义。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片生成任务创建成功", "data": { "id": "6613e99751dbca13297821c4", "prompt": "Cyberpunk Metropolis --aspect 16:9 --stylize 100 --quality 1 --chaos 0 --cref https://yyy.com/aaa.jpg --cw 0 --style raw --v 6", "model": "mj-v6" } }
图片拆分
POST /midjourney/separate
-
说明:从生成的四宫格图片中拆分放大出指定的一张。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片生成」API 创建并生成完毕。 -
index
: 需拆分的图片索引,number 类型,必填,取值 1(左上 U1)、2(右上 U2)、3(左下 U3)、4(右下 U4)
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "index": 2 }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片拆分放大任务创建成功", "data": { "id": "6545bfe3e2b4e547e8414565", } }
图片微调(四宫格)
POST /midjourney/variation
-
说明:以四宫格图片中的一张图片为参考,微调变换后生成新的四宫格图片。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片生成」API 创建并生成完毕。 -
index
: 微调变化需参考的图片索引,number 类型,取值 1(左上 V1)、2(右上 V2)、3(左下 V3)、4(右下 V4)。
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "index": 1 }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片微调任务创建成功", "data": { "id": "64a01843d9dedd09fd77bc2d" } }
图片重绘
POST /midjourney/reroll
-
说明:针对已生成的四宫格图片进行整体重绘(保留原提示词和参数不变),生成新的四宫格图片。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片生成」API 创建并生成完毕。
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片重绘任务创建成功", "data": { "id": "6496f970e2aedf9465538208", } }
图片高清
POST /midjourney/upscale
-
说明:针对拆分后的单张图片进行高清放大。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片拆分」API 创建并生成完毕。 -
type
: 图片放大类型,string 类型,取值 subtle(2 倍原图高清,保留原图细节,默认值,mj-v6 和 niji-6 适用)、creative(2 倍增强高清,添加新细节,mj-v6 和 niji-6 适用)、2x(2 倍原图高清,mj-v5.2 和 niji-v5 适用)、4x(4 倍原图高清,mj-v5.2 和 niji-v5 适用)
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "type": "subtle" }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片放大任务创建成功", "data": { "id": "64a01843d9dedd09fd77bc2d", } }
图片微调(单图)
POST /midjourney/vary
-
说明:针对拆分或高清放大后的单张图片进行微调变化。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片拆分」或「图片高清」API 创建并生成完毕。 -
type
: 图片变化类型,string 类型,取值 subtle(轻微变化)、strong(强烈变化)
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "type": "strong" }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片微调变化任务创建成功", "data": { "id": "64a01843d9dedd09fd77bc2d", } }
图片变焦
POST /midjourney/zoomout
-
说明:针对拆分后的单张图片进行画面变焦(1.5 倍和 2 倍)。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片拆分」API 创建并生成完毕。 -
type
: 画面变焦倍数,string 类型,取值 1.5x(1.5 倍)、2x(2倍)
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "type": "2x" }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片变焦任务创建成功", "data": { "id": "64a01843d9dedd09fd77bc2d", } }
图片平移
POST /midjourney/pan
-
说明:针对拆分后的单张图片进行画面平移扩展。
-
请求参数(POST body)
-
id
: 绘图任务 ID,string 类型,必填,该任务由「图片拆分」API 创建并生成完毕。 -
type
: 画面平移方向,string 类型,取值 left(向左)、right(向右)、up(向上)、down(向下)
-
-
请求参数示例
{ "id": "6613e99751dbca13297821c4", "type": "left" }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片平移任务创建成功", "data": { "id": "64a01843d9dedd09fd77bc2d", } }
图片描述
POST /midjourney/describe
-
说明:提供 1 张图片 (JPG/PNG/WebP),模型生成 4 个可能的提示词。生成的提示词有启发性和暗示性,通常用于来探索新词汇和美学效果,不能用于精确重现已上传的图片。
-
请求参数(POST body)
-
image
: object 类型,必填,参数如下:-
url
: 图片完整 URL,string 类型,必填,需确保访问该 URL 能正常下载图片文件。 -
type
: 图片 MIME 类型,string 类型,必填,取值 image/png,image/jpg,image/jpeg,image/webp。 -
size
: 图片文件大小,number 类型,图片文件大小(bytes)。 -
w
: 图片宽度,number 类型。 -
h
: 图片高度,number 类型。
-
-
-
请求参数示例
{ "image": { "url": "https://yyy.com/aaa.jpg", "type": "image/jpg", "size": 1024123, "w": 1280, "h": 800, } }
-
返回数据(data)
-
id
: 成功创建的图片描绘任务 ID,string 类型,可用于后续结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片描述任务创建成功", "data": { "id": "6613e99751dbca13297821c4", } }
图片融合
POST /midjourney/blend
-
说明:提供 2 - 5 张图片 (JPG/PNG/WebP),模型根据每张图片的概念和美学,合并生成 1 张新的四宫格图片。
-
请求参数(POST body)
-
images
: 参考图参数,array 类型,必填,可包含 2 - 5 张原图,每张原图定义为 object 类型。-
url
: 图片完整 URL,string 类型,必填,需确保访问该 URL 能正常下载图片文件。 -
type
: 图片 MIME 类型,string 类型,必填,取值 image/png,image/jpg,image/jpeg,image/webp。 -
size
: 图片文件大小,number 类型,图片文件大小(bytes)。 -
w
: 图片宽度,number 类型。 -
h
: 图片高度,number 类型。
-
-
dimension
: 融合生成的图片比例,string 类型,取值 square(1:1 正方形宽高比,默认值),landscape(3:2 横向宽高比),portrait(2:3 纵向宽高比)。
-
-
请求参数示例
{ "images": [ { "url": "https://yyy.com/aaa.jpg", "type": "image/jpg", "size": 1024123, "w": 1280, "h": 800 }, { "url": "https://yyy.com/aaa.jpg", "type": "image/jpg", "size": 1024123, "w": 1280, "h": 800 } ], "dimension": "square" }
-
返回数据(data)
-
id
: 成功创建的绘图任务 ID,string 类型,可用于后续各类图片变换和绘图结果查询。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 图片融合任务创建成功", "data": { "id": "6613e99751dbca13297821c4" } }
查询结果
GET /midjourney/result/{id}
-
说明:查询绘图任务的执行进度和结果,调用方可定时轮询(考虑绘图速度,建议周期不低于 5 秒)。
-
请求参数(HTTP GET params)
-
id
: 各类图片生成或变换 API 中成功创建的绘图任务 ID。
-
-
返回数据(data)
-
id
: 绘图任务 ID,string 类型 -
status
: 任务状态,string 类型,取值 submitted(排队中)、in_progress(执行中,具体进度参见 progress)、failure(执行失败,具体原因参见 fail_reason)、success(执行成功)。 -
progress
: 任务进度(百分比),number 类型,0 - 100。 -
fail_reason
: 任务失败原因,string 类型,任务执行失败后返回。 -
image_url
: 最终生成的图片 URL,string 类型,任务执行成功后返回。 -
image_url_mirror
: 最终生成的图片 URL(七牛镜像地址),string 类型,任务执行成功后返回。 -
image_description
: 图片描绘任务最终生成的提示词,string 类型,任务执行成功后返回。 -
total_points
: 任务消耗的元点,number 类型,任务执行成功后返回。 -
prompt
: 原始提示词,string 类型。 -
revised_prompt
: 最终生效的绘图提示词,string 类型,包括绘图描述、绘图参数、参考图和模型版本等信息。 -
model
: 最终生效的模型版本,string 类型,详见「图片生成」API 描述。 -
command
: 绘图任务指令,string 类型。 -
params
: 最终生效的绘图参数,object 类型,详见「图片生成」API 描述。 -
images
: 原始参考图列表,array 类型,详见「图片生成」API 描述。 -
submitted_at
: 任务提交时间,number 类型,UNIX 时间戳(秒)。 -
started_at
: 任务启动时间,number 类型,UNIX 时间戳(秒)。 -
finished_at
: 任务结束时间,number 类型,UNIX 时间戳(秒)。
-
-
返回数据示例
{ "status": "Success", "message": "Midjourney 绘图任务查询成功", "data": { "id": "6613e99751dbca13297821c4", "status": "success", "progress": 100, "image_url": "https://aaa.bbb.ccc/generated_image.png", "image_url_mirror": "https://aaa.bbb.ccc.qiniu.com/generated_image.png", "total_points": 350, "prompt": "赛博朋克大都市", "revised_prompt": "Cyberpunk Metropolis --aspect 16:9 --stylize 100 --quality 1 --chaos 0 --cref https://yyy.com/aaa.jpg --cw 0 --style raw --v 6", "model": "mj-v6", "params": { "aspect": "16:9", "stylize": 100, "quality": 1, "chaos": 0, "style": "raw", "seed": 123456, "no": [ "cat", "dog" ] }, "images": [ { "url": "https://yyy.com/aaa.jpg", "type": "image/jpg", "size": 1024123, "w": 1280, "h": 800, "cref": true, "cw": 0 } ], "submitted_at": 1714051763, "started_at": 1714051770, "finished_at": 1714051864 } }
最新API文档更新访问:Midjourney API | MetaChat Knowledge Base