Skip to content

视频生成 API

通过文本提示或图片生成 AI 视频。三种输入模式:文生视频、图生视频(动画化照片)、角色一致性视频(通过 RealFace/虚拟肖像 asset_id)。模型:Seedance 2.5($0.315/秒,最长 30 秒)、Seedance 2.0($0.227/秒,最高 4K + RealFace)、Seedance 2.0 Fast($0.165/秒,支持 RealFace)、Seedance 1.5 Pro($0.070/秒,仅图生视频)、Sora 2($0.10/秒,仅 4/8/12 秒)。异步流程:提交 → 轮询 → 获取 MP4 链接。

基础 URL: https://api.jarvisclaw.ai/v1

认证

两种方式均支持:

方式Header描述
API KeyAuthorization: Bearer sk-...平台自动从你的 HD 钱包签名 x402
私钥 (x402)SDK 自动处理Agent 直接用自己的钱包签名 x402

定价

视频按输出秒数计费(720p 基准),再乘以分辨率系数。把每秒单价乘以你请求的时长即为片段价格。

基础价(720p)

模型价格/秒5 秒片段备注
bytedance/seedance-2.5$0.315约 $1.58最新一代,最长 30 秒,不支持 RealFace
bytedance/seedance-2.0$0.227约 $1.14分辨率上限最高(4K),支持 RealFace
bytedance/seedance-2.0-fast$0.165约 $0.8360–80 秒出片,支持 RealFace
bytedance/seedance-1.5-pro$0.070约 $0.35仅图生视频,不支持 RealFace
azure/sora-2$0.10约 $0.50(4 秒)720p + 同步音频,仅支持 4/8/12 秒
xai/grok-imagine-video$0.05约 $0.25快速,画质较低

模型 ID 是 azure/sora-2,不是 openai/sora-2。所有 Seedance 模型的图生视频与文生视频同价。

分辨率系数(Seedance)

更高分辨率消耗更多上游 token,系数大致随像素数相对 720p 缩放,并叠加在各模型自身的每秒单价上。 只有 bytedance/seedance-2.0 支持到 4K;1.5 Pro 上限 1080p;Seedance 2.5 与 2.0-fast 仅支持 480p/720p。

分辨率系数5 秒 (2.0)10 秒 (2.0)15 秒 (2.0)
480p约 0.44×约 $0.50约 $1.00约 $1.50
720p1.0×约 $1.14约 $2.27约 $3.41
1080p约 2.25×约 $2.55约 $5.11约 $7.66
4K约 9.6×约 $10.90约 $21.79约 $32.69

360p540p1K2K 任何模型都不支持,付款前即返回 400。其他模型请用基础价表里 自己的每秒单价乘以同一系数 —— 不要用 2.0 的价格换算。

公布价与实际结算金额

以上为参考价。上游按 token 计量 Seedance,实际结算按你请求的具体时长和分辨率计价, 精确金额请读响应中的 price.amount

轮询任务状态免费 —— GET 复用原始支付。

端点

方法端点描述
POST/generations提交视频生成任务
GET/generations/:id查询任务状态/获取结果
GET/generations列出历史生成任务

POST /generations

提交视频生成任务。异步处理,返回任务 ID。

参数

参数类型必填描述
modelstring模型 ID(见定价表)
promptstring文本描述
duration_secondsinteger视频时长(秒),上限取决于模型:Seedance 2.5 最长 30 秒,Seedance 2.0 / 2.0-fast 最长 15 秒,Seedance 1.5 Pro 最长 12 秒,Sora 2 只接受 4/8/12
image_urlstring图生视频:输入图片 URL
real_face_asset_idstringRealFace asset_id(仅 Seedance 2.0 / 2.0-fast,2.5 不支持);与 image_url 互斥
aspect_ratiostring画面比例:adaptive16:9(默认)、9:161:14:33:421:9
resolutionstring分辨率,默认 720p。各模型可选值不同:Seedance 2.5 与 2.0-fast 仅 480p/720p;1.5 Pro 另支持 1080p;2.0 另支持 1080p/4K

响应

json
{
  "id": "vgen_abc123def456",
  "status": "processing",
  "model": "azure/sora-2",
  "prompt": "一只金色的鱼在珊瑚礁间游动,阳光透过水面折射",
  "duration_seconds": 8,
  "created_at": "2026-07-06T14:30:00Z",
  "estimated_completion": "2026-07-06T14:32:00Z"
}

GET /generations/:id

查询生成任务状态。完成后返回视频 URL。

响应(处理中)

json
{
  "id": "vgen_abc123def456",
  "status": "processing",
  "progress": 65,
  "estimated_remaining_seconds": 45
}

响应(已完成)

json
{
  "id": "vgen_abc123def456",
  "status": "completed",
  "url": "https://cdn.jarvisclaw.ai/videos/vgen_abc123def456.mp4",
  "model": "azure/sora-2",
  "prompt": "一只金色的鱼在珊瑚礁间游动,阳光透过水面折射",
  "duration_seconds": 8,
  "resolution": "1080p",
  "aspect_ratio": "16:9",
  "created_at": "2026-07-06T14:30:00Z",
  "completed_at": "2026-07-06T14:32:15Z",
  "cost": 0.80
}

响应(失败)

json
{
  "id": "vgen_abc123def456",
  "status": "failed",
  "error": {
    "code": "content_policy_violation",
    "message": "The prompt was rejected by the content safety filter"
  }
}

GET /generations

列出历史生成任务。

参数

参数类型必填描述
limitinteger每页数量。默认:20
statusstring过滤:processingcompletedfailed

代码示例

bash
# 1. 文生视频
curl -X POST https://api.jarvisclaw.ai/v1/videos/generations \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "azure/sora-2",
    "prompt": "A golden fish swimming through coral reefs with sunlight filtering through the water surface",
    "duration_seconds": 8,
    "resolution": "1080p"
  }'

# 2. 查询状态
curl https://api.jarvisclaw.ai/v1/videos/generations/vgen_abc123def456 \
  -H "Authorization: Bearer sk-your-api-key"

# 3. 图生视频
curl -X POST https://api.jarvisclaw.ai/v1/videos/generations \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance/seedance-1.5-pro",
    "prompt": "The person slowly turns and smiles at the camera",
    "image_url": "https://example.com/portrait.jpg",
    "duration_seconds": 5
  }'

# 4. RealFace 视频
curl -X POST https://api.jarvisclaw.ai/v1/videos/generations \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bytedance/seedance-2.0",
    "prompt": "This person is giving a presentation in a modern office",
    "real_face_asset_id": "ta_real_7f8a9b2c",
    "duration_seconds": 10
  }'
python
import requests
import time

BASE = "https://api.jarvisclaw.ai/v1/videos"
HEADERS = {
    "Authorization": "Bearer sk-your-api-key",
    "Content-Type": "application/json",
}

# 1. 提交文生视频任务
resp = requests.post(f"{BASE}/generations", headers=HEADERS, json={
    "model": "azure/sora-2",
    "prompt": "一只金色的鱼在珊瑚礁间游动,阳光透过水面折射",
    "duration_seconds": 8,
    "resolution": "1080p",
})
job = resp.json()
print(f"任务已提交: {job['id']}, 状态: {job['status']}")

# 2. 轮询直到完成
while job["status"] == "processing":
    time.sleep(10)
    resp = requests.get(f"{BASE}/generations/{job['id']}", headers=HEADERS)
    job = resp.json()
    print(f"  进度: {job.get('progress', '?')}%")

if job["status"] == "completed":
    print(f"✅ 视频 URL: {job['url']}")
    print(f"   费用: ${job['cost']:.2f}")
else:
    print(f"❌ 失败: {job['error']['message']}")

# 3. 图生视频
resp = requests.post(f"{BASE}/generations", headers=HEADERS, json={
    "model": "bytedance/seedance-1.5-pro",
    "prompt": "这个人慢慢转头,对着镜头微笑",
    "image_url": "https://example.com/portrait.jpg",
    "duration_seconds": 5,
})
job2 = resp.json()
print(f"图生视频任务: {job2['id']}")

# 4. RealFace 角色一致性视频
resp = requests.post(f"{BASE}/generations", headers=HEADERS, json={
    "model": "bytedance/seedance-2.0",
    "prompt": "这个人在现代办公室里做演讲",
    "real_face_asset_id": "ta_real_7f8a9b2c",
    "duration_seconds": 10,
})
job3 = resp.json()
print(f"RealFace 视频: {job3['id']}")
python
from jarvisclaw import VideoClient
import time

# x402 Agent 钱包 — 按秒自动付费
video = VideoClient(private_key="0x<evm-private-key>")

# 文生视频
job = video.generate(
    "一只金色的鱼在珊瑚礁间游动,阳光透过水面折射",
    model="azure/sora-2",
    duration=8,
)
print(f"任务: {job.id}, 状态: {job.status}")

# 等待完成
while job.status != "completed":
    time.sleep(10)
    job = video.status(job.id)
print(f"视频 URL: {job.url}")

# 图生视频
job2 = video.generate(
    "这个人慢慢转头微笑",
    model="bytedance/seedance-1.5-pro",
    image_url="https://example.com/portrait.jpg",
    duration=5,
)
print(f"图生视频: {job2.id}")

# RealFace
job3 = video.generate(
    "这个人在镜头前挥手打招呼",
    model="bytedance/seedance-2.0",
    real_face_asset_id="ta_real_7f8a9b2c",
    duration=5,
)
print(f"RealFace: {job3.id}")

while job3.status != "completed":
    time.sleep(10)
    job3 = video.status(job3.id)
print(f"视频 URL: {job3.url}")
go
package main

import (
    "context"
    "fmt"
    "time"
    jc "github.com/api-jarvisclaw/go-sdk/v2"
)

func main() {
    ctx := context.Background()
    vc, _ := jc.NewVideoClient(jc.WithAPIKey("sk-your-api-key"))

    // 文生视频
    job, _ := vc.Generate(ctx, &jc.VideoRequest{
        Model:           "azure/sora-2",
        Prompt:          "A golden fish swimming through coral reefs",
        DurationSeconds: 8,
        Resolution:      "1080p",
    })
    fmt.Printf("任务: %s, 状态: %s\n", job.ID, job.Status)

    // 轮询
    for job.Status == "processing" {
        time.Sleep(10 * time.Second)
        job, _ = vc.Status(ctx, job.ID)
    }
    fmt.Printf("视频 URL: %s\n", job.URL)
}
go
package main

import (
    "context"
    "fmt"
    "time"
    jc "github.com/api-jarvisclaw/go-sdk/v2"
)

func main() {
    ctx := context.Background()
    // x402 Agent 钱包 — 按秒自动付费 USDC
    vc, _ := jc.NewVideoClient(jc.WithPrivateKey("0x<evm-private-key>"))

    // 文生视频
    job, _ := vc.Generate(ctx, &jc.VideoRequest{
        Model:           "azure/sora-2",
        Prompt:          "A golden fish swimming through coral reefs",
        DurationSeconds: 8,
    })
    fmt.Printf("任务: %s\n", job.ID)

    for job.Status == "processing" {
        time.Sleep(10 * time.Second)
        job, _ = vc.Status(ctx, job.ID)
    }
    fmt.Printf("视频 URL: %s\n", job.URL)

    // 图生视频 — Go SDK 暂不支持 image_url 参数
    // 请使用 cURL 或 Python SDK
}

模型对比

特性azure/sora-2Seedance 1.5 ProSeedance 2.0Seedance 2.0 FastSeedance 2.5
文生视频❌(仅图生视频)
图生视频✅(图中不得含人脸)
RealFace
时长仅 4/8/12s最长 12s最长 15s最长 15s最长 30s
分辨率上限720p1080p4K720p720p
同步音频✅(可配置)✅(可配置)✅(可配置)
生成速度慢 (~2min)中 (~90s)快 (60–80s)
价格/秒$0.10$0.070$0.227$0.165$0.315

限制

  • 异步处理 — 所有视频生成为异步任务,需轮询获取结果
  • 生成时间通常 60–180 秒 — 高分辨率需留更多余量;请轮询至 completedfailed
  • 内容审核 — 提示词经过安全过滤器;被拦截时任务返回 status: "failed"retryable: false
  • 任务保留 48 小时 — 提交后 48 小时内可查询结果
  • RealFace 仅限 Seedance 2.0 / 2.0-fast — 1.5 Pro、Sora 2 和 Seedance 2.5 都不支持 real_face_asset_id
  • image_urlreal_face_asset_id 互斥 — 二者不能同时传
  • 时长上限按模型区分 — Seedance 2.5 最长 30 秒,2.0 / 2.0-fast 最长 15 秒,1.5 Pro 最长 12 秒
  • 分辨率上限按模型区分 — 默认 720p;仅 2.0 支持 4K,1.5 Pro 上限 1080p,2.5 与 2.0-fast 上限 720p;360p/540p/1K/2K 任何模型都不支持
  • Sora 2 时长离散 — 只接受 4、8、12 秒;传 duration_seconds: 5 会被拒绝
  • Go SDK 限制Generate() 目前不支持 image_urlreal_face_asset_id 参数