OpenAPI接口文档
如何调用后台API进行开发,即将上线,敬请期待.
EasyAI平台支持开放API,并且兼容OpenAI格式的绘图接口规范,轻松接入!
API的应用场景
- 二开形成新的应用、小程序或者APP,提供接口
- 接入硬件产品如AI相机、AI试装
- 接入企业内部其他生产系统
基础信息
- 基础路径:
/v1,EasyAI官方API的完整BaseURL为https://51easyai.com/api/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. Agent 流式响应 (responses)
接口说明
Agent 智能体流式响应接口,支持多模态输入(文本、图片),可配置技能选项,返回 SSE 格式的流式数据。
方法 POST
路径 /v1/responses
请求示例
方式一:application/json
方式二:input 为消息数组
请求参数说明
input(string | array, 必填): 用户输入- 字符串: 单条文本内容
- JSON 字符串: 可传入需解析的消息数组字符串
- 数组: 消息数组,每项为
{ role: "user" | "assistant" | "system", content: string }
model(string, 必填): 模型名称或工作流名称stream(boolean, 可选): 是否流式返回,默认 trueimages(string, 可选): 图片 URL 数组,支持多模态输入requestId(string, 可选): 请求 ID,用于追踪和取消请求;不传时由服务端生成agentId(string, 可选): 智能体 ID,用于 RAG 检索skill_options(object, 可选): 技能选项personal_skill_ids(string, 可选): 选中的个人技能 ID 列表ephemeral_skill(object, 可选): 临时技能(仅本次对话有效,不存储)name(string): 技能名称description(string): 技能描述instructions(string): 技能指令references(array, 可选): 临时引用,每项{ name: string, content: string }assets(array, 可选): 临时静态资源,每项{ name, description, url, file_type }
响应说明
- 响应头:
Content-Type: text/event-stream,采用 SSE 流式输出 - 每行格式:
data: <JSON>\n\n - 事件内容为 JSON 对象,直至收到
data: [DONE]\n\n表示结束 - 错误时推送:
data: {"type":"error","message":"...","code":500}\n\n
响应事件类型与格式
Agent 接口会根据运行模式返回不同格式的流式事件:
一、Base Agent 模式(RunStreamEvent)
当未指定 agentId 或未命中 RAG 流程时,事件格式如下。
| 事件类型 | 说明 |
|---|---|
run_item_stream_event | 运行过程中的输出项事件 |
run_item_stream_event 下的 item 类型
| item.type | 说明 |
|---|---|
tool_call_item | 工具调用开始 |
tool_call_output_item | 工具调用结果(rawItem.type 可为 function_call_result) |
message_output_item | 消息输出(rawItem.type 为 message,含 content 数组) |
示例:tool_call_item
示例:tool_call_output_item
示例:message_output_item(最终文本回复)
二、RAG Agent 模式(ResponseStreamEvent)
当指定 agentId 且命中知识库时,使用 OpenAI Responses API,事件类型兼容 OpenAI 规范,主要包括:
| 事件 type | 说明 |
|---|---|
response.created | 响应已创建 |
response.in_progress | 响应处理中 |
response.output_item.added | 新增输出项(如 message、function_call) |
response.output_item.done | 输出项完成 |
response.output_text.delta | 文本流式增量(含 delta、snapshot) |
response.text.done | 文本输出完成 |
response.content_part.added | 内容块新增 |
response.content_part.done | 内容块完成 |
response.completed | 响应完成 |
response.failed | 响应失败 |
response.error | 错误事件 |
示例:response.output_text.delta
示例:response.output_item.added(message)
错误事件示例
结束标记
FormData 说明
支持 multipart/form-data,其中 input、skill_options 可为 JSON 字符串,服务端会解析。
5. 取消 Agent 响应
接口说明
取消正在进行的 Agent 流式响应请求,需使用发起请求时传入或返回的 requestId。
方法 POST
路径 /v1/responses/cancel/:requestId
请求示例
路径参数说明
requestId(string, 必填): 要取消的请求 ID(与/v1/responses中的requestId一致)
6. 视频生成
接口说明
生成视频内容,支持文生视频、图生视频、视频参考、多模态编辑(O1/Omni 模式)等能力。
方法 POST
路径 /v1/video/generations
请求示例
示例一:文生视频
示例二:图生视频(首帧/参考图)
示例三:视频编辑(视频参考、多模态)
示例四:主体参考(O1 element 模式)
请求参数说明
model(string, 必填): 工作流名称content(array, 必填): 内容数组,每项为多模态内容块
content 项结构
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 内容类型: "text" | "image_url" | "audio_url" | "video_url" | "element" |
text | string | 文本内容(type=text 时必填) |
image_url | object | 图片对象 { url: string }(type=image_url 时必填) |
audio_url | object | 音频对象 { url: string }(type=audio_url 时必填) |
video_url | object | 视频对象(type=video_url 时必填) |
element | object | 主体参考(type=element 时必填,O1/Omni 模式) |
role | string | 角色/用途标识 |
name | string | 占位符名称(如 <<<image_1>>>) |
shot_index | number | 多镜头模式下的镜头索引 |
duration | number | 多镜头模式下该分镜时长(秒) |
role 取值说明(图片/视频参考)
| role | 说明 |
|---|---|
first_frame | 首帧图片,用于图生视频的起始画面 |
last_frame | 尾帧图片,指定生成视频的结束画面 |
digital_human_frame | 数字人参考帧 |
reference | 风格/角色参考图 |
video_feature | 视频特征参考(风格、动作等) |
video_base | 待编辑视频(视频编辑模式下作为源视频) |
shot_prompt | 分镜头提示词(多镜头模式) |
element | 主体参考(O1 新增) |
video_url 扩展字段
| 字段 | 类型 | 说明 |
|---|---|---|
url | string | 视频 URL,支持 HTTP/HTTPS 或 base64 data URI |
refer_type | string | 参考类型: "feature" 特征参考 | "base" 待编辑视频 |
keep_original_sound | string | 是否保留原声: "yes" | "no" |
element 主体参考结构
| 字段 | 类型 | 说明 |
|---|---|---|
system_element_id | string | 系统主体库中的主体 ID |
inline_element | object | 内联主体详情,包含 name、description、frontal_image_url、refer_images 等 |
通用参数
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, 可选): 是否固定镜头,默认 falsecamera_control(string, 可选): 镜头控制类型negative_prompt(string, 可选): 负面提示词(可灵)cfg_scale(number, 可选): CFG 权重(可灵)
7. 音乐生成
接口说明
同步提交和返回结果
方法 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,保留两位小数
8. 语音合成
接口说明
同步提交和返回结果
方法 POST
路径 /v1/speech/generations
请求示例
请求参数说明
model(string, 必填): 模型名称text(string, 必填): 要合成的文本text_file_id(string, 可选): 文本文件IDvoice_id(string, 必填): 语音IDspeed(number, 可选): 语速vol(number, 可选): 音量pitch(number, 可选): 音调emotion(string, 可选): 情感
9. 创建数字人
接口说明
创建数字人形象
方法 POST
路径 /v1/digital-human/create
请求示例
请求参数说明
model(string, 必填): 工作流名称video_id(string, 必填): 视频IDinteraction_optimise(number, 可选): 是否开启针对直播的优化,1:开启 0:关闭,默认为开启
10. 生成数字人视频
接口说明
生成数字人视频
方法 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
11. 异步生成任务弃用,可以用/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"
12. 查询异步任务结果
接口说明
查询异步任务的结果
方法 GET
路径 /v1/ai/result/:taskId
请求示例
路径参数说明
taskId(string, 必填): 任务ID
13. 取消任务
接口说明
取消正在执行的任务,基于API接口的任务不支持取消
方法 GET
路径 /v1/ai/cancel/:taskId
请求示例
路径参数说明
taskId(string, 必填): 任务ID
14. 获取模型清单(OpenAI 兼容)
接口说明
返回当前可用的模型列表,遵循 OpenAI 官方的 models 接口规范,便于对接 OpenAI SDK 或第三方兼容客户端。
使用建议:本接口主要为兼容 OpenAI 格式设计,参数较少,返回结构固定。内部使用或需要按能力筛选模型时,建议使用下方「按能力类型查询模型列表」接口。
方法 GET
路径 /v1/models
请求示例
响应示例
响应字段说明
data(array): 模型列表,每项为 OpenAI 格式的模型对象success(boolean): 是否成功
响应数据模型(TypeScript)
15. 按能力类型查询模型列表
接口说明
根据模型能力类型查询可用模型,返回 PlatformModel 格式的完整模型信息。不传 type 或传 all 时返回所有模型。内部使用建议优先使用本接口,可精确按能力筛选、获取更丰富的模型元数据。
方法 GET
路径 /v1/models/list
请求示例
请求参数说明
type(string, 可选): 模型能力类型,不传或为all时返回所有模型。常用可选值:text_generate:文本对话image_generate:图像生成image_edit:图像编辑image_analysis:图像理解video_generate:视频生成video_understanding:视频理解tools_call:工具调用audio_generate:音乐生成text_to_speech:语音合成digital_human_generate:数字人omni_video:多模态视频all:所有模型
响应示例
响应字段说明
modelList(array): 模型列表,每项为 PlatformModel 结构,含name、alias、types、provider等字段count(number): 模型数量
响应数据模型(TypeScript)
16. 文件上传
接口说明
开放接口上传文件,上传后为临时文件,24 小时后自动删除。支持 multipart/form-data 二进制上传或 base64 方式。上传成功后返回可访问的 URL,可在图片编辑、视频生成、Agent 等接口中作为 image_url、url 等参数使用。
方法 POST
路径 /v1/files/upload
请求示例
方式一:multipart/form-data 二进制上传
方式二:base64 图片上传(FormData)
请求参数说明
file(File | string, 必填): 文件内容- 二进制:
multipart/form-data中file字段,直接上传文件流 - Base64:
file字段传入 base64 字符串,支持data:image/xxx;base64,前缀(仅图片)
- 二进制:
fileName(string, 可选): 保存时的文件名,不传时使用原文件名或自动生成
限制说明
- 单文件大小:20MB
- 支持类型:图片(image/)、音频(audio/)、视频(video/*)及通用文件
- 存储策略:临时存储,24 小时后自动删除
响应示例
响应字段说明
success(boolean): 是否上传成功url(string): 上传后的文件可访问 URL,可在其他 API 中直接使用
异步模式说明
所有支持异步的接口(图片生成、图片编辑、视频生成、音乐生成、语音合成、数字人视频生成)都可以通过请求头启用异步模式:
- 请求头:
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插件进行工作流上传