Skip to content
On this page

Midjourney 风格接口

CoreRouter 提供一组 Midjourney 风格的异步任务接口。提交任务后通常先返回任务 ID,再通过查询接口获取进度、图片地址和按钮操作。

这些接口不是 OpenAI Chat Completions 接口,不能使用 messages、input 或普通聊天模型的请求格式。

接口信息

配置项填写内容
Base URLhttps://api.corerouter.tech
API Key使用 Authorization: Bearer sk-...
提交路径/mj/submit/...
查询路径/mj/task/{id}/fetch
模型选择由操作类型映射到对应的 Midjourney 模型和渠道

部分部署会额外提供 /{mode}/mj/... 形式的路径。只有服务明确提供该前缀时才使用它,不要自行添加或删除前缀。

生成图片

/mj/submit/imagine 会自动按 Imagine 操作处理,prompt 必填:

bash
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": "一座漂浮在云海上的未来城市,电影感,细节丰富"
  }'

成功响应通常类似:

json
{
  "code": 1,
  "description": "提交成功",
  "result": "task-id-from-upstream"
}

result 是后续查询任务时使用的任务 ID。不同渠道的 code、description 和 properties 可能不同,客户端不要只依赖固定中文描述判断成功。

查询任务

bash
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:

bash
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、操作和索引:

bash
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:

bash
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

这些操作的图片编码、数量、提示词参数和可用动作由上游渠道决定。文档中的字段只是网关能识别的常见字段,不能替代具体渠道的参数说明。

批量查询和图片代理

批量查询:

bash
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"]
  }'

如果服务配置启用了图片代理,可以使用:

bash
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 或图片代理地址。

Released under the MIT License.