RunAPI 上の Vidu
ルートの選択
- 単発的なアーティファクトや結果を得るには、
runapiCLI に登録されたviduサービスを使用してください。インストール済みのコマンドカタログに表示されていない場合は、独自にコマンドをでっち上げるのではなく、停止してサービスがないことを報告してください。 - アプリ、バックエンド、ワーカー、ライブラリ、webhook パイプライン、本番コードベースには、直接 SDK で統合 に進んでください。本番ランタイムで CLI をシェルアウトして使用しないでください。
コントラクトの確認
認証後、インストール済みのコマンドカタログと選択した操作の現在のコントラクトを調査します。
runapi auth status > auth.json
jq -e '.authenticated == true' auth.json
runapi vidu --help
runapi vidu <operation> --help
curl --fail --location https://runapi.ai/docs/api/vidu/<operation>.md --output contract.md
認証が false の場合は、送信する前に停止してください。ユーザーに有効な RUNAPI_API_KEY を提供するよう依頼するか、runapi auth import-token --token - で標準入力からユーザー指定のキーをインポートします。インタラクティブなブラウザログインは、ユーザーが明示的に要求した場合のみ使用してください。<operation> はサービスヘルプからのみ選択してください。コマンドヘルプは、インストールされた操作、モデル、トップレベルのフィールド一覧に関して信頼できる情報源として扱います。その API リファレンスは、完全なリクエストスキーマ、ネストされたフィールド、条件付きルール、タスクの動作、レスポンスのバリアントに関して信頼できる情報源として扱います。2つの情報源が矛盾する場合は、推測せずに停止し、コントラクトの不一致を報告してください。
リクエストの構築
発見した操作コントラクトで受け入れられるフィールドのみを使用して、request.json を有効な JSON として作成します。選択したモデルと値について、該当するすべての条件付きルールをセットとして評価します。すべての必須フィールドを満たし、すべての禁止フィールドを省略し、解決できない矛盾があれば停止します。
実行前にネストされたオブジェクトと配列をトラバースします。発見したコントラクトで示されたすべての関係(一意性制約やネストされた値間の相互参照を含む)を満たします。
発見したローカルメディア入力(ファイル型フィールドやトップレベルのメディア URL フィールドを含む)については、エージェントが読み取り可能なローカルファイルパスを直接 request.json に記述します。CLI は宣言されたファイルフィールドを消費し、トップレベルのメディア URL フィールドのローカルパスをアップロードします。runapi files create は、ユーザーが再利用可能な URL を必要とする場合、Base64 を提供する場合、または発見したコントラクトが別個のアップロードを明示的に要求する場合にのみ使用します。
セマンティック不変条件:
- リモートメディアのフォーマット、サイズ、オーディオの長さは、生成プロバイダーによって非同期にチェックされます。
送信前にファイルを検証します。
jq empty request.json
実行
タスクの応答を待機する前に、正確に1回送信して永続化します。
runapi vidu <operation> --async --input-file request.json > task.json
task_id="$(jq -er '.id' task.json)"
単発的な結果の場合は、すぐに同じタスクを待機し、完全な JSON 応答を保存します。このブロッキング待機がデフォルトです。
runapi wait "$task_id" --service vidu --action <operation> > result.json
ユーザーがバックグラウンド実行、ポーリング、または webhook 統合を明示的に要求した場合にのみ、task.json の検証後に停止できます。タスク ID を報告し、成果物が完了したと主張しないでください。
検証
成功ステータスは成果物ではありません。発見した結果コントラクトに従って、完全な応答を読み取り検証します。非メディア結果の完全な内容を、JSON、テキスト、SRT、VTT など要求された正確な形式で保持します。
応答内のどこかにリストされている要求されたメディア成果物すべてについて、最初の URL のみを返すのではなく、すべてダウンロードします。ダウンロード前に、応答メタデータから期待される MIME タイプまたはファミリーを導出し、次に選択された出力フォーマット、次に API リファレンス内の videos、images、audios などの明確な結果フィールドから導出します。このスキルのカタログ宣言されたフォールバックファミリーは video/* です。それらのソースから単一の期待されるタイプまたはファミリーが確立できない場合のみ停止します。
ダウンロードしたすべてのファイルについて、空でないファイルと期待される MIME タイプまたはファミリーの両方を要求します。
curl --fail --location <deliverable-url> --output <downloaded-file>
for file in <downloaded-files>; do
expected_mime=<expected-MIME-or-family-pattern-for-this-file>
test -s "$file"
[[ "$(file --brief --mime-type "$file")" == $expected_mime ]]
done
要求された成果物が欠落している、空である、または予期しない MIME タイプを持つ場合は、完了を報告しないでください。Skill Conformance を Task Outcome とは別に記録し、サービスの障害によってこのレシピが遵守されたかどうかが隠されないようにします。
回復または停止
- リクエストの形状は最大1回のみ修正し、かつ発見したコントラクトまたは返された検証エラーが修正を特定している場合のみ修正します。
- 一時的な転送障害は最大1回のみ再試行し、かつタスクが作成されておらず、課金が発生しておらず、再試行が安全であることを確認できる場合のみ再試行します。
- 待機中にタイムアウトした場合、または
task.jsonが存在する状態で転送が失われた場合は、エラーを保持し、同じタスクに対してrunapi waitを最大1回再実行します。代替タスクを送信しないでください。 - 終端状態の RunAPI またはサービス障害が発生した場合は、タスク/エラーの証拠を保持して停止します。選択したモデルと機能を維持し、ユーザーの許可なしに別の有償リクエストを送信しないでください。
- コントラクトにリクエストの構築または検証に必要な情報が欠けている場合は、停止してコントラクトのギャップを報告してください。製品の欠陥を恒久的なスキルの回避策にしないでください。
SDK で統合
このルートはアプリケーションまたは本番コード統合にのみ使用します。以下の現在の RunAPI SDK リファレンスを開き、ターゲット言語と Vidu のパッケージを選択し、インストールコマンド、クライアントメソッド、リクエストタイプ、レスポンスタイプ、エラークラスをコーディング前に確認してください。発見した同じ製品コントラクトからリクエストを構築し、同じ成果物検証と停止ルールを適用します。本番コードから runapi をサブプロセスとして呼び出さないでください。
参考情報
- モデル概要、価格、レート制限: https://runapi.ai/models/vidu.md
- プロバイダー概要: https://runapi.ai/providers/vidu.md
- 全モデルカタログ: https://runapi.ai/models.md
- SDK 統合: https://github.com/runapi-ai/vidu-sdk
バリアント
vidu-q4-image-to-video: https://runapi.ai/models/vidu/q4-image-to-video.mdvidu-q4-reference-to-video: https://runapi.ai/models/vidu/q4-reference-to-video.md