构建你的下一帧。
通过 Seedance 2.5 生成视频,通过 Seedream 生成图片。KinoAPI 是独立的转发服务:标准 HTTPS、JSON 和统一的账号余额。云端创作台则以可视化画布提供相同的接入能力。
https://api.kino-api.com视频为异步接口:创建 → 查询 → 下载。图片生成通过同步接口返回结果。
身份认证
注册账号,在钱包中充值,然后在 API 密钥页面创建密钥。建议不同环境使用独立密钥,并撤销不再使用的密钥。 管理密钥 ↗
Authorization: Bearer sk-YOUR_TOKEN第一个 Seedance 2.5 请求
在服务端环境中设置 KINO_API_KEY。下面的请求会创建付费生成任务,示例采用 4 秒、720p。
curl https://api.kino-api.com/v1/video/generations \
-H "Authorization: Bearer $KINO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.5",
"prompt": "A quiet ocean at dawn, cinematic light",
"duration": 4,
"metadata": {
"resolution": "720p",
"ratio": "16:9"
}
}'保存返回的 task_id(或 id)。部分响应包裹在 data 内。不要仅因连接超时就重复提交。
{
"task_id": "task_EXAMPLE",
"status": "queued",
"model": "seedance-2.5"
}模型与当前参数
GET /v1/models返回列表反映当前密钥可用模型。模型指南列出了 KinoAPI 支持的配置,并非每种组合都经过独立实测。 完整模型指南
| 模型 | 当前接入参数 |
|---|---|
seedance-2.5 | 文本/图片输入 · 480p/720p · 4–30 秒或 Auto |
seedance-2.5-video | 视频输入 · 480p/720p · adaptive + Auto(-1) |
seedance-2.0-pro | 480p/720p/1080p/4k · 4–15 秒 |
seedance-2.0-fastseedance-2.0-miniseedance-1.5-pro | 480p/720p · 4–15 秒 |
seedream-5.0-pro | 1K / 2K |
seedream-5.0-lite | 2K / 3K / 4K |
创建视频任务
POST /v1/video/generations| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 必填,已启用的模型 ID。 |
prompt | string | 文本提示词。Seedance 2.5 上限为 16 KiB,按 UTF-8 字节计算。 |
duration | integer | 文本/图片输入的固定输出时长。Auto 使用 metadata.duration = -1。 |
metadata | object | 分辨率、比例、时长、参考素材及其他模型参数。 |
生成参数 metadata
| 字段 | 取值 / 规则 |
|---|---|
resolution | 2.5 为 480p 或 720p,不能沿用 2.0 Pro 的 4K 参数。 |
ratio | adaptive, 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 |
duration | -1 表示 Auto,视频输入必须使用该值。 |
generate_audio | boolean |
content | 由图片/视频/音频参考对象组成的数组。 |
查询任务并下载
GET /v1/video/generations/{task_id}curl https://api.kino-api.com/v1/video/generations/task_EXAMPLE -H "Authorization: Bearer $KINO_API_KEY"| 状态 | 处理方式 |
|---|---|
| queued / running / IN_PROGRESS | 等待,以 3–5 秒间隔查询,并在限流时退避。 |
| SUCCESS / succeeded / completed | 读取 data.result_url 或 url,及时下载。 |
| FAILURE / failed / cancelled | 读取 fail_reason,在任务日志中确认最终状态与退款。 |
{
"data": {
"status": "SUCCESS",
"result_url": "https://media.uptoken.cc/example.mp4",
"quota": 12345
}
}上面的响应仅为结构示意,不是价格报价。结果链接可能过期。仅调用 API 不会自动将文件保存至云端创作台。
参考图片与视频
提供上游能够访问的 HTTPS 素材或受支持的 data URI。仅处理你有权使用的素材。云端创作台会校验文件类型,并采用 30 MB 参考素材额度。
图片参考
{
"model": "seedance-2.5",
"prompt": "The camera slowly approaches the scene",
"duration": 4,
"metadata": {
"resolution": "720p",
"ratio": "16:9",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://YOUR_HOST/reference.jpg"
},
"role": "reference_image"
}
]
}
}视频参考
{
"model": "seedance-2.5-video",
"prompt": "Keep the motion and reimagine the light",
"metadata": {
"resolution": "720p",
"ratio": "adaptive",
"duration": -1,
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://YOUR_HOST/reference.mp4"
},
"role": "reference_video"
}
]
}
}seedance-2.5 包含视频参考会被拒绝;seedance-2.5-video 不含视频参考同样会被拒绝。网关先验证计费档位,再将两种别名转发给同一上游模型。
生成图片
POST /v1/images/generations同步 JSON 响应,每次请求返回一张成功图片。请设置充分的超时时间,size 使用模型指南中的档位,如 2K。
{
"model": "seedream-5.0-pro",
"prompt": "A sculptural amber glass bottle on volcanic stone",
"size": "2K",
"watermark": false
}{
"created": 1789000000,
"data": [
{
"url": "https://media.uptoken.cc/example.jpg"
}
]
}上述链接仅示意返回结构。请及时下载实际返回的链接,不要将 API Authorization 请求头发送给素材域名。
计费与云端存储
Seedance 2.5 按实际 token 用量计费:非视频输入每百万 15.61875 美元,视频输入每百万 9.345 美元。既有 Seedance 2.0/1.5 模型采用公布的每秒价格;Seedream 按成功图片计费。 完整价格
上游明确失败后自动退款。未知或等待中的任务不等于已确认失败。编辑创作台画布本身不发起付费请求,生成需要明确确认。
云端项目、提示词与参考素材保存在认证账号下。初期每账号素材空间为 512 MB,参考素材上限为 30 MB,单个生成副本上限为 100 MB。生成成功不代表结果缓存一定成功。
错误、内容审核与限制
| 问题 | 处理方式 |
|---|---|
| 401 / 403 | 检查密钥、账号与模型权限。 |
| 400 | 根据提示修正模型、输入或参数冲突,保留提示词原文。 |
| 429 | 退避等待,不要提高查询频率。 |
| 余额不足或欠费 | 检查账户与上游可用性,不要反复重提。 |
| 网络超时 | 请求可能已经成功提交,重试前先核对已有任务 ID。 |
| 安全审核拒绝 | 检查可接受使用政策,不要尝试绕过筛查。 |
生成前进行提示词筛查;安全服务不可用时会阻止生成。密钥存在突发频率限制,短时间重复的相同提示词可能被拒绝。吞吐需求请联系支持。
Node.js:单次提交,安全查询
在服务端使用 Node.js 22 或更新版本运行。示例不会自动重试付费提交,并保留任务 ID 供后续查询。
const BASE = "https://api.kino-api.com";
const key = process.env.KINO_API_KEY;
if (!key) throw new Error("Set KINO_API_KEY on the server");
const headers = {
Authorization: `Bearer ${key}`,
"Content-Type": "application/json"
};
async function api(path, options = {}) {
const response = await fetch(BASE + path, {
...options, headers, signal: AbortSignal.timeout(240_000)
});
const body = await response.json();
if (!response.ok || body.error) {
throw new Error(body.error?.message || `HTTP ${response.status}`);
}
return body.data ?? body;
}
// Submit ONCE. A timeout is not proof of failure; do not auto-retry.
const created = await api("/v1/video/generations", {
method: "POST",
body: JSON.stringify({
model: "seedance-2.5",
prompt: "A quiet ocean at dawn, cinematic light",
duration: 4,
metadata: { resolution: "720p", ratio: "16:9" }
})
});
const id = created.task_id ?? created.id;
if (!id) throw new Error("Missing task ID; check your task log");
console.log("Save this task ID:", id);
const deadline = Date.now() + 20 * 60_000;
let completed = false;
while (Date.now() < deadline) {
await new Promise(resolve => setTimeout(resolve, 5000));
const task = await api(`/v1/video/generations/${encodeURIComponent(id)}`);
const status = String(task.status).toLowerCase();
if (["success", "completed", "succeeded"].includes(status)) {
console.log("Download promptly:", task.result_url ?? task.url);
completed = true;
break;
}
if (["failure", "failed", "cancelled"].includes(status)) {
throw new Error(task.fail_reason || "Generation failed");
}
}
if (!completed) console.log("Still pending. Resume polling this ID:", id);Python 可使用标准 HTTPS 或 KinoAPI 包接入。使用新模型参数前,请根据本文档核对已安装包的实际行为。 PyPI ↗