接口文档
将接口地址发送给codex可以制作成skill使用
https://shengtu.ximuai.comGPT 图片模型提交
提交 gpt-image-2 生图任务。提交成功会立即扣除卡密余额。
/api/draw/completions只能传 gpt-image-2。
用户卡密,例如 XIMU-XXXXXX-XXXXXX-XXXXXX。
生图提示词。
默认 1024x1024。gpt-image-2 传像素尺寸。
参考图片数组,传图片 URL 或 data:image/png;base64 格式字符串;不传时使用空数组。
默认 async。可传 json、stream、async;async 返回任务 ID 后可调用结果查询接口轮询。
JS 请求示例
async function createGptImageTask() {
const response = await fetch('/api/draw/completions', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'gpt-image-2',
cardCode: 'XIMU-XXXXXX-XXXXXX-XXXXXX',
prompt: '生成一张现代中式庭院的高清图片,白天,自然光',
aspectRatio: '1672x941',
images: [],
replyType: 'async'
})
})
if (!response.ok) {
throw new Error(await response.text())
}
return await response.json()
}Nano Banana 模型提交
提交 nano-banana-2 或 nano-banana-pro 生图任务。提交成功会立即扣除卡密余额。
/api/draw/nano-banana只能传 nano-banana-2 或 nano-banana-pro。
用户卡密,例如 XIMU-XXXXXX-XXXXXX-XXXXXX。
生图提示词。
默认 auto。nano-banana-pro 可传 auto、1:1、16:9、9:16、4:3、3:4、3:2、2:3、5:4、4:5、21:9;nano-banana-2 额外支持 1:4、4:1、1:8、8:1。
默认 1K。可传 1K、2K、4K。
参考图片数组,传图片 URL 或 data:image/png;base64 格式字符串;不传时使用空数组。
默认 async。可传 json、stream、async;async 返回任务 ID 后可调用结果查询接口轮询。
JS 请求示例
async function createNanoBananaTask() {
const response = await fetch('/api/draw/nano-banana', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'nano-banana-pro',
cardCode: 'XIMU-XXXXXX-XXXXXX-XXXXXX',
prompt: '生成一张产品海报,极简风格,高级灰背景,突出主体质感',
aspectRatio: 'auto',
imageSize: '1K',
images: [],
replyType: 'async'
})
})
if (!response.ok) {
throw new Error(await response.text())
}
return await response.json()
}生图结果查询
根据提交接口返回的任务 ID 查询生图进度和结果。建议每 5 秒轮询一次。
/api/draw/result提交生图任务后返回的任务 ID,可从 response.data.id 或 response.id 读取。
JS 请求示例
async function pollDrawResult(taskId) {
const params = new URLSearchParams({ id: taskId })
const response = await fetch(`/api/draw/result?${params.toString()}`)
if (!response.ok) {
throw new Error(await response.text())
}
return await response.json()
}
const timer = setInterval(async () => {
const result = await pollDrawResult('任务ID')
const payload = result.data || result
if (payload.status === 'succeeded' || payload.status === 'failed' || payload.status === 'violation') {
clearInterval(timer)
}
}, 5000)卡密余额查询
根据卡密查询当前余额。
/api/credits/card用户卡密,例如 XIMU-XXXXXX-XXXXXX-XXXXXX。
JS 请求示例
async function getCardBalance() {
const response = await fetch('/api/credits/card', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
code: 'XIMU-XXXXXX-XXXXXX-XXXXXX'
})
})
if (!response.ok) {
throw new Error(await response.text())
}
return await response.json()
}