> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SkyReels V4 動画生成

>  - Fast（速度優先）と Std（品質優先）の 2 段階モデルを提供
- テキストから動画（T2V）、画像から動画（I2V）、マルチモーダル参照（Omni）の 3 モードをリクエストフィールドから自動ルーティング
- 480p / 720p / 1080p 解像度、3 ～ 15 秒の長さをサポート
- 先頭フレーム / 末尾フレーム / キーフレーム、参照画像、参照動画、グリッドコラージュ、動画拡張、音声同期などの高度な機能をサポート
- 非同期処理モード、タスク ID を返して後続の照会に使用 

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/videos/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "skyreels-v4-fast",
      "prompt": "A serene forest at sunset with golden light filtering through the trees.",
      "duration": 5,
      "resolution": "1080p",
      "aspect_ratio": "16:9",
      "prompt_optimizer": true
    }'
  ```

  ```python Python theme={null}
  import requests

  url = "https://api.apimart.ai/v1/videos/generations"

  payload = {
      "model": "skyreels-v4-fast",
      "prompt": "A serene forest at sunset with golden light filtering through the trees.",
      "duration": 5,
      "resolution": "1080p",
      "aspect_ratio": "16:9",
      "prompt_optimizer": True
  }

  headers = {
      "Authorization": "Bearer <token>",
      "Content-Type": "application/json"
  }

  response = requests.post(url, json=payload, headers=headers)

  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const url = "https://api.apimart.ai/v1/videos/generations";

  const payload = {
    model: "skyreels-v4-fast",
    prompt: "A serene forest at sunset with golden light filtering through the trees.",
    duration: 5,
    resolution: "1080p",
    aspect_ratio: "16:9",
    prompt_optimizer: true
  };

  const headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
  };

  fetch(url, {
    method: "POST",
    headers: headers,
    body: JSON.stringify(payload)
  })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
  ```

  ```go Go theme={null}
  package main

  import (
      "bytes"
      "encoding/json"
      "fmt"
      "io/ioutil"
      "net/http"
  )

  func main() {
      url := "https://api.apimart.ai/v1/videos/generations"

      payload := map[string]interface{}{
          "model":            "skyreels-v4-fast",
          "prompt":           "A serene forest at sunset with golden light filtering through the trees.",
          "duration":         5,
          "resolution":       "1080p",
          "aspect_ratio":     "16:9",
          "prompt_optimizer": true,
      }

      jsonData, _ := json.Marshal(payload)

      req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
      req.Header.Set("Authorization", "Bearer <token>")
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, err := client.Do(req)
      if err != nil {
          panic(err)
      }
      defer resp.Body.Close()

      body, _ := ioutil.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```

  ```java Java theme={null}
  import java.net.http.HttpClient;
  import java.net.http.HttpRequest;
  import java.net.http.HttpResponse;
  import java.net.URI;

  public class Main {
      public static void main(String[] args) throws Exception {
          String url = "https://api.apimart.ai/v1/videos/generations";

          String payload = """
          {
            "model": "skyreels-v4-fast",
            "prompt": "A serene forest at sunset with golden light filtering through the trees.",
            "duration": 5,
            "resolution": "1080p",
            "aspect_ratio": "16:9",
            "prompt_optimizer": true
          }
          """;

          HttpClient client = HttpClient.newHttpClient();
          HttpRequest request = HttpRequest.newBuilder()
              .uri(URI.create(url))
              .header("Authorization", "Bearer <token>")
              .header("Content-Type", "application/json")
              .POST(HttpRequest.BodyPublishers.ofString(payload))
              .build();

          HttpResponse<String> response = client.send(request,
              HttpResponse.BodyHandlers.ofString());

          System.out.println(response.body());
      }
  }
  ```

  ```php PHP theme={null}
  <?php

  $url = "https://api.apimart.ai/v1/videos/generations";

  $payload = [
      "model" => "skyreels-v4-fast",
      "prompt" => "A serene forest at sunset with golden light filtering through the trees.",
      "duration" => 5,
      "resolution" => "1080p",
      "aspect_ratio" => "16:9",
      "prompt_optimizer" => true
  ];

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer <token>",
      "Content-Type: application/json"
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  echo $response;
  ?>
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'json'
  require 'uri'

  url = URI("https://api.apimart.ai/v1/videos/generations")

  payload = {
    model: "skyreels-v4-fast",
    prompt: "A serene forest at sunset with golden light filtering through the trees.",
    duration: 5,
    resolution: "1080p",
    aspect_ratio: "16:9",
    prompt_optimizer: true
  }

  http = Net::HTTP.new(url.host, url.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(url)
  request["Authorization"] = "Bearer <token>"
  request["Content-Type"] = "application/json"
  request.body = payload.to_json

  response = http.request(request)
  puts response.body
  ```

  ```swift Swift theme={null}
  import Foundation

  let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!

  let payload: [String: Any] = [
      "model": "skyreels-v4-fast",
      "prompt": "A serene forest at sunset with golden light filtering through the trees.",
      "duration": 5,
      "resolution": "1080p",
      "aspect_ratio": "16:9",
      "prompt_optimizer": true
  ]

  var request = URLRequest(url: url)
  request.httpMethod = "POST"
  request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
  request.setValue("application/json", forHTTPHeaderField: "Content-Type")
  request.httpBody = try? JSONSerialization.data(withJSONObject: payload)

  let task = URLSession.shared.dataTask(with: request) { data, response, error in
      if let error = error {
          print("Error: \(error)")
          return
      }

      if let data = data, let responseString = String(data: data, encoding: .utf8) {
          print(responseString)
      }
  }

  task.resume()
  ```

  ```csharp C# theme={null}
  using System;
  using System.Net.Http;
  using System.Text;
  using System.Threading.Tasks;

  class Program
  {
      static async Task Main(string[] args)
      {
          var url = "https://api.apimart.ai/v1/videos/generations";

          var payload = @"{
              ""model"": ""skyreels-v4-fast"",
              ""prompt"": ""A serene forest at sunset with golden light filtering through the trees."",
              ""duration"": 5,
              ""resolution"": ""1080p"",
              ""aspect_ratio"": ""16:9"",
              ""prompt_optimizer"": true
          }";

          using var client = new HttpClient();
          client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

          var content = new StringContent(payload, Encoding.UTF8, "application/json");
          var response = await client.PostAsync(url, content);
          var result = await response.Content.ReadAsStringAsync();

          Console.WriteLine(result);
      }
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01KPEY5H3NQ2W8D7T6VB3F9GR4"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": 400,
      "message": "リクエストパラメータが無効です",
      "type": "invalid_request_error"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "認証に失敗しました。APIキーを確認してください",
      "type": "authentication_error"
    }
  }
  ```

  ```json 402 theme={null}
  {
    "error": {
      "code": 402,
      "message": "アカウント残高が不足しています。チャージ後に再試行してください",
      "type": "payment_required"
    }
  }
  ```

  ```json 422 theme={null}
  {
    "error": {
      "code": 422,
      "message": "パラメータが相互排他的または不正な値です（例：I2V と Omni フィールドを同時に渡した）",
      "type": "invalid_request_error"
    }
  }
  ```

  ```json 429 theme={null}
  {
    "error": {
      "code": 429,
      "message": "リクエストが多すぎます。しばらくしてから再試行してください",
      "type": "rate_limit_error"
    }
  }
  ```

  ```json 500 theme={null}
  {
    "error": {
      "code": 500,
      "message": "サーバー内部エラー。しばらくしてから再試行してください",
      "type": "server_error"
    }
  }
  ```
</ResponseExample>

## 認証

<ParamField header="Authorization" type="string" required>
  すべてのAPIエンドポイントはBearer Token認証が必要です

  APIキーの取得：

  [APIキー管理ページ](https://apimart.ai/keys)にアクセスしてAPIキーを取得してください

  使用時はリクエストヘッダーに追加します：

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## 生成モード

SkyReels V4 はリクエストフィールドに応じて自動的に対応モードへルーティングします。**`mode` フィールドを指定する必要はありません**：

| モード                 | トリガー条件                                                             | 機能                                |
| ------------------- | ------------------------------------------------------------------ | --------------------------------- |
| **T2V**（テキストから動画）   | `prompt` と共通フィールドのみ                                                | 純粋なテキスト駆動生成                       |
| **I2V**（画像から動画）     | `first_frame_image` / `end_frame_image` / `mid_frame_images` のいずれか | 先頭・末尾・キーフレーム制御                    |
| **Omni**（マルチモーダル参照） | `ref_images` / `ref_videos` のいずれか                                  | 被写体参照、グリッドコラージュ、モーション参照、動画拡張、音声同期 |

<Warning>
  **厳格な排他性**：I2V フィールド（`first_frame_image` / `end_frame_image` / `mid_frame_images`）と Omni フィールド（`ref_images` / `ref_videos`）は同時に使用できません。違反した場合は 422 を返します。
</Warning>

<Note>
  **`@tag` メカニズム**：`mid_frame_images` / `ref_images` / `ref_videos` を使用する際、各要素は `@` で始まる `tag`（例：`@image1`、`@Actor-1`、`@video1`）を宣言し、その `tag` は **必ず `prompt` 内に出現する必要があります**。

  `prompt` を「脚本」、`tag` を具体的な素材（画像 / 動画）を指す「キャラクターポインタ」と考えてください。例えば prompt に `"@Actor-1 が @video1 のシーンに入る"` と書くと、システムは `@Actor-1` に対応する参照画像の被写体と `@video1` に対応する動作参照を生成過程に注入します。
</Note>

## リクエストパラメータ

### 共通フィールド

<ParamField body="model" type="string" required>
  以下の 2 つの段階をサポート：

  | モデル                | 位置付け                    | 適用シーン                   |
  | ------------------ | ----------------------- | ----------------------- |
  | `skyreels-v4-fast` | 速度優先                    | クイックプレビュー、バッチ生成、日常コンテンツ |
  | `skyreels-v4-std`  | 品質優先（Fast より 25～30% 高価） | キーシーン、高詳細要件、正式納品        |

  <Warning>
    **`model` フィールドは明示的に渡す必要があります。デフォルト値はありません。**
  </Warning>

  <Tip>
    **料金は解像度と `ref_videos` の使用有無と強く関連します**：1080p は 480p / 720p より大幅に高価、`ref_videos`（動画入力あり）は動画入力なしの約 1.5～2 倍です。音声と動画の同時出力は現在サポートされていません。
  </Tip>
</ParamField>

<ParamField body="prompt" type="string" required>
  テキストプロンプト、最大 **1280 tokens**

  シーン、被写体、動作、スタイルなどを詳しく記述すると、より良い生成結果が得られます。

  `ref_images` / `ref_videos` / `mid_frame_images` を使用する場合、`prompt` には対応する `@tag`（例：`@Actor-1`、`@video1`、`@image1`）を**必ず含める**必要があります。

  例：`"@Actor-1 walks through a neon-lit street at night."`
</ParamField>

<ParamField body="duration" type="integer" default="5">
  出力動画の長さ（秒）

  * 範囲：`[3, 15]`
  * デフォルト：`5`

  <Warning>
    `ref_videos.type=reference` を渡した場合、`duration` は参照動画の長さで上書きされます（上限 10 秒）。
  </Warning>
</ParamField>

<ParamField body="resolution" type="string" default="1080p">
  動画解像度

  選択肢：

  * `480p`
  * `720p`
  * `1080p`（デフォルト）
</ParamField>

<ParamField body="aspect_ratio" type="string" default="16:9">
  アスペクト比

  選択肢：

  * `16:9`（デフォルト）
  * `4:3`
  * `1:1`
  * `9:16`
  * `3:4`

  <Warning>
    **I2V モードでは `aspect_ratio` は無視されます**（出力比率は入力画像によって決まります）；Omni が `ref_videos` を伴う場合も同様に無視されます。
  </Warning>
</ParamField>

<ParamField body="prompt_optimizer" type="boolean" default="true">
  プロンプトを自動最適化するかどうか

  有効にすると、システムが自動的にプロンプトを最適化し、より良い生成結果を得られるようにします。
</ParamField>

### I2V 専用フィールド

<ParamField body="first_frame_image" type="string">
  動画の先頭フレーム画像 URL（jpg / jpeg / png / gif / bmp）

  指定すると、この画像が動画の **先頭画面** として使用されます。
</ParamField>

<ParamField body="end_frame_image" type="string">
  動画の末尾フレーム画像 URL（jpg / jpeg / png / gif / bmp）

  指定すると、この画像が動画の **末尾画面** として使用されます。`first_frame_image` と組み合わせて先頭・末尾フレーム制御が可能です。
</ParamField>

<ParamField body="mid_frame_images" type="object[]">
  中間キーフレームリスト、最大 **6 個**。各要素の構造は以下のとおり：

  <Expandable title="mid_frame_images 要素">
    <ResponseField name="tag" type="string" required>
      `@` で始まり、`prompt` 内に出現する必要があります（例：`@image1`）
    </ResponseField>

    <ResponseField name="image_url" type="string" required>
      画像 URL（jpg / jpeg / png / gif / bmp）
    </ResponseField>

    <ResponseField name="time_stamp" type="integer" default="-1">
      出現タイムスタンプ（秒）。デフォルト `-1`（未指定）；指定時は `0 < time_stamp < duration` を満たす必要があります。
    </ResponseField>
  </Expandable>
</ParamField>

### Omni 専用フィールド

<ParamField body="ref_images" type="object[]">
  参照画像リスト（すべての要素の `type` は一致する必要があります）。各要素の構造は以下のとおり：

  <Expandable title="ref_images 要素">
    <ResponseField name="tag" type="string" required>
      `@` で始まり、`prompt` 内に出現する必要があります（例：`@Actor-1`）
    </ResponseField>

    <ResponseField name="type" type="string" required>
      参照タイプ：

      * `image` - 通常の参照画像（リスト長 1～3；各 `image_urls` 長 1～5）
      * `grid` - グリッドコラージュ、つまり複数画像を 1 枚に結合したグリッド画像（2×2、3×3 など）；リスト長は必ず = 1、`image_urls` は 1 枚必須
    </ResponseField>

    <ResponseField name="image_urls" type="string[]" required>
      画像 URL 配列
    </ResponseField>

    <ResponseField name="audio_url" type="string">
      声紋音声 URL（**`type=image` のみサポート**、音声時間 ≤ 15 秒）
    </ResponseField>
  </Expandable>
</ParamField>

<ParamField body="ref_videos" type="object[]">
  参照動画リスト、**最大 1 個**。各要素の構造は以下のとおり：

  <Expandable title="ref_videos 要素">
    <ResponseField name="tag" type="string" required>
      `@` で始まり、`prompt` 内に出現する必要があります（例：`@video1`）
    </ResponseField>

    <ResponseField name="type" type="string" required>
      参照タイプ：

      * `reference` - 動作/被写体参照、**`duration` を上書きします**（参照動画の長さに従う、最大 10 秒）、デフォルトで入力動画の音声を引き継ぎます；**`ref_images.type=image` と組み合わせ可能**
      * `extend` - 動画拡張、リクエストの `duration` で課金；**`ref_images` と組み合わせ不可**
    </ResponseField>

    <ResponseField name="video_url" type="string" required>
      動画 URL（MP4 / MOV、時間 ≤ 15 秒）
    </ResponseField>
  </Expandable>
</ParamField>

## サポートされる生成シーン

以下のシーンは `skyreels-v4-fast` と `skyreels-v4-std` の **両方** でサポートされます：

| シーン             | モード  | 必須パラメータ                                 | 代表的な用途                     |
| --------------- | ---- | --------------------------------------- | -------------------------- |
| テキストから動画        | T2V  | `prompt`                                | テキスト駆動でコンセプトショットを素早く生成     |
| 画像から動画 - 先頭フレーム | I2V  | `first_frame_image`                     | 静止画を動画化、開始画面を指定            |
| 画像から動画 - 末尾フレーム | I2V  | `end_frame_image`                       | 動画の終了画面を指定                 |
| 画像から動画 - キーフレーム | I2V  | `mid_frame_images`（1～6）                 | 先頭＋末尾＋中間キーフレームで分鏡ペースを精密制御  |
| Omni 単一/複数被写体参照 | Omni | `ref_images`（`type=image`）              | キャラクター一貫性、複数被写体の同時登場       |
| Omni グリッドコラージュ  | Omni | `ref_images`（`type=grid`、1 枚）           | ステップ解説動画（チュートリアル、レシピ、操作デモ） |
| Omni モーション参照    | Omni | `ref_videos`（`type=reference`）          | 参照動画の動作、被写体、スタイルを再現        |
| Omni 動画拡張       | Omni | `ref_videos`（`type=extend`）             | 既存動画から続きを生成                |
| Omni 音声同期       | Omni | `ref_images`（`type=image`）+ `audio_url` | デジタルヒューマンナレーション、音声駆動リップシンク |

## パラメータ制約

以下の制約に違反した場合、リクエストは拒否され **422** を返します。**課金は発生しません**：

| パラメータ                       | 制約                                                                                  |
| --------------------------- | ----------------------------------------------------------------------------------- |
| `prompt`                    | 最大 1280 tokens                                                                      |
| `duration`                  | `[3, 15]` 秒；`ref_videos.type=reference` 時は参照動画の長さで上書き（上限 10 秒）                      |
| `resolution`                | `480p` / `720p` / `1080p` のみ                                                        |
| `aspect_ratio`              | `16:9` / `4:3` / `1:1` / `9:16` / `3:4`；I2V では無視；Omni が `ref_videos` を伴う場合も無視       |
| `mid_frame_images`          | 最大 6 個；`time_stamp` は `-1` または `(0, duration)` 範囲内                                  |
| `ref_images` 全体             | リスト内の `type` は一致する必要あり；I2V フィールドと共存不可                                               |
| `ref_images.type=grid`      | リスト長は必ず = 1；`image_urls` は 1 枚必須                                                    |
| `ref_images.type=image`     | リスト長 1～3；各 `image_urls` 長 1～5                                                       |
| `ref_images.audio_url`      | `type=image` のみサポート、音声 ≤ 15 秒                                                       |
| `ref_videos`                | 最大 1 個；`video_url` MP4 / MOV、≤ 15 秒                                                 |
| `ref_videos.type=reference` | リクエストの `duration` を上書き（最大 10 秒）、`ref_images.type=image` と組み合わせ可能、デフォルトで入力動画の音声を引き継ぐ |
| `ref_videos.type=extend`    | リクエストの `duration` で課金；**`ref_images` と組み合わせ不可**                                     |
| `tag` フィールド                 | `@` で始まり、`prompt` 内に出現する必要あり                                                        |
| I2V / Omni 排他               | I2V フィールドと Omni フィールドは同時使用不可                                                        |

## レスポンス

<ResponseField name="code" type="integer">
  レスポンスステータスコード、成功時は 200
</ResponseField>

<ResponseField name="data" type="array">
  レスポンスデータ配列

  <Expandable title="配列要素">
    <ResponseField name="status" type="string">
      タスクステータス、初期提出時は `submitted`
    </ResponseField>

    <ResponseField name="task_id" type="string">
      タスクの一意識別子、タスクの状態と結果の照会に使用
    </ResponseField>
  </Expandable>
</ResponseField>

## リクエスト例

### ケース 1：テキストから動画（最小）

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "A serene forest at sunset with golden light filtering through the trees."
}
```

### ケース 2：テキストから動画（完全パラメータ）

```json theme={null}
{
  "model": "skyreels-v4-std",
  "prompt": "A serene forest at sunset.",
  "duration": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "prompt_optimizer": true
}
```

### ケース 3：画像から動画 - 先頭フレーム

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "Slowly pull the camera back to reveal the entire scene.",
  "first_frame_image": "https://example.com/start.png",
  "duration": 5
}
```

### ケース 4：画像から動画 - 先頭・末尾フレーム + 中間キーフレーム

```json theme={null}
{
  "model": "skyreels-v4-std",
  "prompt": "The King summons a flying dragon. @image1 The dragon lowers. The King mounts and flies away.",
  "duration": 8,
  "resolution": "1080p",
  "first_frame_image": "https://example.com/k2v_0.png",
  "end_frame_image":   "https://example.com/k2v_2.png",
  "mid_frame_images": [
    { "tag": "@image1", "image_url": "https://example.com/k2v_1.png", "time_stamp": 3 }
  ]
}
```

### ケース 5：Omni - 単一被写体参照

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "@Actor-1 walks through a neon-lit street at night.",
  "ref_images": [
    { "tag": "@Actor-1", "type": "image", "image_urls": ["https://example.com/actor.jpg"] }
  ]
}
```

### ケース 6：Omni - 複数被写体 + 動画モーション参照

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "The man from @image_1 imitates the move on the left in @video_1. The woman from @image_2 imitates the right side.",
  "duration": 5,
  "ref_images": [
    { "tag": "@image_1", "type": "image", "image_urls": ["https://example.com/a.png"] },
    { "tag": "@image_2", "type": "image", "image_urls": ["https://example.com/b.png"] }
  ],
  "ref_videos": [
    { "tag": "@video_1", "type": "reference", "video_url": "https://example.com/motion.mp4" }
  ]
}
```

<Warning>
  このケースは `ref_videos.type=reference` を使用するため、**リクエストの `duration` は参照動画の実際の長さで上書きされます**（上限 10 秒）。ここで `"duration": 5` を渡しても、最終的な動画長は参照動画に従います。
</Warning>

### ケース 7：Omni - グリッドコラージュ（grid）

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "Create a video showing how to make tomato and egg noodles based on @image1.",
  "ref_images": [
    { "tag": "@image1", "type": "grid", "image_urls": ["https://example.com/recipe_grid.png"] }
  ]
}
```

### ケース 8：Omni - 動画拡張（extend）

```json theme={null}
{
  "model": "skyreels-v4-fast",
  "prompt": "Video extended @video1, someone walks over and sits on the sofa.",
  "duration": 8,
  "ref_videos": [
    { "tag": "@video1", "type": "extend", "video_url": "https://example.com/source.mp4" }
  ]
}
```

### ケース 9：Omni - 声紋付き（音声同期）

```json theme={null}
{
  "model": "skyreels-v4-std",
  "prompt": "@Actor-1 speaks with a calm tone.",
  "ref_images": [
    {
      "tag": "@Actor-1",
      "type": "image",
      "image_urls": ["https://example.com/actor.jpg"],
      "audio_url":  "https://example.com/voice.mp3"
    }
  ]
}
```

<Note>
  **タスク結果の照会**

  動画生成は非同期タスクで、提出後に `task_id` が返されます。[タスク状態取得](/ja/api-reference/tasks/status) エンドポイントを使用して生成の進捗と結果を照会してください。
</Note>
