Midjourney Imagine绘图

注意:本 API 属于生成式人工智能 API,出于安全考虑,请务必在使用时不要输入带有国家和企业机密的相关信息,同时本 API 也会严格遵循中华人民共和国《生成式人工智能服务管理办法》严格把控和过滤相关敏感、不道德、侵权等信息。

Midjourney 是一个强大的图像生成服务,可以通过自然语言描述生成对应的精美图像。本 API 对接了 Midjourney 官方,提供了 Midjourney 的调用能力,并支持图像的预览生成和连续修改操作。
支持中文,imagine,U图,V图,图生图,图生文,Seed种子,人脸融合等。
原版 中文

一.您的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