LogoAICore Docs

Midjourney接口

AI 绘图服务接口

📝 简介

Midjourney API代理服务提供了一套完整的接口,用于生成和管理AI绘图任务。本文档详细介绍了如何使用这些API接口与Midjourney服务进行交互。

想要指定Relax/Fast/Turbo模式只有两种方案:

  1. 令牌里指定(优先级最高)
  2. 路径里指定,例如:https://api.xty.app/mj-relax

🚀 快速教学-完整流程一遍过

使用Midjourney API的基本流程如下:

提交任务

通过POST请求提交一个Imagine任务,获取任务ID

curl -X POST "https://api.xty.app/mj/submit/imagine" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "prompt": "一只可爱的猫咪,卡通风格,明亮的背景"
  }'
查询任务状态

使用任务ID定期查询任务状态

curl -X GET "https://api.xty.app/mj/task/{id}/fetch" \
  -H "Authorization: Bearer YOUR_API_KEY"
执行后续操作

对生成的图片执行操作(如放大、变体等)

curl -X POST "https://api.xty.app/mj/submit/action" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "taskId": "task_123456",
    "customId": "MJ::JOB::upsample::1::xxx"
  }'

🔄 怎么切换不同的速度

Midjourney提供了三种不同的速度模式:Relax(放松模式)、Fast(快速模式)和Turbo(极速模式)。 你可以通过以下两种方式指定使用哪种速度模式:

速度模式比较

模式速度价格适用场景
Relax非紧急任务,预算有限
Fast常规使用,平衡速度和成本
Turbo需要快速结果的场景

🔄 流程示意图

graph TD
    A[提交任务] --> B[任务排队]
    B --> C[任务执行]
    C --> D{是否成功?}
    D -->|是| E[返回结果]
    D -->|否| F[返回错误]
    E --> G[可执行后续操作]
    G --> H[放大/变体/缩放等]

流程说明

  1. 客户端提交任务(Imagine/Blend/Describe等)
  2. 服务器接收并排队处理任务
  3. 任务执行过程中可查询进度
  4. 任务完成后返回结果
  5. 可对结果执行后续操作(放大、变体、缩放等)

📝 任务提交

提交Imagine任务

使用文本提示词生成图像。

URL
https://api.xty.app/mj/submit/imagine
方法
POST
  • 请求参数:
参数名类型必需描述
promptstring图像生成的文本提示词
botTypestring选择使用的bot类型,可选值:MID_JOURNEY、NIJI_JOURNEY,默认MID_JOURNEY
base64Arrayarray垫图的base64编码数组
accountFilterobject账号筛选条件
notifyHookstring任务完成回调地址
statestring自定义状态参数
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/imagine" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "prompt": "一只可爱的猫咪,卡通风格,明亮的背景",
    "botType": "MID_JOURNEY"
  }'

提交Action任务

对已生成图片执行后续操作,如放大、变体、缩放等。

  • URL: https://api.xty.app/mj/submit/action
  • 方法: POST
  • 请求参数:
参数名类型必需描述
taskIdstring要执行动作的任务ID
customIdstring动作标识符,如"MJ::JOB::upsample::1::xxx"
chooseSameChannelboolean是否选择同一频道下的账号,默认false
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/action" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "taskId": "任务ID",
    "customId": "MJ::JOB::upsample::1::xxx",
    "chooseSameChannel": false
  }'

提交Blend任务

混合多张图片生成新图像。

  • URL: /mj/submit/blend
  • 方法: POST
  • 请求参数:
参数名类型必需描述
base64Arrayarray要混合的图片base64编码数组,需包含2-5张图片
dimensionsstring输出图片的宽高比,可选值:PORTRAIT(2:3)、SQUARE(1:1)、LANDSCAPE(3:2)
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/blend" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "base64Array": ["图片1的base64编码", "图片2的base64编码"],
    "dimensions": "SQUARE"
  }'

提交Modal

对图片进行局部重绘。

  • URL: /mj/submit/modal
  • 方法: POST
  • 请求参数:
参数名类型必需描述
taskIdstring原始任务的ID
promptstring重绘区域的文本提示词
maskBase64string局部重绘的蒙版图片base64编码
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/modal" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "taskId": "任务ID",
    "prompt": "局部重绘的提示词",
    "maskBase64": "蒙版图片的base64编码"
  }'

提交Describe任务

分析图片并生成描述文本。

  • URL: /mj/submit/describe
  • 方法: POST
  • 请求参数:
参数名类型必需描述
base64string需要描述的图片的base64编码
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/describe" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "base64": "图片的base64编码"
  }'

上传文件到discord

上传图片到Discord服务器,可用作图片垫图。

  • URL: /mj/submit/upload
  • 方法: POST
  • 请求参数:
参数名类型必需描述
base64Arrayarray要上传的图片base64编码数组
filterobject筛选条件
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/upload" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "base64Array": ["图片1的base64编码", "图片2的base64编码"],
    "filter": {
      "channelId": "频道ID",
      "instanceId": "实例ID"
    }
  }'

提交Shorten任务

缩短提示词。

  • URL: /mj/submit/shorten
  • 方法: POST
  • 请求参数:
参数名类型必需描述
promptstring需要缩短的提示词
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/shorten" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "prompt": "一个非常长的提示词描述..."
  }'

提交swap_face任务

替换图片中的人脸。

  • URL: /mj/submit/swap-face
  • 方法: POST
  • 请求参数:
参数名类型必需描述
sourceBase64string人脸源图片的base64编码,必须包含清晰的人脸
targetBase64string目标图片的base64编码,必须包含要替换的人脸
  • 请求示例:
curl -X POST "https://api.xty.app/mj/submit/swap-face" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "sourceBase64": "人脸源图片的base64编码",
    "targetBase64": "目标图片的base64编码"
  }'

📋 任务查询

指定ID获取任务

获取单个任务的详细信息。

  • URL: mj/task/{id}/fetch
  • 方法: GET
  • 请求参数:
参数名类型必需描述
idstring要查询的任务ID
  • 请求示例:
curl -X GET "https://api.xty.app/mj/task/{id}/fetch" \
  -H "Authorization: Bearer YOUR_API_KEY"

根据ID列表查询任务

批量查询多个任务的状态和结果。

  • URL: /mj/task/list-by-condition
  • 方法: POST
  • 请求参数:
参数名类型必需描述
idsarray要查询的任务ID列表
  • 请求示例:
curl -X POST "https://api.xty.app/mj/task/list-by-condition" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "ids": ["任务ID1", "任务ID2"]
  }'

获取任务图片的seed

获取图片生成使用的随机种子值。

  • URL: /mj/task/fetch-seed
  • 方法: GET
  • 请求参数:
参数名类型必需描述
idstring要查询的任务ID
  • 请求示例:
curl -X GET "https://api.xty.app/mj/task/{id}/image-seed" \
  -H "Authorization: Bearer YOUR_API_KEY"

💡 最佳实践

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 接收任务完成通知
    • 合理设置重试策略
    • 建议使用异步处理方式