ListenHubOpenAPI
API リファレンスAI 動画

AI 動画

Seedance、HappyHorse、PixVerse の各モデルで、テキスト・画像・動画・音声の入力からショート動画を非同期に生成します。

AI 動画はショート動画を非同期に生成します。生成リクエストを送信してタスクを作成し、success または failed になるまでタスクをポーリングします。

Seedance と HappyHorse は 1 つのエンドポイント POST /v1/video-generation/generate を共有し、model フィールドでモデルを選びます。PixVerse は独自のエンドポイントを持ち、リクエストの構造も異なります。3 つのファミリーが生成したタスクは、いずれも同じタスク・一覧・詳細エンドポイントから読み出します。

本ページのすべてのエンドポイントは OpenAPI の Base URL https://api.marswave.ai/openapi を使用し、Authorization: Bearer $LISTENHUB_API_KEY ヘッダーで API キーによる認証を行います。キーは listenhub.ai/settings/api-keys で作成できます。

モデルを選ぶ

3 つのファミリーに合計 4 つのモデルがあります。まず下の表で選び、次に各モデルのページで正確な制限と料金の注意点を確認してください。

モデルファミリー生成エンドポイント主な用途解像度長さ
doubao-seedance-2-fast (デフォルト)Seedance/v1/video-generation/generate高速なテキスト / 画像 / 動画からの生成480p, 720p4-15 秒
doubao-seedance-2-proSeedance/v1/video-generation/generateより高品質な Seedance 生成、1080p まで対応480p, 720p, 1080p4-15 秒
happyhorseHappyHorse/v1/video-generation/generate参考動画の編集、縦向きアスペクト比、より長い参考クリップ720p, 1080p3-15 秒
pixversePixVerse/v1/video-generation/pixverse/generate9 つの能力モード:トランジション、フュージョン、スタイル変換、モーション模倣、リップシンク、マーケティング agent360p, 540p, 720p, 1080p1-60 秒

共有エンドポイントで model を省略した場合のデフォルトは doubao-seedance-2-fast です。PixVerse は共有エンドポイント上に独自の model デフォルトを持ちません。専用の pixverse/generate パスから呼び出し、そのエンドポイント自身の model フィールドでバージョン(pixversev6v5v4.5)を指定します。

モデルアスペクト比レート制限
doubao-seedance-2-fast16:9, 4:3, 1:1, 3:4, 9:16, 21:95 RPM
doubao-seedance-2-pro16:9, 4:3, 1:1, 3:4, 9:16, 21:95 RPM
happyhorse16:9, 4:3, 1:1, 3:4, 9:16, 21:9, 4:5, 5:45 RPM
pixverse9:16, 16:9, 1:1, 4:3, 3:45 RPM

モデルごとに制限が異なります。doubao-seedance-2-fast1080p に対応していません。 Seedance モデルは 4:55:4 に対応していません。happyhorse480plast_frameaudio_url に対応していません。対応していないモデル、アスペクト比、 解像度、長さを組み合わせたリクエストは 400 を返します。

呼び出しの流れ

共有エンドポイントは Seedance と HappyHorse をカバーします。PixVerse も自身の generate / estimate パス上で同じ 3 ステップの流れに従います。詳細は PixVerse ページを参照してください。

クレジットを見積もる

費用の確認を表示する必要がある場合は、生成前に POST /v1/video-generation/estimate-credits(PixVerse は POST /v1/video-generation/pixverse/estimate-credits)を呼び出します。

タスクを作成する

POST /v1/video-generation/generate(PixVerse は POST /v1/video-generation/pixverse/generate)を呼び出します。レスポンスは taskIdepisodeId を返します。

結果をポーリングする

statussuccess または failed になるまで GET /v1/video-generation/tasks/{taskId} をポーリングします。このエンドポイントはすべてのモデルファミリーで共通です。

入力コンテンツ

content 配列は 1-16 個の要素を受け取ります。含められるのは、テキストプロンプト 1 件まで、画像 9 枚まで、動画 3 本まで、音声 3 本までです。この配列は Seedance / HappyHorse の共有エンドポイントで使います。PixVerse では代わりにトップレベルの imagesvideosaudios フィールドを使います。

タイプ必須フィールドrole説明
texttextなし最大 2500 文字。Seedance モデルは最大 500 文字。
image_urlimage_url.urlfirst_frame, last_frame, reference_imagelast_frame には first_frame が必要です。フレーム role と参照 role は混在できません。
video_urlvideo_url.urlreference_videoinputVideoDuration が必要です。Seedance は 2-15 秒、HappyHorse は 3-60 秒の入力に対応。
audio_urlaudio_url.urlreference_audio画像または動画の要素が少なくとも 1 つ必要です。happyhorse では非対応。

画像から動画を作る場合はフレーム role(first_frame、必要に応じて last_frame)を使います。マルチモーダルな参照生成では参照 role(reference_imagereference_videoreference_audio)を使います。1 回のリクエストでフレーム role と参照 role を混在させないでください。

動画タスクを作成する

POST /v1/video-generation/generate

Seedance / HappyHorse 共有エンドポイントで非同期の動画生成タスクを作成します。クレジットはタスク作成時に差し引かれ、生成に失敗した場合は自動的に返還されます。PixVerse では POST /v1/video-generation/pixverse/generate を使ってください。

テキストから動画

curl -X POST "https://api.marswave.ai/openapi/v1/video-generation/generate" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-fast",
    "content": [
      {
        "type": "text",
        "text": "A cinematic aerial shot of a quiet coastal city at sunrise"
      }
    ],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generateAudio": true
  }'
const response = await fetch(
  'https://api.marswave.ai/openapi/v1/video-generation/generate',
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.LISTENHUB_API_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      model: 'doubao-seedance-2-fast',
      content: [
        {
          type: 'text',
          text: 'A cinematic aerial shot of a quiet coastal city at sunrise',
        },
      ],
      resolution: '720p',
      ratio: '16:9',
      duration: 5,
      generateAudio: true,
    }),
  },
)
const data = await response.json()
console.log('Task ID:', data.data.taskId)
import os
import requests

response = requests.post(
    'https://api.marswave.ai/openapi/v1/video-generation/generate',
    headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'},
    json={
        'model': 'doubao-seedance-2-fast',
        'content': [
            {
                'type': 'text',
                'text': 'A cinematic aerial shot of a quiet coastal city at sunrise',
            }
        ],
        'resolution': '720p',
        'ratio': '16:9',
        'duration': 5,
        'generateAudio': True,
    },
)
data = response.json()
print('Task ID:', data['data']['taskId'])

レスポンス

{
  "code": 0,
  "message": "",
  "data": {
    "taskId": "665f1d4e8b3a3f001234abcd",
    "episodeId": "665f1d4e8b3a3f001234abce",
    "status": "generating"
  }
}

画像から動画

1 枚の画像から始めるには first_frame を使います。終了フレームを制御したい場合にのみ last_frame を追加します。

curl -X POST "https://api.marswave.ai/openapi/v1/video-generation/generate" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-pro",
    "content": [
      {
        "type": "text",
        "text": "The camera slowly pushes in while mist moves through the scene"
      },
      {
        "type": "image_url",
        "role": "first_frame",
        "image_url": {
          "url": "https://example.com/start-frame.jpg"
        }
      }
    ],
    "resolution": "1080p",
    "ratio": "16:9",
    "duration": 5
  }'

参考動画

contentvideo_url を含める場合は、参考動画の長さ(秒)を inputVideoDuration に設定します。

curl -X POST "https://api.marswave.ai/openapi/v1/video-generation/generate" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "happyhorse",
    "content": [
      {
        "type": "text",
        "text": "Restyle the subject as a polished product launch clip"
      },
      {
        "type": "video_url",
        "role": "reference_video",
        "video_url": {
          "url": "https://example.com/reference.mp4"
        }
      },
      {
        "type": "image_url",
        "role": "reference_image",
        "image_url": {
          "url": "https://example.com/style-reference.jpg"
        }
      }
    ],
    "resolution": "720p",
    "ratio": "9:16",
    "duration": 5,
    "inputVideoDuration": 8,
    "audioSetting": "auto"
  }'

リクエストパラメータ

パラメータ必須デフォルト説明
modelstringいいえdoubao-seedance-2-fastdoubao-seedance-2-prodoubao-seedance-2-fasthappyhorse のいずれか。
contentarrayはい-入力要素の配列。入力コンテンツ を参照。
resolutionstringいいえ720p480p720p1080p のいずれか。モデルの制限に従います。
ratiostringいいえ16:916:94:31:13:49:1621:94:55:4 のいずれか。モデルの制限に従います。
durationintegerいいえ5出力動画の長さ(秒)。Seedance は 4-15、HappyHorse は 3-15。
generateAudiobooleanいいえtrue動画と一緒に音声を生成するかどうか。
seedintegerいいえ-1乱数シード。-1 から 4294967295-1 を指定するとランダム生成になります。
inputVideoDurationintegerいいえ0video_url を使う場合は必須。Seedance は 2-15、HappyHorse は 3-60。
audioSettingstringいいえauto動画編集ワークフロー向け。auto は音声を生成し、origin は元動画の音声を維持します。

解像度、アスペクト比、長さ、inputVideoDuration の制限はモデルごとに異なります。 モデル別のルールは SeedanceHappyHorse を参照してください。

タスクを取得する

GET /v1/video-generation/tasks/{taskId}

タスクが終了状態になるまで、タスク詳細エンドポイントをポーリングします。このエンドポイントは PixVerse を含むすべてのモデルファミリーのタスクを返します。

curl "https://api.marswave.ai/openapi/v1/video-generation/tasks/{taskId}" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY"

タスクのステータス

ステータス意味
pendingタスクが作成され、送信を待っています。
generatingプロバイダー側で生成が進行中です。
uploadingプロバイダーの出力が完成し、ListenHub が保存しています。
success動画が完成しました。保存された出力は videoUrl から取得します。
failed生成に失敗しました。該当する場合、クレジットは自動的に返還されます。

レスポンス

{
  "code": 0,
  "message": "",
  "data": {
    "id": "665f1d4e8b3a3f001234abcd",
    "taskId": "665f1d4e8b3a3f001234abcd",
    "episodeId": "665f1d4e8b3a3f001234abce",
    "status": "success",
    "model": "doubao-seedance-2-fast",
    "params": {
      "content": [
        {
          "type": "text",
          "text": "A cinematic aerial shot of a quiet coastal city at sunrise"
        }
      ],
      "resolution": "720p",
      "ratio": "16:9",
      "duration": 5,
      "generateAudio": true,
      "seed": -1
    },
    "videoUrl": "https://assets.listenhub.ai/video-generation/output.mp4",
    "coverUrl": "https://assets.listenhub.ai/video-generation/cover.jpg",
    "providerVideoUrl": "https://provider.example/video.mp4",
    "duration": 5,
    "resolution": "720p",
    "ratio": "16:9",
    "seed": 123456,
    "creditCharged": 12,
    "enabledShare": false,
    "createdAt": 1700000000000,
    "updatedAt": 1700000300000
  }
}

タスク一覧を取得する

GET /v1/video-generation/tasks

現在の API ユーザーの動画生成タスクを、作成日時の新しい順に一覧表示します。すべてのモデルファミリーのタスクが同じ一覧に表示されます。

curl "https://api.marswave.ai/openapi/v1/video-generation/tasks?page=1&pageSize=20&status=success" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY"

クエリパラメータ

パラメータ必須デフォルト説明
pageintegerいいえ1ページ番号。
pageSizeintegerいいえ201 ページあたりの件数、最大 100。
statusstringいいえ-任意のフィルタ:pendinggeneratinguploadingsuccessfailed

レスポンス

{
  "code": 0,
  "message": "",
  "data": {
    "items": [
      {
        "id": "665f1d4e8b3a3f001234abcd",
        "episodeId": "665f1d4e8b3a3f001234abce",
        "status": "success",
        "model": "doubao-seedance-2-fast",
        "title": "A cinematic aerial shot of a quiet coastal city at sunrise",
        "prompt": "A cinematic aerial shot of a quiet coastal city at sunrise",
        "params": {
          "content": [],
          "resolution": "720p",
          "ratio": "16:9",
          "duration": 5,
          "generateAudio": true,
          "seed": -1
        },
        "videoUrl": "https://assets.listenhub.ai/video-generation/output.mp4",
        "coverUrl": "https://assets.listenhub.ai/video-generation/cover.jpg",
        "providerVideoUrl": "https://provider.example/video.mp4",
        "seed": 123456,
        "creditCharged": 12,
        "createdAt": 1700000000000
      }
    ],
    "page": 1,
    "pageSize": 20,
    "total": 1
  }
}

クレジットを見積もる

POST /v1/video-generation/estimate-credits

Seedance / HappyHorse 共有エンドポイントでタスクを作成する前に、クレジット消費量を見積もります。PixVerse には独自の見積もりエンドポイント POST /v1/video-generation/pixverse/estimate-credits があります。クレジット消費量は固定ではありません。必ず対応する見積もりエンドポイントを呼び出して、指定するパラメータでの正確な値を確認してください。

curl -X POST "https://api.marswave.ai/openapi/v1/video-generation/estimate-credits" \
  -H "Authorization: Bearer $LISTENHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2-fast",
    "resolution": "720p",
    "duration": 5,
    "hasVideoInput": false,
    "ratio": "16:9"
  }'

リクエストパラメータ

パラメータ必須デフォルト説明
modelstringはい-doubao-seedance-2-prodoubao-seedance-2-fasthappyhorse のいずれか。
resolutionstringはい-480p720p1080p のいずれか。モデルの制限に従います。
durationintegerはい-出力動画の長さ(秒)。
hasVideoInputbooleanいいえfalse生成リクエストに video_url を含む場合は true を指定します。
inputVideoDurationintegerいいえ0hasVideoInputtrue の場合は必須。
ratiostringいいえ16:9アスペクト比。

レスポンス

{
  "code": 0,
  "message": "",
  "data": {
    "tokens": 155520,
    "credits": 12
  }
}

エラー

HTTP ステータス意味
400パラメータが不正、モデル / アスペクト比 / 解像度の組み合わせが非対応、または必須のメディアの長さが未指定。
402クレジット不足。
403タスクは存在しますが、現在の API ユーザーのものではありません。
404タスクが見つかりません。
429レート制限を超過しました(生成エンドポイントはユーザーごとに 5 RPM)。

PixVerse はこれらの HTTP ステータスに加えて、独自の数値 code を返します。詳細は PixVerse のエラーコード を参照してください。

このページの内容