Alibaba: HappyHorse 1.1
Alibaba HappyHorse 1.1は、文章の指示、一つの開始フレーム画像、最大9枚の参照画像から、音声付きの短い動画を生成します。メーカーのプロファイルは、動き、肌の細部、クリップ間のキャラクターの一貫性の改善を重視します。出力は24fpsの3〜15秒のMP4で、480p、720p、1080pを選べます。
モデルについて
この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。
Alibaba HappyHorse 1.1は、テキストから動画、最初のフレームの画像から動画、参照から動画という別名のプロファイルを持つ動画生成エディションです。メーカーは視覚的な細部、動き、クリップ間のキャラクター識別性、文字の安定性、映像と音声の同期の改善を重視しています。商品ショット、人物画像のアニメーション、小さなキャラクターシーンに使える、音を伴う短い動画が得られます。文章のコンセプト、正確な冒頭画像、複数のビジュアル参照のうち、何でシーンを定めるかに応じて入力モードを選びます。
テキストから動画では、被写体、場所、動作、構図、カメラ移動、音の意図を記述します。短い動作シーンなら、自転車の乗り手が川沿いのカフェで止まり、カメラが停めた自転車へ穏やかに近づく様子を示せます。短いクリップに合う動作にし、最後の瞬間を説明します。メーカーの現行テキストガイドは非中国語5,000文字または中国語2,500文字までとし、超過部分を切り捨てます。形容詞の繰り返しに埋めず、重要な被写体と動作が明確になるよう指示を構成します。
最初のフレームの画像から動画では、ちょうど1枚を冒頭に使います。その静止画に被写体、構図、意図したトリミングを整え、何を動かすか、カメラをどう変えるかを記述します。形式はJPEG/JPG、PNG、WEBP、最大20 MB、両寸法300ピクセル以上、アスペクト比1:2.5〜2.5:1です。出力は元画像の比率を保ちながら選択解像度の段階に近づけます。縦向きの結果は無関係なアスペクト比指示ではなく、適切な縦構図から始めます。
参照から動画は1〜9枚の画像を受け付けます。プロンプトは[Image 1]、[Image 2]以降を入力順の位置として使います。シーン画像がキャラクター素材と誤認されないよう、各参照の役割と関連する物体・人物を示します。参照ガイドはJPEG/JPG、PNG、WEBP、最大20 MB、最短辺400ピクセル以上とし、720p以上の鮮明な参照を推奨します。識別の細部がすでに失われた強圧縮画像は避けます。
複数参照のシーンでは、一つの画像の人物を別の画像の部屋に配置し、第三の画像のコートや商品を保つよう指定できます。同じ指示で相互作用とカメラを記述します。1.1参照プロファイルは被写体、シーンのスタイル、映画的な動きの安定性を強調しています。実際の結果で、意図した識別性、商品の印字、空間配置を確認します。複数画像で情報は増えますが、どの特徴が動画へ引き継がれたかはレビューが必要です。
メーカーは1.1生成モードに480p、720p、1080p、3〜15秒の整数秒、24fpsのMP4を挙げています。API応答はH.264符号化を示します。テキストと参照生成は16:9、9:16、1:1、4:3、3:4、4:5、5:4、9:21、21:9などの形を選べ、開始フレーム生成は入力画像に従います。使用先に合う形を選び、後から字幕やレイアウト要素を載せる余白を残します。意図した表示サイズで実際の構図を確認します。
モデルファミリーの出力には音が含まれます。演技や雰囲気に指示内で明確な役割を与え、対話、効果音、背景トラックを映像とともに確認します。長い台本を短いショットに詰め込まず、動作と間に収まる発話量にします。発話がある場合は、口の動き、話者の割り当て、実際の文言を確認します。プロンプト言語を受け付けることだけで、発音の保証や別の声参照入力が定まるわけではありません。
文書化されたメーカーのフローは非同期で、タスク識別子で処理を追跡し、成功結果から動画の場所を取得します。結果リンクとタスク照会の有効期間は24時間と文書化されています。完成クリップ、参照、プロンプトを修正記録として保存します。ガイドはシードと透かしの制御も文書化しています。固定シードは比較に役立ちますが、同一結果を保証しないとメーカーは明記しています。一つの設定ですべてのフレームが固定されると考えず、返された成果物を評価します。
HappyHorse 1.0と1.1は別のエディションです。1.1出力一覧は、1.0の720p・1080pに480pを追加し、1.1のモデルページは細部、動き、一貫性の向上を説明しています。別名のHappyHorse 1.0動画編集プロファイルには独自の入力と制限があり、1.1の編集モードとして黙って割り当てません。1.1のクリップ全体で識別性、動き、構図、文字、音を確認し、成功した指示の部分を保ちながら具体的に修正します。
Ailoot Ultra · 動画 POST /v1/videos alibaba/happyhorse-1.1
alibaba/happyhorse-1.1はじめに
Alibaba HappyHorse 1.1は、文章の指示、一つの開始フレーム画像、最大9枚の参照画像から、音声付きの短い動画を生成します。メーカーのプロファイルは、動き、肌の細部、クリップ間のキャラクターの一貫性の改善を重視します。出力は24fpsの3〜15秒のMP4で、480p、720p、1080pを選べます。
- 対応する入力
- テキスト
- 結果
- 動画
Ailootで利用可能 · 入力とメソッド
Ailoot Ultra · 動画 POST /v1/videos
- 入力の種類
text- 出力の種類
video- 出力形式
- mp4
- 出力数
- 最大 4 出力s
| フィールド | 種類 | 要件 | 値と制限 | デフォルト |
|---|---|---|---|---|
フィールドmodel | 種類string | 要件必須 | 値と制限 alibaba/happyhorse-1.1 | デフォルト— |
フィールドprompt | 種類string | 要件必須 | 値と制限 最小の長さ: 1 最大バイト数: 10,000 単位: UTF8 バイト | デフォルト— |
フィールドduration | 種類integer | 要件必須 | 値と制限 最小値: 3 最大値: 15 単位: 秒 | デフォルト— |
フィールドresolution | 種類string | 要件必須 | 値と制限 720p | デフォルト— |
フィールドaspect_ratio | 種類string | 要件必須 | 値と制限 16:9 | デフォルト— |
入力素材の組み合わせ
テキストから動画へ · 必須: prompt
メソッドのパラメータとライフサイクル
| パラメータ | 仕様 |
|---|---|
パラメータcontent_type | 仕様application/json |
パラメータrequired | 仕様model, prompt, duration, resolution, aspect_ratio |
パラメータother_options | 仕様false |
パラメータresolution | 仕様720p |
パラメータprompt_max_bytes | 仕様10000 |
パラメータduration_integer_range | 仕様3, 15 |
パラメータaspect_ratio | 仕様16:9 |
パラメータgenerate_audio | 仕様省略する必要があります(falseの指定ではありません)。AACを含みます |
パラメータmaterial_types | 仕様text |
パラメータadditional_properties | 仕様false |
メソッドのエイリアス: /v1/videos/generations, /videos, /videos/generations
ライフサイクル: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
作成は一度だけ行い、返されたIDを保存してください。
元のステータスをポーリングし、完了したすべてのアセットと長さを保持してください。
料金
最終料金の計算方法
表示料金は生成前の費用の見積もりです。最終請求額は、元の生成処理に記録された費用から計算されます。実測された出力時間や予測数量が、そのまま最終的な課金数量になるわけではありません。
料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。
- 高速モード
- 未指定 高速モードが選択されている場合
- Flex モード
- 未指定 flex モードが選択されている場合
- 最大推論量
- 未指定 推論量が最大で、調整に既定値(default)を使用する場合
比較用の推定料金
設定別の価格
各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。
| 設定 | 料金表 | 予測数量 | 課金単位 | 課金条件 | 料金 |
|---|---|---|---|---|---|
| 設定基本トークン料金 | 料金表基本料金 | 予測数量— | 課金単位— | 課金条件— | 料金 入力 · 入力トークン · 比較専用の見積もり — / 1K トークン 出力 · 出力トークン · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ読み取り · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ書き込み · 比較専用の見積もり — / 1K トークン 入力 · キャッシュ書き込み、1時間 · 比較専用の見積もり — / 1K トークン |
| 設定動画料金 | 料金表— | 予測数量— | 課金単位動画1秒あたり | 課金条件resolution: 1080p | 料金 出力 · 動画料金 · 比較専用の見積もり $0.2556 動画1秒あたり |
| 設定動画料金 | 料金表— | 予測数量— | 課金単位動画1秒あたり | 課金条件resolution: 720p | 料金 出力 · 動画料金 · 比較専用の見積もり $0.1976 動画1秒あたり |
| 設定生成費用の見積もり | 料金表— | 予測数量生成1回分の概算 | 課金単位— | 課金条件— | 料金 出力 · 推定生成コスト · 比較専用の見積もり $0.5928 生成前の見積もり この見積もりは追加料金ではなく、完了した生成処理に対する固定料金でもありません。 |
Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →
参考料金の詳細
モデル単位の参照料金表は、メソッド選択、見積もり、課金を変更しません。実際の課金には、選択したAilootメソッドの料金を適用します。
動画設定の料金参照情報
設定別の価格
各料金を表示された条件と照合してください。選択肢となる設定の各組には、いずれか1つの料金を適用します。
| 設定 | 課金条件 | 料金 |
|---|---|---|
| 設定動画料金 | 課金条件resolution: 720p | 料金 出力 · 動画料金 $0.1976 動画1秒あたり 表示されている設定の公開料金の参照値です。最終請求額には、実際に課金された設定が適用されます。 |
| 設定動画料金 | 課金条件resolution: 1080p | 料金 出力 · 動画料金 $0.2556 動画1秒あたり 表示されている設定の公開料金の参照値です。最終請求額には、実際に課金された設定が適用されます。 |
リクエスト例
Ailoot Ultra · 動画
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "alibaba/happyhorse-1.1", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 3, "resolution": "720p", "aspect_ratio": "16:9"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
結果を受け取って保存
Ailoot Ultra · 動画
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
ジョブのステータスを確認
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_STATUS_URL'
import json
from pathlib import Path
from urllib.parse import quote
r=json.loads(Path('result.json').read_text())
if not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')
Path('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))
PY_STATUS_URL
curl --fail-with-body --silent --show-error "$(cat status-url.txt)" \
-H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path('status.json').read_text())
print(json.dumps(r,ensure_ascii=False,indent=2))
print('Keep the complete JSON and response headers; do not resubmit an unknown creation.')
PY_RESULT
その他のコンテンツ取得
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path('status.json').read_text())
if r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')
if not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')
urls=[]
for i,u in enumerate(r.get('data',[])):
if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')
urls.append((str(i),u))
for label,path in urls:
u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)
if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')
target=Path('owned-'+label+'.bin')
subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)
print('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')
PY_ASSETS
完了した結果をすべて保存
完了した動画や返されたファイルをすべて保存し、実際に返されたすべてのアセットURLから取得してください。
完了したdata[]には、所有するすべての署名付きコンテンツURLが含まれます。返された各URLを取得するか、コンテンツエンドポイントでindexに実際の出力インデックスを指定してください。元のジョブが失敗した場合、charge_pending_checkが返されることがあります。ジョブを作り直さず、その元のジョブを確認してください。
元のレスポンスを確認する場合
既存の元のジョブを読み取ってください。結果不明の送信を決して再実行しないでください。
最大出力数: 4.
レスポンスのフィールド
| フィールド | 種類 | 意味 |
|---|---|---|
フィールドid | 種類string | 意味— |
フィールドobject | 種類string | 意味— |
フィールドmodel | 種類string | 意味— |
フィールドstatus | 種類string | 意味— |
フィールドdata[] | 種類signed content URL | 意味— |
フィールドcharge_pending_check | 種類boolean | 意味— |
フィールドerror.code | 種類string | 意味— |
フィールドerror.message | 種類string | 意味— |
フィールドoperation_id | 種類string | 意味HTTP503 result_pending_checkの元のステータス/コンテンツのレスポンス:idは同じ元の公開動画IDです。 |
フィールドerror.type | 種類string | 意味HTTP503のresult_pending_checkではserver_errorが返されます。 |
エラーと次の手順
| レスポンス | 条件 | 次の手順 |
|---|---|---|
レスポンス400 · invalid_request_error | 条件動画プロファイルの解析前に、未加工のリクエスト本文の読み取りに失敗します | 次の手順返されたレスポンスを保持し、読み取りできないリクエスト本文を修正してください。 |
レスポンス422 · price_unavailable | 条件正確な動画プロファイルを解析できないか、解析済みの完全なプロファイルに一致する利用可能な料金表がありません | 次の手順レスポンスを保持してください。利用が許可された正確で完全なプロファイルと、その公開料金表を使用します。この分岐は、プロバイダーへの送信前に実行されます。 |
レスポンス409 · video_not_ready | 条件元の結果のコンテンツはまだ利用できません | 次の手順元の返却IDをポーリングし、Retry-Afterに従ってください。 |
レスポンスserver_error | 条件返されたレスポンスは、操作または結果の確認が必要であることを示しています | 次の手順最初に返された操作/タスク ID、リクエストヘッダー、レスポンスを保存し、その元の操作に対してサポートされている読み取りを継続してください。作成リクエストを再送しないでください。 |
レスポンス503 · result_pending_check | 条件元のステータス/コンテンツをGETで取得する際、タスクが未公開で、元のジョブがfailed/cancelled/expiredのいずれでもなく、ローカル状態がunknownまたは元のジョブのステータスがcompletedである場合。 | 次の手順元のidとoperation_id(同じ公開動画ID)、レスポンス、ヘッダーを保持してください。元のステータス/コンテンツだけを読み取ってください。新しい生成リクエストは決して送信しないでください。 |
エイリアス
モデルのエイリアス
Ailoot Ultra alibaba/happyhorse-1.1
メソッドパスのエイリアス
/v1/videos/generations, /videos, /videos/generations
関連する呼び出し用ID
FAQ · Alibaba: HappyHorse 1.1
- 利用できる入力と結果は何ですか?
POST /v1/videos·alibaba/happyhorse-1.1:text→video- リクエストはどの項目を使用しますか?
POST /v1/videos·alibaba/happyhorse-1.1:model,prompt,duration,resolution,aspect_ratio- どの制限が適用されますか?
POST /v1/videos·alibaba/happyhorse-1.1:duration.minimum:3;duration.maximum:15