テーマ
言語

メディア生成

POST /api/media/generate — 画像、動画、TTS、音楽、3D の非同期生成。パラメーターは model、prompt、opts です。GET /api/media/jobs/{id} でポーリングします。

非同期メディア生成: 画像、動画、ボイスオーバー(TTS)、音声テキスト変換、音楽、3D。タスクを作成して結果をポーリングします。モデルの完全なリストは media-models catalog にあり、webhook、エラー、課金については webhook section を参照してください。

POSThttps://getvibeapi.com/api/media/generate
GEThttps://getvibeapi.com/api/media/jobs/{id}

パラメーターを作成

パラメータータイプ説明
modelreq.stringメディアモデル名(例:veo-3.1 または gpt-image-2)です(カタログを参照)。
promptreq.stringテキストによる説明。
optsobject追加の生成オプション(モデルによって異なります): resolution、duration など。

作成とポーリング

作成すると { ok: true, jobId, status: "processing" } を含む 202 が返されます。status: "success" になるまで GET /api/media/jobs/{jobId} をポーリングし、その後 resultUrls を取得します。

# 1. create a generation job
curl https://getvibeapi.com/api/media/generate \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1",
    "prompt": "a cat on a skateboard, slow motion"
  }'
# → {"ok":true,"jobId":"...","status":"processing"}
請求は実際の生成量(解像度、長さ)に基づきます。モデルが利用できない場合やリクエストが拒否された場合、レスポンスにはok: falseが付属し、課金はありません。サイト上の価格は目安です。正確な請求額は、受理された各レスポンスのx-pv-cost-rubヘッダーで返されます。ストリームのボディはデフォルトでは変更されません。そのコストをそのプロトコルの最終的なusageイベントに追加するにはx-pv-cost: 1を送信してください。

詳細パラメータ(opts)

modelとpromptに加えて、optsで追加のオプションを渡すことができます。そのセットはモデルによって異なります。完全な機械可読なコントラクトはGET /api/model-capabilities(特定のモデルの場合はGET /api/model-capabilities/{model})で確認できます。

よく使われる高度なパラメータ
パラメータータイプ説明
aspect_ratiostringAspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4.
durationstring|number動画の長さ(秒)(5、10、15)。
resolutionstringResolution: 480p, 720p, 1080p, 4K.
image_urlstring (URL)I2V / 画像to画像用のソース画像。
negative_promptstring生成から除外するもの (qwen-image、wan-2-7)。
guidancenumberGuidance scale — プロンプトへの追従度(flux-2、qwen-image、seedance)。
seednumber再現可能な結果を得るためのシード値(flux-2)。
stabilitynumber安定性 0〜1(hailuo、happyhorse、seedance、TTS)。
camerastringカメラモーション(例:「pan left」)(kling-3.0、hailuo)。
first_frame_urlstring (URL)First frame for I2V (kling-3.0, wan-2-7).
last_frame_urlstring (URL)I2V 用の最終フレーム (seedance、kling-3.0、wan-2-7)。
reference_imagestring (URL)スタイル/キャラクター参照(happyhorse)。
similarity_boostnumberボイス類似度 0〜1 (ElevenLabs TTS)。
speednumber読み上げ速度 0.5〜2(ElevenLabs TTS)。
すべてのパラメータは、特に明記されていない限り任意です。不明なパラメータは無視されます。型、範囲、例を含む完全なリストは GET /api/model-capabilities/{model} レスポンスにあります。

自分のファイル: リンクの代わりに base64

URLオプション(image_url、input_urls、mask_urlなど)はプロバイダーが取得するリンクであるため、公開されたhttps://アドレスのみを受け付けます。これらのフィールドのいずれかにインラインのdata:image/...;base64,…文字列を指定すると、400で拒否されます。

自分のファイルを送信するには、代わりに対応する*_base64フィールドを使用してください。サービスがバイトを保存し、公開して、結果のリンクをプロバイダーに渡します。1リクエストあたりinput_base64で最大16ファイルまでです。

インラインファイル
パラメータータイプ説明
image_base64stringソース画像。image_url を置き換えます。
mask_base64stringインペイントマスク(image/* のみ)。mask_url を置き換えます。
input_base64string[]image-to-image およびマルチ入力用の参照。input_urls を置き換えます。
audio_base64stringソース音声。audio_url を置き換えます。
video_base64stringソース動画です。video_url を置き換えます。
値はプレフィックスを含む完全な data:image/png;base64,… 文字列です — ファイルタイプはそこから読み取られます。

リクエストの形式: strict、quote_id、max_price_rub

POST /api/media/generate と POST /api/media/price は同じボディを受け付けるため、見積もりを取得してからそのまま送信できます。他のトップレベルフィールドはありません。未知のフィールドは、strict の有無にかかわらず、両方のエンドポイントで 400 と、そのフィールド名を示すコード unknown_field (field, fields) とともに拒否されます。生成パラメーターは opts 内に記述します。

トップレベルフィールド
パラメータータイプ説明
modelreq.stringパブリックなモデル ID、またはそのルートのいずれか(base:alias)。
promptstringテキスト。モデルの操作で必要な場合にのみ必須です。
optsobjectモデルのオプション。正確なスキーマ: GET /v1/model-capabilities/{model} の operations[].requestJsonSchema。
strictbooleanStrict mode(またはヘッダー x-getvibe-strict: 1)では、記述どおりに正確に実行されないリクエスト(パラメータが削除される、値が上限に調整される、モデルの契約外のキーが含まれるなど)は、見積もりや課金が行われる前に、422 strict_validation_failed と violations リストを伴って拒否されます。モデルが受け付けて無視する仕様のフィールド(source-length モデルでの duration など)は違反ではなく、param_ignored 警告として返されます。
quote_idstringPOST /api/media/price で得られる mq_…。ジョブはその価格でのみ実行されます。古い、使用済み、または再ルーティングされた見積もりは、何かが実行される前に 409/422 で拒否されます。
max_price_rubnumberこの1件のジョブに対するアカウント通貨での上限です。見積もりがこれを上回る場合:422 media_max_price_exceeded となり、何も実行されません。従量課金のジョブがこの上限を超えて課金されることはありません。
webhook_urlstring署名付き完了通知を受け取るパブリックな https URL。

id によるファイル(Files API)

任意のソースファイルは 3 つの方法で送信できます。リンクとして(image_url、audio_url、video_url…)、インラインバイトとして(image_base64、audio_base64、video_base64…)、または POST /v1/files で作成した自分のファイルの id として。id フィールドは各操作の requestJsonSchema に記載されており、strict モードでも受け付けられます。

パラメータータイプ説明
image_file_idstringimage_url の代わりに使用します。
audio_file_idstringaudio_url の代わりに使用します。
video_file_idstringvideo_url の代わりに使用します。
mask_file_idstringmask_url の代わりに使用します。
first_frame_file_id / last_frame_file_idstringInstead of first_frame_url / last_frame_url.
input_file_idsstring[]input_urls に追加されます。
reference_*_file_idsstring[]Appended to reference_image_urls / reference_audio_urls / reference_video_urls.

入力ファイルの長さに応じて課金される動画

出力長がアップロードされたトラックに従うモデル(kling-ai-avatar、omnihuman-v2、omnihuman-2-0、omnihuman-v1.5、omnihuman-1-5、volcengine-lipsync(audio)、kling-motion-control、wan-animate、topaz-video-upscale、p-video-edit(video)、lipsync-2-pro、sync-3、react-1(両方の入力))では、/api/media/price と /api/media/generate の max_price_rub による事前チェックで、サーバー側でそのファイル(link、data: URI、base64、または *_file_id)の長さを測定し、測定した秒数に基づいて料金を計算します。レスポンスには sourceSeconds(リップシンクの場合は outputSeconds)が含まれ、estimateReason には長さが測定されたことが示されます。ファイルを読み取れない場合、料金の基準は従来どおり(1秒、カタログの推定値、またはルートの最大値)のままとなり、estimateReason にその旨が示されます。請求額は、1秒あたりの料金 × 実際にレンダリングされた秒数で計算され、max_price_rub を超えることはありません。これらのモデルでは opts.duration は受け付けられますが無視され、param_ignored 警告が返されます。

ボイスクローニング

POSThttps://getvibeapi.com/api/media/voices
GEThttps://getvibeapi.com/api/media/voices
POSThttps://getvibeapi.com/api/media/voices/{voice_id}/samples
DELETEhttps://getvibeapi.com/api/media/voices/{voice_id}

Create: { name, consent: true, engine, audio_url | audio_base64 } or several recordings samples: [{ audio_url } | { audio_base64 }, …] (engine: "elevenlabs" only). An ElevenLabs voice is used by voice-clone-tts and by the Voice Changer (elevenlabs-voice-changer). Appending recordings to an ElevenLabs voice is free. Every recording is downloaded and measured before the supplier is called: a refusal changes and charges nothing.

制限とエラーコード
パラメータータイプ説明
one recording≤ 10 MBwav/mp3, up to 60 s. Larger: 422 voice_sample_too_large / voice_sample_invalid.
recordings per voice≤ 25すでに追加済みのものをカウントします。詳細: 422 voice_samples_limit。
voice length≤ 300 sすべての録音をまとめたもの。すでに追加されたものも含めてカウントされます。長すぎる場合: 422 voice_samples_limit。エンジンの最小値より短い場合: 422 voice_samples_invalid。
recordings size≤ 50 MB1 つのリクエストのすべての録音をまとめたもの。詳細: 422 voice_samples_too_large。
request body≤ 70 953 644 B録音データは base64(×4/3)で 50 MB、これに JSON が加わります。それより大きい場合は 413 payload_too_large(JSON、max_body_bytes 付き)となります。長いセットは …/samples で分割して送信するか、audio_url リンクとして送信してください。
additions per 24 h20クライアントごと。詳細: 429 voice_samples_rate_limited。
その他の回答: 404 voice_not_found (不明、削除済み、または別アカウントの音声)、409 voice_samples_unsupported (録音を追加できるのは ElevenLabs の音声のみです)、409 voice_slots_full、502 voice_samples_failed (サプライヤーが録音を拒否しました。音声は変更されていません)。ElevenLabs の音声は月額課金です。価格は GET /api/media/voices (pricing) に記載されています。

ボイスチェンジャーと強制アラインメント

パラメータータイプ説明
elevenlabs-voice-changermodelopts.voice_id (your ElevenLabs voice) + the source recording opts.audio_url | audio_base64 | audio_file_id, up to 5 minutes. Priced on the measured length: 1 minute = 1000 characters.
forced-alignmentmodelprompt is the transcript, opts.audio_url | audio_base64 | audio_file_id the recording. Result: word timings in resultMeta.words and an SRT file in resultUrls. Priced per 1000 characters of text.

サンドボックス: 送信結果が不明

サプライヤーの開始確認が届かない場合、ジョブは status: "submitting"、stage: "submission_unknown"、errorCode: "media_submission_uncertain"、failure.advice: "reconcile_first" のままになります。同じ jobId をポーリングし続け、重複したジョブを作成しないでください。このパスを無料でテストするには、sandbox キーとヘッダー x-pv-sandbox-outcome: submission_uncertain を付けて POST /api/media/generate を送信します。応答は jobId を含む通常の 202 です。それをポーリングすると、60 秒間は unknown submit として応答し、その後は開始されなかったジョブ(failure.code: "submission_not_started"、charged: false)として応答します。何も保存されず、サプライヤーへ送信されることも、課金されることもありません。このヘッダーを通常のキーで使用すると 400 sandbox_outcome_requires_sandbox_key になります。

音声文字起こし(transcription)

その他の生成と同じエンドポイントを使用します。model に STT モデル名を指定し、prompt は空文字列のままにして、opts.audio_url に録音を渡します。文字起こし結果は GET /api/media/jobs/{id} の resultText に格納され、resultUrls は空のままです。文字起こしではファイルは生成されません。

# speech-to-text: create the job, then read the transcript
curl https://getvibeapi.com/api/media/generate \
  -H "Authorization: Bearer $GETVIBE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "whisper-large-v3-turbo",
    "prompt": "",
    "opts": {
      "audio_url": "https://example.com/meeting.mp3",
      "language_code": "en"
    }
  }'
# → {"ok":true,"jobId":"JOB_ID","status":"processing","priceRub":0.03}

curl https://getvibeapi.com/api/media/jobs/JOB_ID \
  -H "Authorization: Bearer $GETVIBE_API_KEY"
# → {"status":"success","resultText":"the transcribed text…","resultUrls":[],"priceRub":0.03}

モデル

  • whisper-large-v3-turbo — 音声1分あたり $0.00025。最も安く最速で、99 言語に対応しています。
  • nemotron-asr-multilingual — 1分あたり $0.00025。NVIDIA の多言語 ASR で、独自に句読点を付けます。
  • whisper-large-v3 — 1分あたり $0.000563。完全な Whisper で、turbo より遅いものの、ノイズの多い音声ではより正確です。
  • universal-2 — 1分あたり $0.003125。
  • speech-to-text — 1分あたり $0.01(ElevenLabs Scribe)。話者ダイアリゼーションと音声イベントタグに対応しています。

パラメーター

パラメータータイプ説明
audio_urlreq.string (URL)ファイルを直接配信するパブリックな https リンク。リダイレクトとプライベートネットワークアドレスは拒否されます。ファイルがオンラインでない場合は、代わりに audio_base64 を使用してください。
audio_base64string録音を data:audio/mpeg;base64,… としてインラインで指定します。audio_url を置き換えます。
language_codestring言語コード(en、ru など)。省略時は自動的に検出されます。
duration_minutesnumber録音の長さ (分単位)。事前の料金見積もりに使用されます。最終的な請求額は実測値に基づきます (以下を参照)。
diarizeboolean話者ダイアリゼーション(universal-2、音声テキスト変換)。
tag_audio_eventsboolean笑い声や拍手などの音声イベントをタグ付けします(音声テキスト化)。
keytermsstring[]用語と名前のヒントリスト(音声認識、価格 +30%)。

フォーマットと制限

mp3、wav、m4a/mp4、flac、ogg/opus、webm を受け付けます。ファイルサイズは 最大 25 MB です — 128 kbps の mp3 でおよそ 26 分、opus の音声であれば数時間に相当します。それより大きいものは明示的なメッセージとともに即座に拒否され、課金されません。その場合は録音を分割してください。

請求は音声1分あたりです。whisper-large-v3-turbo、whisper-large-v3、nemotron-asr-multilingualの場合、最終的な金額はduration_minutesで渡した値ではなく、トランスクリプトから取得した測定された録音の長さから計算されます。最低請求額は1コペイカです。正確な金額は常に完了したジョブのpriceRubとして返されます。

レディネス webhook(ポーリングの代わり)

ポーリングを避けるには、ダッシュボードで1つのアドレスmediaWebhookUrlを登録してください。タスクが完了すると(成功またはエラー)、サービスはJSONボディを含むPOSTの配信を最大5回試行します。

// POST to your mediaWebhookUrl when a job finishes
{
  "jobId": "...",
  "status": "success",            // or "fail"
  "model": "veo-3.1",
  "kind": "video",                // image | video | audio | music | 3d
  "resultUrls": ["https://getvibeapi.com/api/media/file/..."],
  "failMsg": null,
  "createdAt": "2026-06-17T10:00:00.000Z"
}
配信の詳細、エラーコード、課金については Webhook とメディアタスクのライフサイクル を参照してください。要約すると、Webhook は Standard Webhooks ヘッダーで署名され、重複が発生する可能性があり、5 回失敗すると配信が停止します。ポーリングが引き続き信頼できる情報源です。

ファイルを取得中: /api/media/file/{id}/{idx}

GEThttps://getvibeapi.com/api/media/file/{id}/{idx}

resultUrls からの生成結果 URL(画像、動画、音声、3D モデル)です。サービスが返したとおりに使用してください。API キーなしで開くことができ、<img>、<video>、ブラウザーで動作します。プロバイダーは隠されています。上流のアドレスはサーバー側で解決され、クライアントには決して見えません。

パスとクエリのパラメーター
パラメータータイプ説明
idreq.string (path)/api/media/jobs/{id} レスポンスのタスク id(jobId)。
idxreq.integer(パス)結果のインデックス(0 始まり)。結果が 1 件の場合は 0 です。
query paramsresultUrls と同様URL を自分で構築したり、サービスが返すパラメーターを変更したりしないでください。
downloadstring (query)download=1 を指定すると、内容に応じた名前と拡張子(3D モデルの場合は .glb)の添付ファイルとしてダウンロードされます。指定しない場合はファイルがブラウザで開きます。
# The signed URL is returned in resultUrls of the /api/media/jobs/{id} response
# or in the webhook body. Opens directly in the browser / <img> — no key needed.
https://getvibeapi.com/api/media/file/JOB_ID/0?sig=HMAC_SIGNATURE
ジョブ完了後(/api/media/jobs/{id}のresultsExpireAtフィールド)、結果は7日間保持されます。完了したファイルは当社のストレージにコピーされ、resultUrlsはhttps://getvibeapi.com/media/r/…形式の永続アドレスに切り替わります。以前に返された/api/media/file/… URLも引き続き機能します。どちらもRangeリクエスト(動画や音声のシーク)に対応しています。7日後にファイルは削除され、URLはコードmedia_result_expiredで410 Goneを返します。その前に必要なファイルをダウンロードしてください。
GetVibe API メディア生成 — 画像、動画、音声、音楽、3D | GetVibe API