|
| 1 | +# API接口说明 |
| 2 | + |
| 3 | +`http://ip:port/mj` 已有api文档,此处仅作补充 |
| 4 | + |
| 5 | +## 1. 数据结构 |
| 6 | + |
| 7 | +### 任务 |
| 8 | +| 字段 | 类型 | 示例 | 描述 | |
| 9 | +|:-----:|:----:|:----|:----| |
| 10 | +| id | string | 1689231405853400 | 任务ID | |
| 11 | +| action | string | IMAGINE | 任务类型: IMAGINE(绘图)、UPSCALE(选中放大)、VARIATION(选中变换)、REROLL(重新生成)、ZOOM(图片变焦)、PAN(焦点移动)、DESCRIBE(图生文)、BLEAND(图片混合)、SHORTEN(prompt分析) | |
| 12 | +| status | string | SUCCESS | 任务状态: NOT_START(未启动)、SUBMITTED(已提交处理)、MODAL(窗口等待)、IN_PROGRESS(执行中)、FAILURE(失败)、SUCCESS(成功) | |
| 13 | +| prompt | string | 猫猫 | 提示词 | |
| 14 | +| promptEn | string | Cat | 英文提示词 | |
| 15 | +| description | string | /imagine 猫猫 | 任务描述 | |
| 16 | +| submitTime | number | 1689231405854 | 提交时间 | |
| 17 | +| startTime | number | 1689231442755 | 开始执行时间 | |
| 18 | +| finishTime | number | 1689231544312 | 结束时间 | |
| 19 | +| progress | string | 100% | 任务进度 | |
| 20 | +| imageUrl | string | https://cdn.discordapp.com/attachments/xxx/xxx/xxxx.png | 生成图片的url, 成功或执行中时有值,可能为png或webp | |
| 21 | +| failReason | string | [Invalid parameter] Invalid value | 失败原因, 失败时有值 | |
| 22 | +| properties | object | {"finalPrompt": "Cat"} | 任务的扩展属性,系统内部使用 | |
| 23 | +| buttons | Button[] | [] | 任务完成后的可执行按钮 | |
| 24 | + |
| 25 | +### Button |
| 26 | +| 字段 | 类型 | 示例 | 描述 | |
| 27 | +|:-----:|:----:|:----|:----| |
| 28 | +| customId | string | MJ::JOB::upsample::1::85a4b4c1-8835-46c5-a15c-aea34fad1862 | 动作标识 | |
| 29 | +| emoji | string | 🪄 | 图标 | |
| 30 | +| label | string | Make Variations | 文本 | |
| 31 | +| type | number | 2 | 类型,系统内部使用 | |
| 32 | +| style | number | 2 | 样式: 2(Primary)、3(Green) | |
| 33 | + |
| 34 | +## 2. 任务提交返回 |
| 35 | +- code=1: 提交成功,result为任务ID |
| 36 | + ```json |
| 37 | + { |
| 38 | + "code": 1, |
| 39 | + "description": "提交成功", |
| 40 | + "result": "14001929738841620" |
| 41 | + } |
| 42 | + ``` |
| 43 | +- code=22: 提交成功,进入队列等待 |
| 44 | + ```json |
| 45 | + { |
| 46 | + "code": 22, |
| 47 | + "description": "排队中,前面还有1个任务", |
| 48 | + "result": "14001929738841620", |
| 49 | + "properties": { |
| 50 | + "numberOfQueues": 1 |
| 51 | + } |
| 52 | + } |
| 53 | + ``` |
| 54 | +- other: 提交错误,description为错误描述 |
| 55 | + |
| 56 | +## 3. 执行任务的关联动作 |
| 57 | +调用 `/mj/submit/action`,几乎所有的button都做了支持,除了以下情况: |
| 58 | +- 图生文结果的 `🎉Imagine all` |
| 59 | +- 图片放大后的 `❤️` |
| 60 | + |
| 61 | +```json |
| 62 | +{ |
| 63 | + // 关联任务的ID |
| 64 | + "taskId": "1689216801333574", |
| 65 | + // 动作标识 |
| 66 | + "customId": "MJ::JOB::reroll::0::1c6dff5e-5632-40c6-9d4c-afb261705313::SOLO" |
| 67 | +} |
| 68 | +``` |
| 69 | +⚠️ 注意: 某些场景需要modal确认,提交后任务状态会变为MODAL,需调用`/mj/submit/modal`进行二次提交 |
| 70 | +- 账号开启了Remix & 配置remix为true & 执行Reroll、Variation |
| 71 | +- 执行CustomZoom(自定义变焦)或PicReader(Describe后选择生图) |
| 72 | + |
| 73 | +调用 `/mj/submit/modal` |
| 74 | +```json |
| 75 | +{ |
| 76 | + // 需确认的任务ID |
| 77 | + "taskId": "1689228047868174", |
| 78 | + // prompt: 为空时使用原任务的prompt |
| 79 | + "prompt": "Cat" |
| 80 | +} |
| 81 | +``` |
| 82 | +CustomZoom的prompt需要设置--ar 和 --zoom(1到2之间),例如: `Cat --ar 1:1 --zoom 1.5` |
| 83 | + |
| 84 | +## 4. `/mj/submit/describe` 图生文 |
| 85 | +```json |
| 86 | +{ |
| 87 | + // 图片的base64字符串 |
| 88 | + "base64": "data:image/png;base64,xxx" |
| 89 | +} |
| 90 | +``` |
| 91 | + |
| 92 | +后续任务完成后,properties中finalPrompt即为图片生成的prompt,finalZhPrompt为翻译的中文 |
| 93 | +```json |
| 94 | +{ |
| 95 | + "id":"14001929738841620", |
| 96 | + "action":"DESCRIBE", |
| 97 | + "status": "SUCCESS", |
| 98 | + "description":"/describe 14001929738841620.png", |
| 99 | + "imageUrl":"https://cdn.discordapp.com/attachments/xxx/xxx/14001929738841620.png", |
| 100 | + "properties": { |
| 101 | + "finalPrompt": "1️⃣ Cat --ar 5:4\n\n2️⃣ Cat2 --ar 5:4\n\n3️⃣ Cat3 --ar 5:4\n\n4️⃣ Cat4 --ar 5:4", |
| 102 | + "finalZhPrompt": "1️⃣ 猫 --ar 5:4\n\n2️⃣ 猫2 --ar 5:4\n\n3️⃣ 猫3 --ar 5:4\n\n4️⃣ 猫4 --ar 5:4" |
| 103 | + } |
| 104 | + // ... |
| 105 | +} |
| 106 | +``` |
| 107 | + |
| 108 | +## 5. `/mj/submit/shorten` prompt分析 |
| 109 | +```json |
| 110 | +{ |
| 111 | + "prompt": "️appdash appdash, in the style of expert draftsmanship, commission for, ethereal, dreamlike quality, dadaistic, toonami" |
| 112 | +} |
| 113 | +``` |
| 114 | + |
| 115 | +后续任务完成后,properties中finalPrompt即为分析结果,finalZhPrompt为翻译的中文 |
| 116 | +```json |
| 117 | +{ |
| 118 | + "id":"1689252749098647", |
| 119 | + "action":"SHORTEN", |
| 120 | + "status": "SUCCESS", |
| 121 | + "description":"/shorten appdash appdash, in the style of expert draftsmanship, commission for, ethereal, dreamlike quality, dadaistic, toonami", |
| 122 | + "properties": { |
| 123 | + "finalPrompt": "## Important tokens\n**appdash** **appdash**, in the ~~style~~ of ~~expert~~ **draftsmanship**, commission for, ethereal, dreamlike quality, ~~dadaistic~~, **toonami**\n## Shortened prompts\n1️⃣ appdash appdash, draftsmanship, commission for, ethereal, toonami\n\n2️⃣ appdash appdash, draftsmanship, commission, toonami\n\n3️⃣ appdash appdash, draftsmanship, toonami\n\n4️⃣ appdash appdash, toonami\n\n5️⃣ appdash appdash", |
| 124 | + "finalZhPrompt": "## 重要词汇\n**appdash** **appdash**,以专家的绘画风格,委托制作,飘渺的,梦幻般的质感,达达主义的,**toonami**\n## 简化提示\n1️⃣ appdash appdash,绘画风格,委托制作,飘渺的,toonami\n\n2️⃣ appdash appdash,绘画风格,委托制作,toonami\n\n3️⃣ appdash appdash,绘画风格,toonami\n\n4️⃣ appdash appdash,toonami\n\n5️⃣ appdash appdash" |
| 125 | + } |
| 126 | + // ... |
| 127 | +} |
| 128 | +``` |
| 129 | +对该任务执行 `Show Details` 动作,能获得进一步的分析结果 |
| 130 | +```json |
| 131 | +{ |
| 132 | + "id":"1689253263953453", |
| 133 | + "action":"SHORTEN", |
| 134 | + "status": "SUCCESS", |
| 135 | + "description":"/up 168925266642808397 Show Details", |
| 136 | + "properties": { |
| 137 | + "finalPrompt": "## Important tokens\n**appdash** (1.00) **appdash** (0.79), in the style (0.01) of expert (0.00) **draftsmanship** (0.09), commission (0.08) for, ethereal (0.05), dreamlike (0.02) quality (0.01), dadaistic (0.01), **toonami** (0.19)\n\n██████████ appdash\n████████░░ appdash\n██░░░░░░░░ toonami\n█░░░░░░░░░ draftsmanship\n█░░░░░░░░░ commission\n█░░░░░░░░░ ethereal\n## Shortened prompts\n1️⃣ appdash appdash, draftsmanship, commission for, ethereal, toonami\n\n2️⃣ appdash appdash, draftsmanship, commission, toonami\n\n3️⃣ appdash appdash, draftsmanship, toonami\n\n4️⃣ appdash appdash, toonami\n\n5️⃣ appdash app", |
| 138 | + "finalZhPrompt": "## 重要的词语\n**appdash** (1.00) **appdash** (0.79),以专家级(0.01) **绘画技巧** (0.09) 的风格,委托(0.08) 制作,飘渺的(0.05),梦幻般的(0.02) 质感(0.01),达达主义的(0.01),**toonami** (0.19)\n\n██████████ appdash\n████████░░ appdash\n██░░░░░░░░ toonami\n█░░░░░░░░░ draftsmanship\n█░░░░░░░░░ commission\n█░░░░░░░░░ ethereal\n## 简化的提示\n1️⃣ appdash appdash,绘画技巧,委托制作,飘渺,toonami\n\n2️⃣ appdash appdash,绘画技巧,委托制作,toonami\n\n3️⃣ appdash appdash,绘画技巧,toonami\n\n4️⃣ appdash appdash,toonami\n\n5️⃣ appdash appdash" |
| 139 | + } |
| 140 | + // ... |
| 141 | +} |
| 142 | +``` |
| 143 | + |
| 144 | +## 6. 任务变更回调 |
| 145 | +任务状态变化或进度改变时,会调用业务系统的接口 |
| 146 | +- 接口地址为配置的 mj.notify-hook,任务提交时支持传`notifyHook`以改变此任务的回调地址 |
| 147 | +- 两者都为空时,不触发回调 |
| 148 | + |
| 149 | +POST application/json |
| 150 | +```json |
| 151 | +{ |
| 152 | + "id": "14001929738841620", |
| 153 | + "action": "IMAGINE", |
| 154 | + "status": "SUCCESS", |
| 155 | + "prompt": "猫猫", |
| 156 | + "promptEn": "Cat", |
| 157 | + "description": "/imagine 猫猫", |
| 158 | + "submitTime": 1689231405854, |
| 159 | + "startTime": 1689231442755, |
| 160 | + "finishTime": 1689231544312, |
| 161 | + "progress": "100%", |
| 162 | + "imageUrl": "https://cdn.discordapp.com/attachments/xxx/xxx/xxxx.png", |
| 163 | + "failReason": null, |
| 164 | + "properties": { |
| 165 | + "finalPrompt": "Cat" |
| 166 | + }, |
| 167 | + "buttons": [] |
| 168 | +} |
| 169 | +``` |
0 commit comments