Midjourney接口
AI 绘图服务接口
📝 简介
Midjourney API代理服务提供了一套完整的接口,用于生成和管理AI绘图任务。本文档详细介绍了如何使用这些API接口与Midjourney服务进行交互。
想要指定Relax/Fast/Turbo模式只有两种方案:
- 令牌里指定(优先级最高)
- 路径里指定,例如: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[放大/变体/缩放等]流程说明
- 客户端提交任务(Imagine/Blend/Describe等)
- 服务器接收并排队处理任务
- 任务执行过程中可查询进度
- 任务完成后返回结果
- 可对结果执行后续操作(放大、变体、缩放等)
📝 任务提交
提交Imagine任务
使用文本提示词生成图像。
URL
https://api.xty.app/mj/submit/imagine
方法
POST
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 图像生成的文本提示词 |
| botType | string | 否 | 选择使用的bot类型,可选值:MID_JOURNEY、NIJI_JOURNEY,默认MID_JOURNEY |
| base64Array | array | 否 | 垫图的base64编码数组 |
| accountFilter | object | 否 | 账号筛选条件 |
| notifyHook | string | 否 | 任务完成回调地址 |
| state | string | 否 | 自定义状态参数 |
- 请求示例:
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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| taskId | string | 是 | 要执行动作的任务ID |
| customId | string | 是 | 动作标识符,如"MJ::JOB::upsample::1::xxx" |
| chooseSameChannel | boolean | 否 | 是否选择同一频道下的账号,默认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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| base64Array | array | 是 | 要混合的图片base64编码数组,需包含2-5张图片 |
| dimensions | string | 否 | 输出图片的宽高比,可选值: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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| taskId | string | 是 | 原始任务的ID |
| prompt | string | 否 | 重绘区域的文本提示词 |
| maskBase64 | string | 否 | 局部重绘的蒙版图片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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| base64 | string | 是 | 需要描述的图片的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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| base64Array | array | 是 | 要上传的图片base64编码数组 |
| filter | object | 否 | 筛选条件 |
- 请求示例:
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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| prompt | string | 是 | 需要缩短的提示词 |
- 请求示例:
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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| sourceBase64 | string | 是 | 人脸源图片的base64编码,必须包含清晰的人脸 |
| targetBase64 | string | 是 | 目标图片的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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 要查询的任务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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| ids | array | 是 | 要查询的任务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
- 请求参数:
| 参数名 | 类型 | 必需 | 描述 |
|---|---|---|---|
| id | string | 是 | 要查询的任务ID |
- 请求示例:
curl -X GET "https://api.xty.app/mj/task/{id}/image-seed" \
-H "Authorization: Bearer YOUR_API_KEY"💡 最佳实践
Prompt 编写建议
- 使用清晰简洁的语言描述期望的图像内容
- 可以参考Midjourney支持的各种参数来控制图片风格
- 适当使用否定描述以排除不需要的元素
- 可以通过图片URL作为参考来指导生成
图片生成流程
- 提交Imagine任务,获得初步图片
- 必要时通过Blend、Modal等任务进一步优化
- 执行Action动作进行图片微调
- 将满意的结果图片上传保存
图片格式要求
- 支持的图片格式:
- JPEG/JPG
- PNG
- GIF (静态)
- WEBP
- 图片大小限制:
- 文件大小:最大 4MB
- 分辨率:建议 1024x1024 或更高
- 宽高比:支持 1:1、2:3、3:2
性能优化建议
- Base64 编码:
- 使用标准 Base64 编码格式
- 包含正确的 MIME 类型前缀
- 压缩图片以减少数据传输
- 任务处理:
- 使用 webhook 接收任务完成通知
- 合理设置重试策略
- 建议使用异步处理方式