ドキュメント

クイックスタート

1つのキー、1つのリクエスト形式で、すべての画像・動画モデルを。ジョブを送信し、ポーリングして、ファイルを取得します。

公開中モデルページのすべてのモデルが、このエンドポイントで動作します。画像も動画も1つのリクエスト形式で、各モデルのオプションと料金は/data/models.jsonにあります。
新機能言語モデルにも対応。GPT、Claude、Gemini、Grok、DeepSeek、Qwenなどを、OpenAI互換のPOST /v1/chat/completionsで利用でき、同じクレジットからトークン単位で課金されます。Chat Completionsをご覧ください。
ベースURLhttps://api.revana.si/v1
認証Authorization: Bearer <key>
送信POST /v1/generations
ポーリングGET /v1/generations/{id}
モデルGET /v1/models (キー不要):現在生成できるすべてのモデル
残高GET /v1/balance:キーのアカウントで使える金額
アップロードPOST /v1/uploads:コンピューター上の参照ファイル用のリンク
形式入力も出力もJSONです。料金は米ドルで、100クレジット = $1です。
機械可読/openapi.json · /llms.txt

認証

アカウントからキーを作成し、すべてのリクエストでBearerトークンとして送信します。キーはサーバー上で管理し、ブラウザやモバイルアプリには絶対に含めないでください。

生成を送信する

POSThttps://api.revana.si/v1/generations

モデルIDと、その input を送信します。レスポンスはすぐに、生成の id とステータス queued とともに返され、処理はバックグラウンドで行われます。

フィールド型説明
modelstring、必須モデルページにあるモデルID(例:seedance-2.5)。
inputobject、必須プロンプトと設定です。入力フィールドをご覧ください。不明なフィールドは拒否されます。
max_cost_usdnumber、任意この生成に支払う上限額で、最大は 100(既定値)です。これを超える価格のルートはスキップされ、残るルートがない場合、リクエストは 422 max_cost_exceeded を返します。
max_wait_sinteger、任意この秒数より時間がかかると見込まれるルートはスキップされます。経過後は新しいルートを試しませんが、すでに実行中のルートは(最大40分まで)完了でき、結果が納品された場合は課金されます。
Idempotency-Keyheader、任意最大200文字です。同じキーとボディを(タイムアウトや 503 の後に)再送すると、2つ目ではなく、同じ生成結果が返されます。同じキーで異なるボディを送ると 409 idempotency_conflict になります。

結果を取得する

GEThttps://api.revana.si/v1/generations/{id}

モデルごとのエンドポイントと完了webhookをお探しですか?リクエストID、ステータス/結果のURL、対応するfalのエイリアス、移行時の制限については、fal互換のキューAPIをご覧ください。

status が succeeded または failed になるまで数秒ごとにポーリングし、その後、output.urls のファイルをキーを使ってダウンロードします。最初のファイルは GET /v1/generations/{id}/content、画像モデルが複数を返す場合は /content/2、/content/3… です。画像は通常数秒、動画はモデルと長さによって、1分未満から数分かかります。

完了した生成:

入力フィールド

同じ名前がモデル間で共通して使われます。各モデルが受け付けるフィールドと値、およびその既定値は、モデルごとに/data/models.json(options、tasks)に掲載しています。モデルが対応していないフィールドや値がある場合、課金の前に 422 invalid_input でリクエストが拒否されます。

フィールド型用途
promptstring何を生成するか。テキストから画像、テキストから動画では必須です。
image_urlstring(URL)画像から動画の開始フレーム、または画像から画像で編集する画像。
end_image_urlstring(URL)最初と最後のフレームに対応するモデル向けの、最後のフレーム。
image_urlsstring[]参照画像。モデルの上限まで指定できます。
resolutionstring720p、1080p、2K…モデルの解像度のいずれか。
durationnumber動画の長さ(秒)。モデルが対応する長さのいずれか。
aspect_ratiostring16:9, 9:16, 1:1...
audiobooleanモデルが対応している場合に、動画と一緒に音声を生成します。料金が変わることがあります。
negative_promptstring避けたい内容。対応しているモデルのみ。
video_urlstring(URL)変換、延長、アップスケールするクリップ。長さが測定され、1秒あたりで課金されるモデルでは課金対象になります。
audio_urlstring(URL)トーキングアバターやリップシンクのモデルが動かす、声または音。
qualitystring品質ティアで価格が決まるモデルでの品質ティア(例:low、medium、high)。
seedinteger対応しているモデルでの、シード値。

Seedance 2.5の既定は、720p、5秒(4〜30)、16:9、音声なしで、次も受け付けます。

フィールド型用途
video_urlstring(URL)編集する4〜30秒のクリップ。結果は元の長さを保つため、duration は指定しないでください。
video_urlsstring[]参照クリップ。最大10本、合計30秒まで。その秒数は、動画入力のレートで課金されます。
audio_urlsstring[]参照用の音声。最大10本、合計30秒まで。

image_url は、正確な最初のフレームであるため、参照メディアとは組み合わせられません。より緩い視覚的な参照には image_urls を使います。end_image_url には image_url が必要です。メディアは、直接ダウンロードできる公開の https のURLである必要があります。

Nemesis

nemesis は、クリップを、あなた自身の人物、商品、場所で作り直します。クリップの動き、タイミング、カメラはそのままに、最大8枚の参照画像が演じます。結果は、クリップの長さと形を保ちます。料金は、Seedance 2.5の編集のレートに1秒あたり$0.02を加えたもの(480p、720p、1080pで$0.08、$0.17、$0.36)で、入力クリップの秒数と出力動画の分が対象です。

Scenario ALTERの手順に従います。クリップ自体を音声なしで編集し、そのうちの1フレームを、変更を加えた状態で描き直して最初の参照として使い、あとでクリップ自体の音声を戻します。複数の人物がいる場合、画像は、最初のフレームで人物が立っている位置に合わせて、左から右の順に対応づけられます。

フィールド型用途
video_urlstring(URL)、必須作り直す4〜30秒のクリップ。
image_urlsstring[]、必須1〜8枚の参照画像。
rolesstring[]画像ごとに1つ:person(既定)、product、location、look。
target_framebooleanレンダリングの前に、クリップの最初のフレームを、同じポーズ、サイズ、光のまま、変更を加えた状態で描き直し、最初の参照として送るため、髪、顔、服装が画像に忠実に保たれます。nemesis では既定でオン、nemesis-lite ではオフです。無料です。
guidestringnemesis-lite のみ(nemesis は常にクリップ自体を編集します)。clip(ターゲットフレームがある場合の既定):クリップ自体の映像に従います。people(ない場合の既定):人物が置き換えられ、背景は維持されます。scene:映るものすべてが、参照とプロンプトに由来します。
soundstringoriginal (nemesis では既定でオン):クリップ自体の音声が戻されます。none(nemesis-lite では既定):音声なし。
face_meshbooleannemesis-lite のみ。クリップ内のすべての顔をトレースし、新しい顔が表情、目、唇の動きを保てるようにします。guide: "people" では既定でオン、scene と clip ではオフです。オフにするには false を送信します。結果には表示されません。
resolutionstring480p、720p(既定)、または 1080p。
promptstring任意の指示。最大5000文字。

nemesis-lite では、誰も映っていないクリップを guide: "people" で送信すると、invalid_input で拒否され、課金されません。scene または clip で送信してください。

所要時間。まず、クリップが準備されます。nemesis ではターゲットフレームが描かれ、15〜40秒ほどです。nemesis-lite では声が分離され、各フレームが深度ガイドになり、8秒のクリップで約25秒、30秒のクリップで約1分半です。次に動画がレンダリングされ、待ち時間の大半はここです。480pの8秒のクリップで、約4〜7分かかります。完了するまで生成をポーリングしてください。

Nemesis Lite

nemesis-lite は、nemesis と同じ入力を受け付け、Wan 3.0でレンダリングします。より安い代わりに、顔や細部の忠実度が少し下がります。クリップは2〜15秒です。料金は、Wan 3.0のレートに1秒あたり$0.02を加えたもの(480p、720p、1080pで$0.07、$0.11、$0.19)で、入力クリップの秒数と出力動画の分が対象です。

生成オブジェクト

フィールド型説明
idstringポーリングに使う生成ID(gen_…)。
objectstring常に generation。
modelstringリクエストしたモデル。
statusstringステータスをご覧ください。
messagestringプロバイダーで結果を確認している間のみ:現在の処理内容。
quoted_usdnumber最も安いルート、つまり最初に試されるルートでの価格です。そのルートで作れず、より高価なバックアップのルートで作れた場合、課金額はそのルートの価格で、最大は reserved_usd です。
reserved_usdnumber残高から確保される金額です。ほかのルートを試した後でより高価なバックアップのルートが作成した場合に、この生成にかかりうる最大額です。差額は、確定時に解放されます。quoted_usd を超えて支払わないようにするには、max_cost_usd にそれを設定してください。より高価なバックアップはスキップされます。
outputobject | null成功時:urls。結果のファイルで(画像モデルは複数を返すことがあります)、width と height を持ちます。動画には duration_s と has_audio もあります。ファイルには有効期限があるため、早めにダウンロードしてください。
cost_usdnumber | null課金された金額。生成が成功すると設定され、失敗時は 0 です。
attemptsnumberフォールバックを含め、試されたルート。課金されるのは、成功したルートのみです。
errorobject | null失敗時:code、message、retryable。コンテンツの拒否の場合は reason もあります。生成が失敗した理由をご覧ください。
created_at, completed_atstringISO 8601のタイムスタンプ。

ステータス

ステータス意味
queued受付済み。ルートを待機中。
running生成中。ルートが失敗した場合、次のルートに移る間と、結果を確認している間(message を参照)は、ジョブは running のままです。
succeeded完了。output.urls にファイル、cost_usd に支払った金額が入ります。
failedすべてのルートが失敗したか、入力が拒否されました。課金はありません。

課金

  • 支払いは、1ドルあたり100のプリペイドのクレジットで行い、$10から$5,000までのパックで購入します。すべての価格は、クレジットの整数です。
  • 送信すると、reserved_usd が残高から確保されます。生成が失敗した場合は、その全額が解放されます。
  • 課金されるのは、生成が成功したときのみで、それを作成したルートに提示された価格です。通常は、quoted_usd の最初のルートです。バックアップが作成しなければならない場合は、費用が高くなることがあります。そのルートの価格、または、それより前に試したルートが供給元から課金された場合は、その試行にかかった費用に10%を加えた額のうち、どちらか高いほうです。reserved_usd を超えることはありません。
  • 月間のクォータや1分あたりの上限はありません。上限は、残高と max_cost_usd です。
  • 各モデルの料金は、そのページと料金表にあります。

残高

GEThttps://api.revana.si/v1/balance

キーが属するアカウントです。大量のバッチの前に確認してください。無料で、生成の制限にもカウントされません。

フィールド意味
available_usd新しい生成が確保できる金額です。reserved_usd がこれを超える送信は、402 insufficient_credits になります。
held_usd実行中の生成が確保している金額です。使われなかった分は、確定時に戻ります。
balance_usd利用可能な額と確保中の額の合計です。
spent_usd完了した生成に対して課金された金額、全期間。
*_credits同じ金額をクレジット(1ドルあたり100)で表示したものです。利用可能な額が実際より高く表示されないよう、丸めています。

参照ファイルのアップロード

POSThttps://api.revana.si/v1/uploads

参照は、公開の https:// リンクで渡します。自分のマシンにあるファイルは、アップロード用のリンクを依頼し、そこにバイトを送って、返されたリンクを使います。無料です。

フィールド意味
upload_url1時間以内に、PUT でここにファイルを送信します。ヘッダーは、upload_headers(その種類とサイズ)のとおりにしてください。それ以外は拒否されます。
urlapi.revana.si 上のファイルのリンクで、expires_at(14日間)まで有効です。キーは不要で、ファイルにリダイレクトされるため、リンクを取得できるものなら誰でも読み取れます。POST /v1/generations で参照として使います。ファイルは、その後まもなく削除されます。
idupl_…

画像(image/*)は30 MBまで、クリップ(video/*)は50 MBまで、音声(audio/*)は15 MBまでです。それより大きいファイルや別のファイルは、413 too_large または 400 invalid_request になります。

生成が失敗した理由

failed の生成には、error.code、依頼者に表示するために書かれた message、そして retryable があります。true は、あとで同じリクエストを再送すれば成功する可能性がある場合、false は、リクエスト自体を変更する必要がある場合です。失敗した生成は課金されません。

コード再試行可条件
content_policynoモデルが、プロンプトまたはメディアを拒否したか、生成物を差し止めました。reason がどのルールかを示します。sexual(NSFWまたはアダルトコンテンツ)、minors(子どもや10代)、copyright(著作物や第三者の素材、ブランド、キャラクター)、real_person(実在または著名な人物の肖像)、またはモデルが理由を示さない場合は other です。
invalid_inputno参照を読み取れなかった、画像を1枚送ったのにプロンプトが @Image2 を指している、またはモデルが拒否する値です。メッセージにどれかが示されます。
model_declinednoモデルが、画像や動画を作らずに言葉で回答しました。多くの場合、プロンプトが、送られていない必要なものを求めているためです。プロンプトでは、結果そのものを説明してください。
reference_changedno参照ファイルが、チェック後に変更されました。もう一度送信してください。
max_cost_exceededno実行できる唯一のルートの料金が、max_cost_usd を超えています。
model_busyyesこのモデルのすべてのルートが満杯でした。1分後に再試行してください。
model_unavailableyes現在、このモデルのジョブを受けられるルートがありません。
timeoutyesどのルートも、時間内に結果を返さなかったか、max_wait_s を過ぎました。
all_routes_failedyesすべてのルートが、ルート側の理由で失敗しました。

エラー

エラーはHTTPステータスコードとJSONのボディを使います:{"error": {"code": "...", "message": "..."}}。

HTTPコード条件
400invalid_requestボディがJSONでない、model または input がない、またはAPIが認識しないフィールドがあります。
401unauthorizedAPIキーがないか、無効です。
402insufficient_credits利用可能な残高が reserved_usd をまかなえません。チャージして再試行してください。
403account_disabledアカウントが一時停止中です。サポートに連絡してください。
403generation_not_enabledキーは料金の参照のみ可能で、まだ生成はできません。
404not_foundお使いのアカウントに、このIDの生成はありません。
409idempotency_conflictこの Idempotency-Key は、すでに別のボディで使用されています。
409not_ready生成が成功する前に、ファイルが要求されました。
413body_too_largeボディが1 MBを超えています。メディアはURLで送信してください。
422invalid_inputモデルが対応していないフィールド、値、または組み合わせ、あるいは読み取れないメディアです。課金はありません。
422max_cost_exceededすべてのルートの料金が、max_cost_usd を超えています。
422model_not_availableこのIDのモデルは、APIにありません。IDはモデルページにあります。
429rate_limited1つのアカウントから、同じ1秒間に多すぎるリクエストがありました(暴走ループへの対策で、クォータではありません)。Retry-After 秒待ってください。
429concurrency_limitアカウントで進行中の生成が、すでに上限に達しています。1つ完了したら再試行してください。
503busy一時的な負荷です。Retry-After 後に、同じ Idempotency-Key で再試行してください。
503model_unavailable現在、このモデルで稼働しているルートがありません。しばらくしてから再試行してください。
500server_errorこちら側で問題が発生しました。同じ Idempotency-Key で再試行しても安全です。

モデル一覧

すべてのモデルとそのオプション、料金は、/data/models.json にJSONとして公開されています。このサイトが表示に使っているのと同じファイルです。