クイックスタート
ゼロから AI 動画生成までを約 5 分で。
最初に必読: Seedance 2.0 には モデルが 1 つではなく 6 つ あります。「自動モード判定」は存在しません — 入力タイプに応じて正しい
model値を選択する必要があります。完全なマトリクスは モデル概要 を参照してください。
前提条件
- EvoLink アカウント(無料登録)
- API キー管理ページ で取得した API キー
- 任意の HTTP クライアント(cURL、Python、Node.js など)
ベース URL
https://api.evolink.ai
ステップ 1: API キーを保存する
export EVOLINK_API_KEY="your-api-key-here"
ステップ 2: 適切なモデルを選択する
手元の素材に応じて選びます。
| 入力 | 使用するモデル |
|---|---|
| テキストプロンプトのみ | seedance-2.0-text-to-video |
| 1〜2 枚の参照画像 | seedance-2.0-image-to-video |
| 画像 + 動画 + 音声(マルチモーダル) | seedance-2.0-reference-to-video |
より高速かつ低価格な生成が必要ですか? 上記いずれのモデル名にも fast- プレフィックスを追加できます。例: seedance-2.0-fast-text-to-video。Fast モデル を参照してください。
ステップ 3: 最初のリクエストを送る
以下は text-to-video の例です。
import os
import requests
response = requests.post(
"https://api.evolink.ai/v1/videos/generations",
headers={
"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}",
"Content-Type": "application/json"
},
json={
"model": "seedance-2.0-text-to-video",
"prompt": "A golden retriever running through a sunlit meadow, cinematic slow motion",
"duration": 5,
"quality": "720p",
"aspect_ratio": "16:9"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
print(f"Status: {task['status']}")
レスポンス(HTTP 200)
{
"id": "task-unified-1774857405-abc123",
"object": "video.generation.task",
"created": 1774857405,
"model": "seedance-2.0-text-to-video",
"status": "pending",
"progress": 0,
"type": "video",
"task_info": {
"can_cancel": true,
"estimated_time": 165,
"video_duration": 5
},
"usage": {
"billing_rule": "per_second",
"credits_reserved": 50,
"user_group": "default"
}
}
billing_rule は常に per_second です。duration の値が長いほど料金は高くなります。
ステップ 4: 動画をポーリングで取得する
すべての生成リクエストは非同期です。タスク ID を使って結果をポーリングします。
import time
task_id = task["id"]
while True:
status = requests.get(
f"https://api.evolink.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['EVOLINK_API_KEY']}"}
)
result = status.json()
if result["status"] == "completed":
print(f"Video URL: {result['results'][0]}")
break
if result["status"] == "failed":
print("Generation failed")
break
print(f"Progress: {result['progress']}%")
time.sleep(5)
重要: 生成された動画 URL は 24 時間 有効です。早めに自前のストレージへダウンロードして保存してください。
本番運用では、ポーリングよりも Webhook(callback_url)を推奨します。
よくある落とし穴
| 症状 | 原因 | 対処 |
|---|---|---|
model で 400 invalid_request | "model": "seedance-2.0" と書いた | フルモデル ID(例: seedance-2.0-text-to-video)を使用 |
image_urls を渡してエラー | text-to-video はメディア入力を受け付けない | seedance-2.0-image-to-video を使用 |
quality: "1080p" が拒否される | 1080p はサポートされていない | 480p または 720p を使用 |
| 30 MB または 6000 px を超える画像が拒否される | 画像入力の上限を超過 | 許容範囲まで圧縮(image-to-video 参照) |
次のステップ
- モデル概要 — 6 モデルの完全マトリクスと選定フロー
- 認証 — Bearer トークンの詳細
- Text-to-Video / Image-to-Video / Reference-to-Video
- 非同期タスク — ポーリングエンドポイントの詳細
- Webhook —
callback_urlによるリアルタイム通知