OpenAPI接口文档
如何调用后台API进行开发,即将上线,敬请期待.
EasyAI平台支持开放API,并且兼容OpenAI格式的绘图接口规范,轻松接入!
API的应用场景
- 二开形成新的应用、小程序或者APP,提供接口
- 接入硬件产品如AI相机、AI试装
- 接入企业内部其他生产系统
基础信息
- 基础路径:
/v1 - 认证方式: 需要在请求头中携带
Authorization: Bearer {token} - 异步模式: 支持通过请求头
x-async: true或async: true启用异步模式(立即返回任务ID,不等待任务完成)
1. AI绘图/视频生成
接口说明
与OpenAI官方Dalle调用方式一样,用户利用接口创建token,携带token访问接口,model为工作流名称
方法 POST
路径 /v1/images/generations
请求示例
请求参数说明
prompt(string, 必填): 提示词model(string, 必填): 工作流名称size(string, 可选): 图片大小,例如 "1024x1024"n(number, 可选): 生成图片数量aspect_ratio(string, 可选): 图片比例(FLUX图像比例)resolution(string, 可选): 分辨率,可选值: "1K" | "2K" | "4K" | "8K"
2. 图片编辑
接口说明
支持图片编辑功能,可以通过文件上传或URL方式提供图片和遮罩
方法 POST
路径 /v1/images/edits
请求示例
方式一:使用文件上传(multipart/form-data)
方式二:使用URL(application/json)
请求参数说明
image(File | string | string, 必填): 图片文件(支持多文件上传)或图片URLmask(File | string, 可选): 遮罩文件或遮罩URLprompt(string, 必填): 编辑提示词model(string, 必填): 工作流名称size(string, 可选): 图片大小aspect_ratio(string, 可选): 图片比例resolution(string, 可选): 分辨率seed(number, 可选): 随机种子n(number, 可选): 生成数量_metadata(string, 可选): JSON字符串格式的元数据
文件上传字段
files或image[]: 图片文件(最多16个)mask: 遮罩文件(最多1个)- 文件大小限制: 20MB
- 支持格式: jpg, jpeg, png, webp
3. AI对话
接口说明
与OpenAI官方Chat调用方式一样,用户利用接口创建token,携带token访问接口,model为工作流名称
方法 POST
路径 /v1/chat/completions
请求示例
请求参数说明
model(string, 必填): 工作流名称messages(array, 必填): 对话消息数组role(string): 角色,可选值: "system" | "user" | "assistant"content(string): 消息内容
stream(boolean, 可选): 是否流式返回,默认 trueconversationId(string, 可选): 会话IDsessionId(string, 可选): 会话ID
4. 视频生成
接口说明
生成视频内容
方法 POST
路径 /v1/video/generations
请求示例
请求参数说明
model(string, 必填): 工作流名称content(array, 必填): 内容数组type(string): 内容类型,可选值: "text" | "image_url" | "audio_url" | "video_url"text(string, 可选): 文本内容image_url(object, 可选): 图片URL对象role(string, 可选): 角色,可选值: "first_frame" | "last_frame" | "digital_human_frame" | "reference"
aspect_ratio(string, 可选): 宽高比,默认 "adaptive",可选值: "16:9" | "9:16" | "4:3" | "3:4" | "1:1" | "21:9" | "9:21" | "adaptive" | "keep_ratio"resolution(string, 可选): 分辨率,默认 "720p",可选值: "480p" | "720p" | "1080p" | "1440p" | "2160p"duration(number, 可选): 时长(秒),默认 5audio(boolean, 可选): 是否有音频framespersecond(number, 可选): 帧率watermark(boolean, 可选): 是否添加水印,默认 falseseed(number, 可选): 种子,默认 -1camerafixed(boolean, 可选): 是否固定镜头,默认 false
5. 音乐生成
接口说明
同步提交和返回结果
方法 POST
路径 /v1/song/generations
请求示例
请求参数说明
prompt(string, 必填): 音频生成内容model(string, 必填): 模型名称makeInstrumental(boolean, 可选): 是否生成无声音的音频customMode(boolean, 可选): 是否使用自定义模型title(string, 可选): 歌曲标题tags(string, 必填): 风格标签negativeTags(string, 必填): 负面标签vocalGender(string, 可选): 人声性别偏好,"m" 男声,"f" 女声styleWeight(number, 可选): 对风格的遵循强度,范围 0-1,保留两位小数weirdnessConstraint(number, 可选): 创意/离散程度,范围 0-1,保留两位小数audioWeight(number, 可选): 音频要素权重,范围 0-1,保留两位小数
6. 语音合成
接口说明
同步提交和返回结果
方法 POST
路径 /v1/speech/generations
请求示例
请求参数说明
model(string, 必填): 模型名称text(string, 必填): 要合成的文本text_file_id(string, 可选): 文本文件IDvoice_id(string, 必填): 语音IDspeed(number, 可选): 语速vol(number, 可选): 音量pitch(number, 可选): 音调emotion(string, 可选): 情感
7. 创建数字人
接口说明
创建数字人形象
方法 POST
路径 /v1/digital-human/create
请求示例
请求参数说明
model(string, 必填): 工作流名称video_id(string, 必填): 视频IDinteraction_optimise(number, 可选): 是否开启针对直播的优化,1:开启 0:关闭,默认为开启
8. 生成数字人视频
接口说明
生成数字人视频
方法 POST
路径 /v1/digital-human/generations
请求示例
请求参数说明
model(string, 必填): 工作流名称resource_id(string, 必填): 数字人资源IDaudio_url(string, 必填): 音频路径image_url(string, 可选): 图片URLvideo_url(string, 可选): 视频URLtempl_start_strategy(string, 可选): 指定模板开始策略,可选值: "start_from_given_seconds"templ_start_seconds(number, 可选): 模版视频开始时间(仅对Lite模式生效),默认 0separate_vocal(boolean, 可选): 是否打开人声分离,开启后会抑制音频背景杂音open_scenedet(boolean, 可选): 是否打开场景切分与说话人识别(仅对Basic模式生效)align_audio(boolean, 可选): 是否开启视频循环(仅对Lite模式生效),默认 truealign_audio_reverse(boolean, 可选): 是否开启倒放循环(仅对Lite模式生效,需要同时开启align_audio),默认 false
9. 异步生成任务弃用,可以用/v1/images/generations添加xasyc请求头的方式替代
接口说明
异步提交和返回任务,提交任务返回任务ID
方法 POST
路径 /v1/ai/generations
请求示例
请求参数说明
params(object, 必填): ComfyUI属性参数对象prompt(string, 可选): 提示词width(number, 可选): 宽度height(number, 可选): 高度seed(number, 可选): 随机种子- 其他ComfyUI相关参数...
options(object, 可选): 选项result_retrieval(string, 可选): 结果获取方式,默认 "websocket"
10. 查询异步任务结果
接口说明
查询异步任务的结果
方法 GET
路径 /v1/ai/result/:taskId
请求示例
路径参数说明
taskId(string, 必填): 任务ID
11. 取消任务
接口说明
取消正在执行的任务,基于API接口的任务不支持取消
方法 GET
路径 /v1/ai/cancel/:taskId
请求示例
路径参数说明
taskId(string, 必填): 任务ID
异步模式说明
所有支持异步的接口(图片生成、图片编辑、视频生成、音乐生成、语音合成、数字人视频生成)都可以通过请求头启用异步模式:
- 请求头:
x-async: true或async: true或X-Async: true - 行为:
- 异步模式(header存在且值为 "true" 或 "1"): 立即返回任务ID,不等待任务完成
- 同步模式(默认): 等待任务完成后返回结果
异步模式示例
异步回调模式
除了通过查询接口获取任务结果外,系统还支持通过HTTP回调的方式主动推送任务结果到指定URL。
配置方式
在管理后台的系统配置 -> 运营配置 -> 任务调度 -> 任务回调地址中配置回调URL。
配置路径: 管理后台 → 系统配置 → 运营配置 → 任务调度 → 任务回调地址
配置说明:
- 配置后,系统会在任务状态更新时(包括进行中、成功、失败等状态)向该URL发送POST请求
- 回调URL必须是可公网访问的HTTP/HTTPS地址
- 建议配置HTTPS地址以保证数据安全
回调处理机制
- 任务状态的消息队列消费者会自动将任务结果推送到配置的回调URL
- 系统使用POST请求发送回调数据,Content-Type为
application/json - 系统会自动重试3次,如果3次都失败则放弃回调
- 回调数据即为任务状态数据,格式见下方说明
回调数据格式
回调请求的请求体为 IGenerateStatus 格式的JSON数据,结构如下:
回调数据字段说明
顶层字段
queue_status(object, 可选): 队列状态信息,包含任务执行状态和结果node_status(object, 可选): 工作流节点执行状态(仅在工作流任务中存在)usage(object, 可选): 使用量统计(OPENAI兼容的计费数据)callback_url(string, 可选): 回调地址user(object, 可选): 用户信息_id(string): 业务系统的用户IDsso_id(string, 可选): 主应用的用户ID
generate_info(object, 可选): 生成相关信息input(object): 扩展输入参数workflow(object): 工作流信息_id(string): 工作流ID
billings(array, 可选): 账单信息数组
queue_status 字段说明
task_id(string): 任务IDrequest_id(string, 可选): 请求IDserver(string, 可选): 服务器标识status(string): 任务状态,可选值:"submitted"|"started"|"process"|"success"|"failed"|"rejected"|"cancelled"queue(number, 可选): 队列位置data(object, 可选): 任务结果数据(DrawResponse格式)output_content(array, 可选): 输出内容数组(GeneralOutput格式)message(string, 可选): 状态消息original_error_message(string, 可选): 原始错误信息time_remained(number, 可选): 剩余时间(秒)progress(number, 可选): 进度百分比(0-100)
data 字段(DrawResponse)说明
task_id(string): 任务IDrequest_id(string, 可选): 请求IDstatus(string): 任务状态output(array, 可选): 输出URL数组output_content(array, 可选): 输出内容数组(GeneralOutput格式)billings(array, 可选): 账单信息type(string, 可选): 文件类型,可选值:"image"|"audio"|"video"|"text"|"3d"|"file"message(string, 可选): 消息original_error_message(string, 可选): 原始错误信息started_at(number, 可选): 开始时间戳(毫秒)finished_at(number, 可选): 结束时间戳(毫秒)mediaSize(object, 可选): 媒体尺寸type(string): 文件类型width(number): 宽度height(number): 高度status(number): 状态
queue_info(object, 可选): 队列信息queue(number, 可选): 队列位置taskId(string, 可选): 任务ID
output_content 字段(GeneralOutput)说明
type(string, 可选): 输出类型url(string, 可选): 输出URLb64_json(string, 可选): Base64编码的JSON数据content(string, 可选): 生成的内容role(string, 可选): 角色filename(string, 可选): 文件名mediaSize(object, 可选): 媒体尺寸uploaded(boolean, 可选): 是否已上传has_audio(boolean, 可选): 是否有音频
回调示例
成功状态回调示例
失败状态回调示例
进行中状态回调示例
回调接口实现建议
- 接口要求:
- 接收POST请求
- Content-Type:
application/json - 返回HTTP 200状态码表示接收成功
- 建议在3秒内响应,避免超时
- 数据验证:
- 验证任务ID的有效性
- 验证用户ID的权限
- 保存任务结果到数据库
- 幂等性处理:
- 系统可能会重复发送回调(虽然会自动重试),建议根据
task_id做幂等性处理 - 可以只处理
status为"success"或"failed"的最终状态
- 系统可能会重复发送回调(虽然会自动重试),建议根据
- 错误处理:
- 如果回调接口返回非200状态码,系统会重试3次
- 建议记录回调日志,便于排查问题
注意事项
- 所有接口都需要在请求头中携带有效的认证token
- 文件上传接口支持multipart/form-data格式
- 图片编辑接口支持文件上传和URL两种方式
- 异步任务可以通过查询接口获取结果,也可以配置回调URL接收推送
- 部分接口支持流式返回(如聊天接口)
- 回调URL配置后,系统会在任务状态更新时自动推送结果,无需轮询查询
工作流上传
建议使用ComfyUI-EasyAI插件进行工作流上传