Midjourney 风格接口
CoreRouter 提供一组 Midjourney 风格的异步任务接口。提交任务后通常先返回任务 ID,再通过查询接口获取进度、图片地址和按钮操作。
这些接口不是 OpenAI Chat Completions 接口,不能使用 messages、input 或普通聊天模型的请求格式。
接口信息
| 配置项 | 填写内容 |
|---|---|
| Base URL | https://api.corerouter.tech |
| API Key | 使用 Authorization: Bearer sk-... |
| 提交路径 | /mj/submit/... |
| 查询路径 | /mj/task/{id}/fetch |
| 模型选择 | 由操作类型映射到对应的 Midjourney 模型和渠道 |
部分部署会额外提供 /{mode}/mj/... 形式的路径。只有服务明确提供该前缀时才使用它,不要自行添加或删除前缀。
生成图片
/mj/submit/imagine 会自动按 Imagine 操作处理,prompt 必填:
export COREROUTER_API_KEY="sk-xxxxxxxxxxxxxxxx"
curl https://api.corerouter.tech/mj/submit/imagine \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
-d '{
"prompt": "一座漂浮在云海上的未来城市,电影感,细节丰富"
}'
成功响应通常类似:
{
"code": 1,
"description": "提交成功",
"result": "task-id-from-upstream"
}
result 是后续查询任务时使用的任务 ID。不同渠道的 code、description 和 properties 可能不同,客户端不要只依赖固定中文描述判断成功。
查询任务
curl https://api.corerouter.tech/mj/task/task-id-from-upstream/fetch \
-H "Authorization: Bearer $COREROUTER_API_KEY"
查询结果通常包含:
| 字段 | 说明 |
|---|---|
id | 任务 ID |
status | 任务状态,例如 SUCCESS |
progress | 进度,例如 50% |
imageUrl | 图片地址;是否改写为网关代理地址取决于服务配置 |
buttons | 可继续执行放大、变体等操作的按钮 |
failReason | 失败原因 |
建议每隔几秒轮询一次,不要在任务尚未完成时高频请求。
基于按钮执行操作
使用 customId
如果查询结果里的 buttons 包含 customId,可以直接提交到 /mj/submit/action:
curl https://api.corerouter.tech/mj/submit/action \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
-d '{
"customId": "MJ::JOB::upsample::2::task-id-from-upstream"
}'
按钮的 customId 必须使用查询结果中实际返回的值,不要手动猜测任务 ID 的组合格式。
使用普通变换参数
/mj/submit/change 需要任务 ID、操作和索引:
curl https://api.corerouter.tech/mj/submit/change \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
-d '{
"taskId": "task-id-from-upstream",
"action": "UPSCALE",
"index": 2
}'
index 通常为 1 到 4,具体可用操作由渠道返回的按钮决定。
如果客户端使用简化格式,也可以调用 /mj/submit/simple-change:
curl https://api.corerouter.tech/mj/submit/simple-change \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
-d '{
"content": "task-id-from-upstream u2"
}'
简化格式支持 u1 到 u4、v1 到 v4,以及 r 重新生成。
其他操作
| Endpoint | 主要用途 | 常见字段 |
|---|---|---|
/mj/submit/describe | 图片反推提示词 | base64Array |
/mj/submit/blend | 多图混合 | base64Array |
/mj/submit/edits | 图片编辑 | base64Array、maskBase64、prompt |
/mj/submit/shorten | 缩短提示词 | prompt |
/mj/submit/modal | 模态编辑或扩展操作 | taskId、maskBase64 等,取决于渠道 |
/mj/submit/video | 图片任务转视频或视频操作 | taskId、action |
/mj/submit/upload-discord-images | 上传图片到上游 | base64Array |
/mj/insight-face/swap | 人脸替换 | sourceBase64、targetBase64 |
这些操作的图片编码、数量、提示词参数和可用动作由上游渠道决定。文档中的字段只是网关能识别的常见字段,不能替代具体渠道的参数说明。
批量查询和图片代理
批量查询:
curl https://api.corerouter.tech/mj/task/list-by-condition \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
-d '{
"ids": ["task-id-1", "task-id-2"]
}'
如果服务配置启用了图片代理,可以使用:
curl -L https://api.corerouter.tech/mj/image/task-id-from-upstream \
-H "Authorization: Bearer $COREROUTER_API_KEY" \
--output result.jpg
如果图片代理不可用,请使用任务查询结果里的 imageUrl。图片地址可能受上游有效期、域名访问和服务端 SSRF 防护策略影响。
兼容边界和计费
- 只有配置了对应 Midjourney 渠道、操作和模型价格的服务实例才能使用这些接口。
- Midjourney 操作通常按次计费;提交失败、余额不足或渠道不可用时不应把响应当成成功任务。
notifyHook是否生效取决于服务端通知配置,不能把它当成一定会回调的能力。- 某些服务配置会删除
accountFilter或notifyHook,客户端应以最终任务状态为准。 - 任务 ID、按钮
customId和imageUrl都应使用接口真实返回值,不要自行拼接。
常见问题
返回 prompt_is_required
/mj/submit/imagine 缺少非空 prompt。请确认发送的是 JSON,并且字段名不是 message 或 input。
返回 task_not_found
确认任务 ID 来自提交响应的 result 或查询结果,并且使用的是同一个 API Key 和账户。
返回 quota_not_enough
账户额度不足,或该操作的固定价格未配置。请查看控制台余额和操作对应的模型配置。
一直没有图片
Midjourney 是异步任务。先轮询 /mj/task/{id}/fetch,确认 status 是否为 SUCCESS,再使用 imageUrl 或图片代理地址。
CoreRouter API 文档