MetaChat Knowledge Base
  • 概述
    • MetaChat 概述
  • 使用技巧
    • Midjourney使用小技巧
  • API
    • API概述
    • Midjourney API
    • Midjourney API 计费
  • 计费
    • 关于元点(MP)的消费
  • 推广返利
    • MetaChat 推广返利计划
    • 元金-MetaChat生态激励货币
Powered by GitBook
On this page
  • 概述
  • 接入鉴权
  • 异常处理
  • 访问限流
  • API 说明
  • Midjourney API
  1. API

Midjourney API

概述


MetaChat 面向合作伙伴提供开放平台 API,提供包括 Midjourney 等 AIGC 模型的基础能力和扩展特性,供合作伙伴集成和二次开发。本手册描述开放平台的接入方法、各类 API 的调用方法和注意事项,供合作伙伴的服务端开发人员参考。

接入鉴权


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"

异常处理


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
}

访问限流


为防止滥用和攻击,开放平台 API 对调用方的访问频次按照如下配额进行限流:

  • Midjourney API:50 RPM(每分钟 50 次)。

当超出配额后,开放平台将返回 HTTP status code 429,调用方可据此进行主动流控,稍后再试。

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)。

      • fast : 高速模式开关,boolean 类型,取值 true(高速模式 Fast Mode)、false(普通模式 Relax Mode),默认 true。高速模式出图速度更快、更稳定,消耗 API 元点略高。

    • 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)。

  • 请求参数示例

    • {
        "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_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",
          "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
        }
      }

PreviousAPI概述NextMidjourney API 计费

Last updated 3 months ago