/Midjourney-node-api

Midjourney-api,nodejs,非官方api,Midjourney绘画,Node.js client for the unofficial MidJourney API.

Primary LanguageJavaScript

Midjourney-node-api

代理 MidJourney 的discord频道,实现api形式调用AI绘图

前端大佬感兴趣的快速提pr, 本人不是专业后端,代码不保证无bug

现有功能

  • 支持 Imagine、U、V 指令,绘图完成后回调
  • 支持队列执行
  • 支持中文 prompt 翻译,需配置百度翻译
  • 队列任务存储在本地小型数据库
  • docker&docker-compose安装

后续计划

  • 定时清空所有任务
  • 账号池子(暂定)
  • 看情况优化
  • 对接阿里OSS

使用前提

  1. 科学上网
  2. node环境 node 18版本以上
  3. 注册 MidJourney,创建自己的频道,参考 https://docs.midjourney.com/docs/quick-start

docker部署:

1.运行docker容器

  • Docker一键命令:
docker run -dit \
  -v $PWD/Midjourney/basedata:/Midjourney/basedata \
  -p 5400:3000 \
  --restart=always \
  --name midjourney \
grbhq/midjourney:latest
  • docker-compose一键部署[需安装docker-compose工具]:
wget -O docker-compose.yaml https://raw.githubusercontent.com/souying/Midjourney-node-api/main/docker-compose.yaml && docker-compose up -d

2.进入当前Midjourney/basedata目录下修改.env文件 参考.env.example

3.重启docker容器(生效.env变量)
docker restart midjourney

4.启动后访问服务器ip:5400

快速启动

1.确保服务器已经有node环境18以上
2.拉取代码

git clone https://github.com/souying/Midjourney-node-api.git
cd Midjourney-node-api

3.下载依赖

yarn
# or npm
npm install

4.项目跟目录下新建 .env 文件 参考.env.example

5.启动项目 启动后访问127.0.0.1:3000

npm start   

6.在线接口文档 https://docs.apipost.cn/preview/c1f3039454fb9e67/02235e4d4590d910?target_id=78d9eb39-d6f9-4ee5-b2fa-82ff6b15678e

7.端口修改/bin/www 3000改成其他

API接口说明

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1/trigger/submit?action=IMAGINE&prompt=一只狗&taskId=123456789&index=1&state=main&notifyHook=http://www.baidu.com

请求方式

GET

Content-Type

urlencoded

请求Query参数

参数名 示例值 参数类型 是否必填 参数描述
action IMAGINE String 动作: 必传,IMAGINE(绘图)、UPSCALE(选中放大)、VARIATION(选中变换)
prompt 一只狗 String 绘图参数: IMAGINE时必传
taskId 123456789 String 任务ID: UPSCALE、VARIATION时必传
index 1 String 图序号: 1~4,UPSCALE、VARIATION时必传,表示第几张图
state main String 自定义字符串: 非必传,供回调到业务系统里使用
notifyHook http://www.baidu.com String 支持每个任务配置不同回调地址,非必传

请求Body参数

参数名 示例值 参数类型 是否必填 参数描述
action IMAGINE - 动作: 必传,IMAGINE(绘图)、UPSCALE(选中放大)、VARIATION(选中变换)
prompt 一只狗 - 绘图参数: IMAGINE时必传
taskId 123456789 - 任务ID: UPSCALE、VARIATION时必传
index 1 - 图序号: 1~4,UPSCALE、VARIATION时必传,表示第几张图
state main - 自定义字符串: 非必传,供回调到业务系统里使用
notifyHook http://www.baidu.com - 支持每个任务配置不同回调地址,非必传

成功响应示例

{
	"code": 1,
	"description": "成功",
	"result": "1234679"
}

错误响应示例

{
	"code": 0,
	"description": "失败"
}

/mj绘图相关api/提交绘画任务post

提交任务,后台持续执行任务,成功或者失败后更改任务状态

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1/trigger/submit

请求方式

POST

Content-Type

urlencoded

请求Query参数

参数名 示例值 参数类型 是否必填 参数描述
action IMAGINE String 动作: 必传,IMAGINE(绘图)、UPSCALE(选中放大)、VARIATION(选中变换)
prompt 一只狗 String 绘图参数: IMAGINE时必传
taskId 123456789 String 任务ID: UPSCALE、VARIATION时必传
index 1 String 图序号: 1~4,UPSCALE、VARIATION时必传,表示第几张图
state main String 自定义字符串: 非必传,供回调到业务系统里使用
notifyHook http://www.baidu.com String 支持每个任务配置不同回调地址,非必传

请求Body参数

参数名 示例值 参数类型 是否必填 参数描述
action IMAGINE - 动作: 必传,IMAGINE(绘图)、UPSCALE(选中放大)、VARIATION(选中变换)
prompt 一只狗 - 绘图参数: IMAGINE时必传
taskId 123456789 - 任务ID: UPSCALE、VARIATION时必传
index 1 - 图序号: 1~4,UPSCALE、VARIATION时必传,表示第几张图
state main - 自定义字符串: 非必传,供回调到业务系统里使用
notifyHook http://www.baidu.com - 支持每个任务配置不同回调地址,非必传

成功响应示例

{
	"code": 1,
	"description": "成功",
	"result": "1234679"
}

错误响应示例

{
	"code": 0,
	"description": "失败"
}

/mj绘图相关api/查询单个任务get

查询任务完成情况

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1//task/fetch?_id=8a2c5959-143b-46c5-adb6-242652ac8141

请求方式

GET

Content-Type

form-data

请求Query参数

参数名 示例值 参数类型 是否必填 参数描述
_id 8a2c5959-143b-46c5-adb6-242652ac8141 String 任务id

请求Body参数

参数名 示例值 参数类型 是否必填 参数描述
_id 8a2c5959-143b-46c5-adb6-242652ac8141 - 任务id

成功响应示例

{
	"_id": "8a2c5959-143b-46c5-adb6-242652ac8141",
	"index": "1",
	"action": "VARIATION",
	"prompt": "一只狗",
	"promptEn": "A dog",
	"taskId": "1108302168013938689",
	"uri": "f61e-4eac-9991-475799668483.png",
	"hash": "adbd1ba4-f61e-4eac-9991-475799668483",
	"content": "A dog--niji --seed 5587",
	"progress": "done",
	"description": "/imagine A dog",
	"submitTime": 1684310738264,
	"finishTime": 1684310741027,
	"state": "main",
	"notifyHook": "http://www.baidu.com",
	"imageUrl": "adbd1ba4-f61e-4eac-9991-475799668483.png",
	"status": "SUCCESS"
}

错误响应示例

{
    code:0
}

/mj绘图相关api/查询单个任务post

查询全部任务

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1//task/fetch?_id=8a2c5959-143b-46c5-adb6-242652ac8141

请求方式

POST

Content-Type

form-data

请求Query参数

参数名 示例值 参数类型 是否必填 参数描述
_id 8a2c5959-143b-46c5-adb6-242652ac8141 String 任务id

请求Body参数

参数名 示例值 参数类型 是否必填 参数描述
_id 8a2c5959-143b-46c5-adb6-242652ac8141 - 任务id

成功响应示例

{
	"_id": "8a2c5959-143b-46c5-adb6-242652ac8141",
	"index": "1",
	"action": "VARIATION",
	"prompt": "一只狗",
	"promptEn": "A dog",
	"taskId": "1108302168013938689",
	"uri": "f61e-4eac-9991-475799668483.png",
	"hash": "adbd1ba4-f61e-4eac-9991-475799668483",
	"content": "A dog--niji --seed 5587",
	"progress": "done",
	"description": "/imagine A dog",
	"submitTime": 1684310738264,
	"finishTime": 1684310741027,
	"state": "main",
	"notifyHook": "http://www.baidu.com",
	"imageUrl": "adbd1ba4-f61e-4eac-9991-475799668483.png",
	"status": "SUCCESS"
}

错误响应示例

{
    code:0
}

/mj绘图相关api/查询任务列表post

暂无描述

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1//task/list

请求方式

POST

Content-Type

form-data

成功响应示例

[
	{
		"_id": "8a2c5959-143b-46c5-adb6-242652ac8141",
		"index": "1",
		"action": "VARIATION",
		"prompt": "一只狗",
		"promptEn": "A dog",
		"taskId": "1108302168013938689",
		"uri": "f61e-4eac-9991-475799668483.png",
		"hash": "adbd1ba4-f61e-4eac-9991-475799668483",
		"content": "A dog--niji --seed 5587",
		"progress": "done",
		"description": "/imagine A dog",
		"submitTime": 1684310738264,
		"finishTime": 1684310741027,
		"state": "main",
		"notifyHook": "http://www.baidu.com",
		"imageUrl": "adbd1ba4-f61e-4eac-9991-475799668483.png",
		"status": "SUCCESS"
	}
]

错误响应示例

{
    code:0
}

/mj绘图相关api/查询任务列表get

暂无描述

接口状态

已完成

接口URL

http://127.0.0.1:3000/api/v1//task/list

成功响应示例

[{
	"_id": "8a2c5959-143b-46c5-adb6-242652ac8141",
	"index": "1",
	"action": "VARIATION",
	"prompt": "一只狗",
	"promptEn": "A dog",
	"taskId": "1108302168013938689",
	"uri": "f61e-4eac-9991-475799668483.png",
	"hash": "adbd1ba4-f61e-4eac-9991-475799668483",
	"content": "A dog--niji --seed 5587",
	"progress": "done",
	"description": "/imagine A dog",
	"submitTime": 1684310738264,
	"finishTime": 1684310741027,
	"state": "main",
	"notifyHook": "http://www.baidu.com",
	"imageUrl": "adbd1ba4-f61e-4eac-9991-475799668483.png",
	"status": "SUCCESS"
}]

错误响应示例

{
    code:0
}