API REFERENCE / V1

构建你的下一帧。

通过 Seedance 2.5 生成视频,通过 Seedream 生成图片。KinoAPI 是独立的转发服务:标准 HTTPS、JSON 和统一的账号余额。云端创作台则以可视化画布提供相同的接入能力。

https://api.kino-api.com

视频为异步接口:创建 → 查询 → 下载。图片生成通过同步接口返回结果。

身份认证

注册账号,在钱包中充值,然后在 API 密钥页面创建密钥。建议不同环境使用独立密钥,并撤销不再使用的密钥。 管理密钥 ↗

Authorization: Bearer sk-YOUR_TOKEN
请将 API 密钥保存在服务端,不要嵌入公开网页、发布的移动应用或代码仓库。云端创作台使用 KinoAPI 账号认证,不向浏览器暴露生成密钥。

第一个 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-pro480p/720p/1080p/4k · 4–15 秒
seedance-2.0-fast
seedance-2.0-mini
seedance-1.5-pro
480p/720p · 4–15 秒
seedream-5.0-pro1K / 2K
seedream-5.0-lite2K / 3K / 4K

创建视频任务

POST /v1/video/generations
字段类型说明
modelstring必填,已启用的模型 ID。
promptstring文本提示词。Seedance 2.5 上限为 16 KiB,按 UTF-8 字节计算。
durationinteger文本/图片输入的固定输出时长。Auto 使用 metadata.duration = -1。
metadataobject分辨率、比例、时长、参考素材及其他模型参数。

生成参数 metadata

字段取值 / 规则
resolution2.5 为 480p 或 720p,不能沿用 2.0 Pro 的 4K 参数。
ratioadaptive, 16:9, 9:16, 1:1, 4:3, 3:4, 21:9
duration-1 表示 Auto,视频输入必须使用该值。
generate_audioboolean
content由图片/视频/音频参考对象组成的数组。
将 resolution 和 ratio 放入 metadata,不要依赖顶层同名字段。处理错误时不要静默截断提示词或改写生成参数。

查询任务并下载

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。
安全审核拒绝检查可接受使用政策,不要尝试绕过筛查。

生成前进行提示词筛查;安全服务不可用时会阻止生成。密钥存在突发频率限制,短时间重复的相同提示词可能被拒绝。吞吐需求请联系支持。

可接受使用政策 · info@kino-api.com

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 ↗

开始你的创作