モデル

sora-2

Markdown · JSON

sora-2

Sora 2 は、テキストや参照画像から、会話、効果音、背景音を同期させた動画を生成します。標準プロファイルは映像表現の探索やコンセプト映像に対応し、再利用可能な人間以外のキャラクター、延長、対象を絞った動画編集には、それぞれ開発元の専用ワークフローがあります。

モデルについて

この説明はモデルの機能を紹介するものです。Ailootで利用できる入力、出力、オプションは、選択したメソッドごとに以下に記載されています。

Sora 2 は、文章によるシーン説明や参照画像から動きのあるクリップを作る、OpenAI の動画・音声生成モデルです。映像の連続した動きとともに、同期した発話、効果音、背景音を生成します。標準の Sora 2 プロファイルは、映像表現の探索、コンセプト開発、試作、ラフ編集向けに位置付けられています。Sora 2 Pro は、より高い映像忠実度と高解像度での仕上げを目指す別の版です。

見えて、聞こえるショットを描写する

開発元のプロンプトガイドでは、構図、被写体、動作、場所、光を軸に依頼を組み立てています。シーン全体の映像スタイルを統一し、動きを明確な段階に分けて説明してください。独自の商品コンセプトなら、小さな機械が作業台の上で 1 回転し、カメラがゆっくり近づく場面を、柔らかな窓の光と控えめなモーター音とともに描けます。視聴者に注目してほしい点と、動作の終わり方を明示します。

各ショットのカメラの動きと被写体の動作を、理解しやすく保ってください。複雑なシーケンスは、構図、動作、照明をそれぞれ指定したショット単位に分けられます。複数のクリップを 1 つのシーケンスにする場合は、被写体の細部と色調を共通にします。ガイドでは、一般に短いショットのほうが指示に忠実になりやすく、同じプロンプトを繰り返し生成しても異なるテイクになると強調しています。

モデルの発表では、リアル、映画的、アニメの各スタイルを含め、物理的な挙動とショット間の連続性の改善が説明されています。これらは、指示して確かめるべき目標能力です。最初のフレームが自然に見えるだけでシーケンス全体も一貫すると考えず、動き、物体同士の接触、比率、連続性を確認してください。動作が不明瞭なら単純化し、目に見える始まりと終わりを設定します。

会話と音を分けて指示する

せりふは映像の説明と分けて指定し、話者のラベルを一貫させます。会話は、動作と予定するクリップの長さに収まる短さにしてください。2 人のキャラクターが登場するアニメーションなら、短いショットに長い演説を詰め込むより、短い質問と回答を交互にします。ガイドでは、複雑で長い会話はテンポと同期を乱すおそれがあると注意しています。

小さな動作の音、室内の環境音、周囲の現象が生むリズムなど、シーンに合った音の環境を説明してください。どの音を動作に合わせるかを明示します。生成された発話と効果音を映像と一緒に聞き、話者の割り当て、言葉、タイミングを確認します。同期した音声は生成クリップの一部であり、別のテキスト回答ではありません。

サイズ、長さ、画像を使った冒頭

標準モデルで文書化されている出力サイズは、縦向きの 720×1280 と横向きの 1280×720 です。Pro プロファイルの高解像度サイズを、標準 Sora 2 の仕様として扱わないでください。サイズと長さは明示的なリクエスト設定です。プロンプトに別のサイズを書いたり、より長い映像を求めたりしても、その設定は変わりません。生成リファレンスには 4 秒、8 秒、12 秒のクリップ設定が記載されているため、ショットの準備では短く明確な動きの単位を選びます。拡張された開発元のワークフローには、16 秒と 20 秒のクリップ設定も記載されています。

参照画像が最初のフレームの基準となり、テキストでその後の展開を説明します。開発元は JPEG、PNG、WebP の参照画像に対応し、画像を対象動画のサイズに合わせることを求めています。冒頭の画像で被写体、環境、構図を整え、その後の具体的な動きを指示してください。これは開始フレームの参照であり、クリップ全体のすべての細部が一致する保証ではありません。

再利用可能な人間以外のキャラクター

拡張された開発元のワークフローでは、動物、マスコット、物体の短い参照動画から、再利用可能なキャラクターアセットを作れます。準備ガイドは、長さがおよそ 2〜4 秒、解像度が 720p〜1080p、アスペクト比が 16:9 または 9:16 の MP4 クリップを求めています。元動画と出力のアスペクト比を合わせると、引き伸ばされた見た目を避けやすくなります。1 回の生成で参照できるキャラクターは最大 2 つです。

キャラクター識別子を保持し、プロンプトにその名前を記載してください。識別子を渡すだけでは、ガイドが示す準備を満たしません。画像を使った生成にはキャラクターアセットを併用できますが、動画の延長では使えません。開発元は標準で人間に似たキャラクターのアップロードをブロックし、文書化された API フローでは人間の顔を含む参照画像を拒否します。Sora アプリの個人キャラクター機能は、別の製品ワークフローです。

完成したクリップを延長、編集する

延長では、完成した元動画と続きのプロンプトを受け取り、元クリップ全体を、動き、カメラの方向、シーンの連続性に関するコンテキストとして使います。ガイドには、1 回の延長で最大 20 秒を追加できると説明されています。文書化されている延長の入力は元動画とテキストで、このモードでは追加のキャラクターや画像の参照を使えません。つながりなく無関係なシーンを導入するのではなく、既存の動作がどう続くかを説明してください。

動画編集は、既存のクリップへの明確な変更を対象とします。対象を絞った修正では、ショットの残りを保ちながら物体の色やシーンの色調を変えられます。開発元のガイドは、一度に 1 つの明確な変更を行うことを勧め、生成済み動画の編集と、別の利用条件がある任意の映像のアップロードを区別しています。完成した元動画を残し、次の編集の前に必要な修正を正確に指定してください。

レンダリングジョブと完成動画

文書化された開発元の動画フローは非同期です。送信されたジョブは、完了または失敗する前に、待機中や処理中の状態になる場合があります。完了したジョブからは MP4 動画が得られ、サムネイルとスプライトシートのアセットはプレビューや一覧表示に使えます。ジョブの識別情報を、プロンプト、参照素材、返されたアセットと関連付けて保持してください。最初のジョブ応答は、再生可能な完成動画ではありません。

通常のダウンロードワークフローでは、ダウンロード URL の有効期間は 1 時間と説明されています。拡張されたバッチワークフローでは、安定した項目識別子とアップロード済み参照素材を使って独立した JSON レンダリングリクエストを用意し、各ショットに結果を対応付けます。その完成アセットには最大 24 時間という別のダウンロード期間があります。完成したクリップを速やかに保存し、採用テイクとみなす前に実際の映像と音を確認してください。

開発元が文書化している API のコンテンツ制限では、18 歳未満の視聴者にも適した素材を求め、著作権で保護されたキャラクターや音楽、実在する人物の生成を拒否します。それに沿ってシーンと参照素材を用意してください。モデルが直接返す結果は音声付きの動画であり、生成した静止画、対話ツールの応答、長さ無制限の映画ではありません。映像コンセプトを発展させる際は、標準モデルの正確な識別情報と、採用した元クリップを保持します。

Ailoot Ultra · Chat Completions POST /v1/chat/completions sora-2

sora-2

その他 /sora-2

はじめに

Sora 2 は、テキストや参照画像から、会話、効果音、背景音を同期させた動画を生成します。標準プロファイルは映像表現の探索やコンセプト映像に対応し、再利用可能な人間以外のキャラクター、延長、対象を絞った動画編集には、それぞれ開発元の専用ワークフローがあります。

対応する入力
テキスト
結果
json · sse

Ailootで利用可能 · 入力とメソッド

Ailoot Ultra · Chat Completions POST /v1/chat/completions
入力の種類
text
出力の種類
json, sse
出力形式
JSONまたはtext/event-stream
フィールド種類要件値と制限デフォルト
フィールドmodel種類string要件必須値と制限
sora-2
デフォルト—
フィールドmessages種類message[]要件必須値と制限デフォルト—
フィールドmessages[].role種類string要件必須値と制限デフォルト—
フィールドmessages[].content種類string要件必須値と制限デフォルト—
フィールドstream種類boolean要件任意値と制限デフォルトfalse
入力素材の組み合わせ

owned_text_messages

メソッドのパラメータとライフサイクル
パラメータ仕様
パラメータcontent_type仕様application/json
パラメータrequired仕様model, messages
パラメータmaterial_types仕様text
パラメータmessages仕様roleとリテラル文字列のcontentを含むメッセージ配列
パラメータfile_material仕様実際のUTF-8素材は、リテラル文字列のcontentとして挿入できます。ファイル参照を意味するものではありません。
パラメータoptional_controls仕様stream

ライフサイクル: synchronous_json_or_sse

料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード
未指定 高速モードが選択されている場合
Flex モード
未指定 flex モードが選択されている場合
最大推論量
未指定 推論量が最大で、調整に既定値(default)を使用する場合

Ailootの料金

設定別の価格

設定料金表料金
設定トークンの基本単価料金表基本料金料金
入力 · 入力トークン $0 / 1K トークン
出力 · 出力トークン $0.2 / 1K トークン
入力 · キャッシュ読み取り $0 / 1K トークン
入力 · キャッシュ書き込み $0 / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →

リクエスト例

Ailoot Ultra · Chat Completions

curl · 完全な JSON レスポンスPython SDK · 完全な JSON レスポンスcurl · SSE ストリームを保存する
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":false}')

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/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
from pathlib import Path
print(Path("result.json").read_text(encoding="utf-8"))
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="sora-2", messages=[{"role":"user","content":"hello"}], stream=False)
import json
from pathlib import Path

data = result.to_dict(mode="json")
Path("result.json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
print(json.dumps(data, ensure_ascii=False, indent=2))
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"sora-2","messages":[{"role":"user","content":"hello"}],"stream":true}')

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/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.sse

結果を受け取って保存

Ailoot Ultra · Chat Completions

JSONまたはtext/event-stream

完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

JSONまたはSSEの完全なバイト列、レスポンスヘッダー、返された使用量、提供されたすべての結果フィールドを保持してください。モデル固有の出力種別は断定しません。

元のレスポンスを確認する場合

元のレスポンスと試行の識別情報を保持してください。新しいジョブのポーリングや再送信ができるとは判断しないでください。

レスポンスのフィールド
フィールド種類意味
フィールドcomplete response JSON種類object意味モデル固有の結果種別を想定せず、返されたすべてのフィールドを保持してください。
フィールドSSE data events種類stream意味返されたイベントと終端マーカーをすべて保持してください。テキストフィールドだけを抜き出さないでください。

エイリアス

モデルのエイリアス

Ailoot Ultra sora-2

メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

関連する呼び出し用ID

sora-2

Ailoot Ultra · Anthropic メッセージ POST /v1/messages sora-2

sora-2

その他 /sora-2

はじめに

Sora 2 は、テキストや参照画像から、会話、効果音、背景音を同期させた動画を生成します。標準プロファイルは映像表現の探索やコンセプト映像に対応し、再利用可能な人間以外のキャラクター、延長、対象を絞った動画編集には、それぞれ開発元の専用ワークフローがあります。

対応する入力
テキスト
結果
json · sse

Ailootで利用可能 · 入力とメソッド

Ailoot Ultra · Anthropic メッセージ POST /v1/messages
入力の種類
text
出力の種類
json, sse
出力形式
JSONまたはSSE
フィールド種類要件値と制限デフォルト
フィールドmodel種類string要件必須値と制限
sora-2
デフォルト—
フィールドmessages種類message[]要件必須値と制限デフォルト—
フィールドmessages[].role種類string要件必須値と制限
user, assistant
デフォルト—
フィールドmessages[].content種類string要件必須値と制限デフォルト—
フィールドmax_tokens種類integer要件必須値と制限デフォルト—
フィールドstream種類boolean要件任意値と制限デフォルトfalse
入力素材の組み合わせ

テキスト · UTF-8テキスト

messages[].contentの文字列

メソッドのパラメータとライフサイクル
パラメータ仕様
パラメータcontent_type仕様application/json
パラメータrequired仕様model, messages, max_tokens
パラメータoptional_controls仕様stream
パラメータmaterial_types仕様text
パラメータtext_file_material仕様実際のUTF-8文書を読み、その本文を指定された入力またはメッセージ内容の文字列に入れてください。

ライフサイクル: synchronous_or_streamed

料金

料金情報はリクエストの機能を追加しません。対応するパラメーターは選択したメソッドに記載されています。

高速モード
未指定 高速モードが選択されている場合
Flex モード
未指定 flex モードが選択されている場合
最大推論量
未指定 推論量が最大で、調整に既定値(default)を使用する場合

Ailootの料金

設定別の価格

設定料金表料金
設定トークンの基本単価料金表基本料金料金
入力 · 入力トークン $0 / 1K トークン
出力 · 出力トークン $0.2 / 1K トークン
入力 · キャッシュ読み取り $0 / 1K トークン
入力 · キャッシュ書き込み $0 / 1K トークン
入力 · キャッシュ書き込み、1時間 — / 1K トークン

Ailootはリクエスト前に見積額を確保します。結果の取得後、実測使用量に基づいて最終料金を精算します。ストリーミング時の精算には最終の使用量記録を使用します。金額の確保と精算の仕組み →

リクエスト例

Ailoot Ultra · Anthropic メッセージ

必要最小限の完全な JSON ボディcurl · ご自身の UTF-8 ドキュメントを使用するPython · 結果全体を保存する
{
  "model": "sora-2",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'sora-2', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

結果を受け取って保存

Ailoot Ultra · Anthropic メッセージ

JSONまたはSSE

完了した結果をすべて保存

返された完全なレスポンス、ファイル、コンテンツ部分をすべて保存してください。

すべてのコンテンツブロック、思考署名、実際のツール利用IDを保持してください。SSEのすべてのブロック差分を組み立てます。最初のテキストブロックだけでは完全な出力になりません。

元のレスポンスを確認する場合

リクエスト/応答IDとヘッダーを保持してください。テキストジョブを取得する汎用URLは提供されません。

レスポンスのフィールド
フィールド種類
フィールドid種類string
フィールドmodel種類string
フィールドcontent[]種類text|thinking|tool_use|other content block
フィールドstop_reason種類string|null
フィールドusage種類object
エラーと次の手順
レスポンス条件次の手順
レスポンス400 · invalid_request_error条件必須フィールド、素材の表現形式、またはパラメーター値が不正です次の手順新しい生成リクエストを送る前に、指定されたフィールドを修正してください。

エイリアス

モデルのエイリアス

Ailoot Ultra sora-2

メソッドパスのエイリアス

上記に表示されたメソッドパスを使用してください。

関連する呼び出し用ID

sora-2

FAQ · sora-2
利用できる入力と結果は何ですか?

POST /v1/chat/completions · sora-2: text → json, sse

POST /v1/messages · sora-2: text → json, sse

リクエストはどの項目を使用しますか?

POST /v1/chat/completions · sora-2: model, messages, stream

POST /v1/messages · sora-2: model, messages, max_tokens, stream

詳細を見る

AilootをClaude Code、OpenCode、Hermes、自分のアプリに接続しましょう。

企業とそのプロジェクト群

企業とそのプロジェクト群:数百万の顧客、毎月数十億規模の売上。

トークンを割引価格で購入。

継続利用にサブスクリプション割引。プロモコードでトークン購入が最大50%割引。

サブスクリプション
定期的なリクエストに合う割引プランを選びましょう。
最大50%のプロモコード
購入時にコードを入力すると、実施中のキャンペーンに沿って価格を再計算します。
支出を履歴で確認
各リクエストのモデル、トークン、金額が保存されます。

サブスクリプションを選ぶ · モデルの価格を見る

販売する製品に、 APIを組み込みましょう。

SaaS、アプリ、ボットをAilootの公式サービス提供条件とライセンス契約に基づいて接続できます。再販にはリセラーライセンスを申請できます。

商用アプリ
サービスの有料機能に、文章、画像、動画、音声の生成を組み込めます。
リセラーライセンス
プロジェクトの説明とアクセスの仕組みをお送りください。利用・再販条件の書面を申請できます。
サイトで契約文書を確認
接続前にサービス提供条件、ライセンス契約、データ処理ポリシーを読めます。

リセラーライセンスを申請 · サービス提供条件とライセンス契約