API 参考
认证
所有 API 请求都需要使用 API Key 认证。你可以在 Settings > API Keys 中获取 API Key。
支持的认证方式:
| 方式 | 格式 |
|---|---|
| Bearer Token | Authorization: Bearer sk-xxx |
| Token Header | Authorization: Token sk-xxx |
| X-API-Key | X-API-Key: sk-xxx |
| Query Parameter | ?api_key=sk-xxx |
安全提示:
- 不要在客户端代码中暴露 API Key
- 所有 API 请求都应从服务端发起
接口总览
| 方法 | 接口 | 用途 |
|---|---|---|
| POST | /api/v1/video | 创建永久视频任务 |
| GET | /api/v1/video | 获取视频任务列表 |
| GET | /api/v1/video/:taskId | 获取任务详情 |
| DELETE | /api/v1/video/:taskId | 删除视频任务 |
| POST | /api/v1/video/:taskId/render | 触发渲染 |
| POST | /api/v1/upload | 上传素材文件 |
| GET | /api/v1/files | 获取文件列表 |
| DELETE | /api/v1/files/:fileId | 删除文件 |
| GET | /api/v1/credits | 查询积分余额 |
| POST | /api/v1/preview | 创建临时预览 |
| GET | /api/v1/preview/:tempId | 获取预览配置 |
| DELETE | /api/v1/preview/:tempId | 删除预览 |
| POST | /api/v1/preview/:tempId/convert | 将预览转成正式任务 |
| POST | /api/v1/preview/:tempId/render | 将预览转成正式任务并立即渲染 |
POST /api/v1/video
根据视频配置创建一个永久任务。这个接口只创建任务,不会立即开始渲染。
主要字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
config | object | 是 | 符合 JSON Schema 的视频配置 |
metadata | object | 否 | 绑定到任务上的自定义元数据 |
常见返回字段:
taskIdvideoTaskIdpreviewUrlviewerUrlconfigUrlstatusqualitywidthheightduration
GET /api/v1/video
获取当前账号下的所有视频任务。
查询参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
page | integer | 1 | 页码 |
limit | integer | 20 | 每页数量,最大 100 |
status | string | - | 按最新任务状态过滤 |
响应中会包含 tasks 列表和 pagination 分页对象。
GET /api/v1/video/:taskId
获取某个视频任务的完整详情。
常用返回字段:
taskIdvideoTaskIdstatusvideoUrlpreviewUrlviewerUrlconfigUrlcostCreditscreatedAtcompletedAtmetadata
状态值说明:
| 状态 | 含义 |
|---|---|
created | 任务已创建,尚未开始渲染 |
rendering | 正在渲染 |
completed | 渲染成功完成 |
failed | 渲染失败 |
DELETE /api/v1/video/:taskId
永久删除一个任务及其本地渲染记录。接口同时会尝试删除上游远端任务。
常见返回字段:
deletedremoteDeletedmessage
如果上游删除失败,本地删除仍然可能成功。
POST /api/v1/video/:taskId/render
对已有任务触发或重新触发渲染。
请求体:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
webhook_url | string | 否 | - | 渲染完成通知地址 |
num_workers | integer | 否 | 5 | 渲染 worker 数量 |
可能结果:
- 返回一个新的渲染任务,
status: rendering - 如果相同尺寸已经渲染完成,会返回
alreadyRendered: true
常见错误:
NOT_FOUNDALREADY_RENDERINGINSUFFICIENT_CREDITSRENDER_TRIGGER_FAILED
Webhook
webhook_url 支持以下两个渲染启动接口:
POST /api/v1/video/:taskId/renderPOST /api/v1/preview/:tempId/render
工作流程:
- 渲染请求会把你的
webhook_url和 render task 一起保存 - 上游渲染器返回
completed或failed - 项目先更新本地数据库
- 然后向你的
webhook_url发起POST请求
转发的 payload 一般包含:
taskIdrenderTaskIdstatusvideoUrlerrortimestamp
当前限制:
- 只转发
completed和failed webhook_url必须是合法的绝对 URL- 目前没有 webhook 签名
- 目前没有重试队列和投递日志
POST /api/v1/upload
上传图片、视频或音频文件,供后续视频配置引用。
表单字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | File | 否* | 单个文件 |
files | File[] | 否* | 多个文件 |
*file 和 files 至少传一个。
支持的 MIME 范围:
image/*video/*audio/*
各套餐存储上限:
| 套餐 | 上限 |
|---|---|
| Free | 512 MB |
| Starter | 10 GB |
| Standard | 20 GB |
| Pro | 50 GB |
成功响应中会包含 count 和 assets 列表。
GET /api/v1/files
获取当前 API Key 所属账号上传的文件列表。
查询参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
page | integer | 1 | 页码 |
limit | integer | 20 | 每页数量 |
type | string | - | image、video 或 audio |
响应中会包含 files 和 pagination。
DELETE /api/v1/files/:fileId
永久删除文件库中的一个文件。删除时会同时移除存储对象和文件记录。
常见返回字段:
fileIddeletedmessage
GET /api/v1/credits
获取当前账号积分余额。
典型返回:
{
"success": true,
"credits": 985,
"currency": "credits"
}POST /api/v1/preview
创建一个临时预览,不消耗积分。
主要规则:
- 请求体直接传完整的视频 JSON schema
- 预览链接有效期为 7 天
- 预览 不会 消耗积分
- 预览 不会 生成可下载的视频文件
响应字段:
tempIdpreviewUrlviewerUrlexpiresIn
GET /api/v1/preview/:tempId
读取临时预览对应的配置。
返回字段:
tempIdconfig
DELETE /api/v1/preview/:tempId
删除一个临时预览链接。
返回字段:
tempIddeletedmessage
POST /api/v1/preview/:tempId/convert
将临时预览克隆成一个正式视频任务。原来的临时预览仍然可用。
可选请求体:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
category | string | 否 | 新任务的分类 |
常见返回字段:
convertedtaskIdvideoTaskIdpreviewUrlviewerUrlconfigUrl
POST /api/v1/preview/:tempId/render
将临时预览克隆成正式任务,并立即启动渲染。
请求体:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
category | string | 否 | api | 新任务分类 |
webhook_url | string | 否 | - | 渲染结果 webhook |
num_workers | integer | 否 | 5 | 渲染 worker 数量 |
典型成功响应:
converted: truetaskIdrenderTaskIdstatus: renderingcostremainingCreditspreviewUrlviewerUrl
积分计算
积分消耗规则:
- 费用 = 视频时长(秒)× 质量系数
| 质量 | 短边 | 系数 |
|---|---|---|
| 720p | <= 720px | 1.0 |
| 1080p | <= 1080px | 1.5 |
| 2K | <= 1440px | 2.0 |
质量会根据视频的较短边自动判定。
错误格式
所有错误响应都遵循这个结构:
{
"success": false,
"error": "Human-readable error message",
"code": "ERROR_CODE",
"details": {
"field": "additional context"
}
}常见错误码:
MISSING_API_KEYINVALID_API_KEYINVALID_API_KEY_FORMATAPI_KEY_INACTIVEUSER_NOT_FOUNDINVALID_REQUESTINVALID_CONFIGINSUFFICIENT_CREDITSNOT_FOUNDALREADY_RENDERINGREMOTE_ERRORRENDER_TRIGGER_FAILEDINTERNAL_ERROR