Midjourney Imagine绘图
注意:本 API 属于生成式人工智能 API,出于安全考虑,请务必在使用时不要输入带有国家和企业机密的相关信息,同时本 API 也会严格遵循中华人民共和国《生成式人工智能服务管理办法》严格把控和过滤相关敏感、不道德、侵权等信息。
Midjourney 是一个强大的图像生成服务,可以通过自然语言描述生成对应的精美图像。本 API 对接了 Midjourney 官方,提供了 Midjourney 的调用能力,并支持图像的预览生成和连续修改操作。
一.您的KEY
点击前往获取KEY |【MJ绘图】点击KEY按钮获取
二.创建任务
快图请求地址:https://mjapi.ai-gs.cn/v1/Imagine/fast
慢图请求地址:https://mjapi.ai-gs.cn/v1/Imagine/relax
超级快图请求地址:https://mjapi.ai-gs.cn/v1/Imagine/turbo
请求方式:POST
URL:
参数 | 值 |
---|---|
token string 必填参数 | 点击前往获取KEY |
请求头:
参数 | 值 |
---|---|
Content-Type string 必填参数 | application/json |
Accept string 必填参数
|
application/json |
请求体:
参数 | 值 |
---|---|
action string 必须
操作类型。在第一次生成图时,需要指定该值为 generate,并填入 prompt 字段。后续所有返回内容都有新actions参数列(v图,u图,z图,p图),选择一个对图像处理。该值默认为 generate |
|
promptstring 非必需
图像描述。在第一次生图时,需要指定该字段,代表待生成图像的描述。强烈建议用英文,中文可能导致生成内容不匹配 |
|
image_id string 非必需
图像 ID。在第一次生图时(action为generate时),不需要指定该字段。在后续需要对图像进行处理时(v图,u图,z图,p图),需要指定该字段,代表待处理图像的 ID。该 ID 为上一次生成图时返回的 image_id 字段 |
|
timeout number 非必需 超时秒数。用于指定该 API 返回数据的最长等待时间。该值默认为 480,即 480 秒 | |
callback_url string 必须
Webhook 回调 URL。默认情况下,本 API 会进行长等待一直到图片生成完毕才返回响应。图片生成完毕之后,生成结果将会以 POST 形式发送到此 Webhook URL。 |
|
translation boolean 非必需
是否启用自动翻译。启用之后 prompt 可以被自动翻译为英文生成图片。如果您的 prompt 为非英文,可以尝试开启此开关。默认为 false |
友情提示:由于MJ的U图成本高,你可以选择使用我们自行开发U图插件代替MJ原生U图
把MJ的四格图链接发送过来,系统自动切分。crop1->upsample1,crop2->upsample2,crop2->upsample2,crop2->upsample2
《Midjourney Crop裁剪U图接口文档》
创建任务请求体例子:
-
generate 文生图
{ "action": "generate", "prompt": "白色背景上,怪物3D图标,靛蓝风格,科技感,极简主义 --niji 5", "image_id": "", "timeout": 1000, "callback_url": "https://xxxxx.com/callback_url", "translation": false }
-
generate 图生图(垫图)
在prompt上加入垫图链接(记得要空格间隔开来),建议图片链接加上全球CDN,否则MJ概率性读取不了图片链接
可以考虑阿里云或者腾讯云的全球CDN指向图片服务器或者OSS{ "action": "generate", "prompt": "https://cdn.xxxx.com/diantu.jpg 白色背景上,怪物3D图标,靛蓝风格,科技感,极简主义 --niji 5", "image_id": "", "timeout": 1000, "callback_url": "https://xxxxx.com/callback_url", "translation": false }
-
upsample
{ "action": "upsample1", "prompt": "", "image_id": "1175337056487096370", "timeout": 1000, "callback_url": "https://xxxxx.com/callback_url", "translation": false }
-
variation
{ "action": "variation1", "prompt": "", "image_id": "1175337056487096370", "timeout": 1000, "callback_url": "https://xxxxx.com/callback_url", "translation": false }
-
其它
P图 Z图参考U图和V图方式
三.接口返回
创建任务响应状态:
-
200 成功
200 获取到一个task_id
{ "task_id": "f0e7e020-bb73-459a-9fec-61dd5663ba3e" }
等Midjourney开始出图,callback_url会接收到完整内容,使用task_id作为识别。你也可以在callback_url自行定义唯一url参数来识别
-
400 错误
-
no_token
使用的 API 时未携带 token,无法通过校验。
{ "code": "no_token", "detail": "No token specified in url query." }
-
api_not_implemented
使用的 API 在系统中未实现,无法通过校验。
{ "code": "api_not_implemented", "detail": "The API is not implemented." }
-
-
401 错误
invalid_token 请求 API 时传入的 token 无效,需要更换 token 或者重新申请。
{ "code": "invalid_token", "detail": "The token is invalid, please make sure your token is correct." } -
403 错误
-
used_up
错误代码,API 套餐已经用完,需要充值 { "code": "used_up", "detail": "Your packaged has been used up, please buy more in system." }
-
forbidden
生成图片操作被禁止,大部分会遇到如下 2 种情况,detail 字段如下: 1. The prompt has blocked words `xxx`:对输入 prompt 增加了违禁词检测,如果 prompt 包含违禁词,则会显示提示输入的 prompt 不合规。建议的解决办法是请更换 prompt 中的违禁词。 2. Sorry! Our Al moderators feel your prompt might be against our community standards:当上述prompt 违禁词检测没有问题时,Midjourney 还会有第二层 AI 判定输入的 prompt 是否有问题或者敏感,如果 AI 判定输入词有问题,则只会提示上述内容。注意:因为这里输入 Midjourney AI 判定,所以里面有些误判或者不可控因素在里面,建议的解决办法是对输入的 prompt 进行微调,大概率就能通过。 { "code": "forbidden", "detail": "Sorry! Our Al moderators feel your prompt might be against our community standards" }
-
unverified
未完成实名认证,需要到系统里面完成实名认证才可使用 API。 { "code": "unverified", "detail": "You did not finish Real-name auth, please verify in the system" }
-
-
404 错误
no_api 请求的 API 不存在,请确保 API 路径正确。 { "code": "no_api", "detail": "API does not exist, please make sure url is correct." } -
500 unknown
未知错误,需要联系系统管理员。 { "code": "unknown", "detail": "Unknown server error, please contact admin." }
四.任务回调内容
成功创建任务后,callback_url链接地址会收到通知,通知内容为json格式。
Midjourney是流式内容,所以同一个task_id会有多条通知,直到进度为100
请留意actions参数,例如U图可用的actions跟其它不同
参数 | 值 |
---|---|
success boolean | 状态:true为出图成功,false为出图失败 |
task_id string
|
任务ID |
image_id string
|
图片ID |
image_url string
|
缩略图链接 |
image_width string
|
缩略图宽度 |
image_width string
|
缩略图高度 |
raw_image_url string
|
完整图链接 |
raw_image_width number
|
完整图宽度 |
raw_image_width number
|
完整图高度 |
progress number
|
进度,midjourney从0-100,但进度为100,actions参数就会有内容 |
actions array
|
可操作行为。该图片后续可进行的操作行为。配合image_id进行后面行为。 |
code string
|
出图失败才有该参数,出错类型 |
detail string
|
出图失败才有该参数,出错详情 |
trace_id string
|
出图失败才有该参数,追踪ID |
任务回调例子:
-
任务 成功-generate
{ "success": true, "task_id": "f0e7e020-bb73-459a-9fec-61dd5663ba3e", "image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1182744194968715264/nfdbgf_monster_3D_icon_on_a_white_background_in_the_style_of_sk_98a89544-d32b-486a-919f-3e3eee0c9982.png?ex=6585cf5e&is=65735a5e&hm=25d95d96339d1dbc733ddc4f244af51c546649427e334e92f8d4a42078af047d&?width=1024&height=1024", "image_width": 1024, "image_height": 1024, "image_id": "1182744194968715264", "raw_image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1182744194968715264/nfdbgf_monster_3D_icon_on_a_white_background_in_the_style_of_sk_98a89544-d32b-486a-919f-3e3eee0c9982.png?ex=6585cf5e&is=65735a5e&hm=25d95d96339d1dbc733ddc4f244af51c546649427e334e92f8d4a42078af047d&", "raw_image_width": 2048, "raw_image_height": 2048, "progress": 100, "actions": ["upsample1", "upsample2", "upsample3", "upsample4", "reroll", "variation1", "variation2", "variation3", "variation4"] }
-
任务 成功-upsample
{ "success": true, "task_id": "ac487b66-96db-47cf-9378-067cb6556a3d", "image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1186566331986882640/sdf23fssss_monster_3D_icon_on_a_white_background_in_the_style_o_a4d390f2-afcb-4644-a52c-b30723309f92.png?ex=6593b702&is=65814202&hm=d00e911eca404028cbe24b735bd6ad39bf91446675a353cf0038cb7d8b8832ea&?width=512&height=512", "image_width": 512, "image_height": 512, "image_id": "1186566331986882640", "raw_image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1186566331986882640/sdf23fssss_monster_3D_icon_on_a_white_background_in_the_style_o_a4d390f2-afcb-4644-a52c-b30723309f92.png?ex=6593b702&is=65814202&hm=d00e911eca404028cbe24b735bd6ad39bf91446675a353cf0038cb7d8b8832ea&", "raw_image_width": 1024, "raw_image_height": 1024, "progress": 100, "actions": ["high_variation", "low_variation", "upsample_2x", "upsample_4x", "zoom_out_2x", "zoom_out_1_5x", "pan_left", "pan_right", "pan_up", "pan_down"] }
-
任务 成功-variation
{ "success": true, "task_id": "e7c9cf68-1ece-409c-89b7-56d78c017f72", "image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1182744827188760596/vsdvsdbsdg_monster_3D_icon_on_a_white_background_in_the_style_o_53ecfd3d-ac00-4aca-86d2-9ca23e729cbc.png?ex=6585cff5&is=65735af5&hm=1e577acab46238fab4116a14867f9b5fb459ba14eee05eda963da6134c6f53ed&?width=1024&height=1024", "image_width": 1024, "image_height": 1024, "image_id": "1182744827188760596", "raw_image_url": "https://midjourney.cdn.ai-gs.cn/attachments/1124768570157564029/1182744827188760596/vsdvsdbsdg_monster_3D_icon_on_a_white_background_in_the_style_o_53ecfd3d-ac00-4aca-86d2-9ca23e729cbc.png?ex=6585cff5&is=65735af5&hm=1e577acab46238fab4116a14867f9b5fb459ba14eee05eda963da6134c6f53ed&", "raw_image_width": 2048, "raw_image_height": 2048, "progress": 100, "actions": ["upsample1", "upsample2", "upsample3", "upsample4", "reroll", "variation1", "variation2", "variation3", "variation4"] }
-
任务 成功-其它action
high_variation,low_variation,zoom_out_2x,zoom_out_1_5x,pan_left,pan_right,pan_up,pan_down 参考variation回调返回的内容
upsample_2x,upsample_4x 参考upsample回调返回的内容,同时建议使用我们的图片处理->无损放大代替MJ的放大功能,更实惠
-
任务 失败
{ "success": false, "task_id": "0ad6b31c-0a1f-4a17-acea-922bde5fab1a", "code": "forbidden", "detail": "There is already an task processing this image, please try again later.", "trace_id": "d3e685e9-357d-4565-9bbb-6bb9c5ff5734" }
五.流程图理解
第一张图过程:
第一步
创建任务
imageine生图
第二步
获取到task_id
保存好task_id
第三步
等待出图通知
出图会自动通知到callback_url
第四步
通知到用户
根据task_id识别并推送给用户
V图U图等过程:
第一步
通过image_id创建任务
根据第一次张出图获得的image_id
第二步
获取到新task_id
保存好task_id
第三步
等待出图通知
出图会自动通知到callback_url
第四步
通知到用户
根据task_id识别并推送给用户
简单说:先得imageine生图获取到image_id,才能进行后面V图U图等action