ナビゲーションにスキップ

BeatAPI クイックガイド

クイックガイド

BeatAPI は、Text、Workflow、Realtime、Video、Image、Effect API を 1 つのサーバー側 API キーで利用します。まず次の 3 ステップで始めてください。その後、同期テキスト応答、共通タスクフィールド、アップロード、上限、本番のエラーについて読み進められます。

3 ステップで最初のタスクを実行する

1. API キーを作成する

ダッシュボード → API キーで作成し、コマンド履歴に残さずシェルに読み込みます。

read -rsp "BeatAPI API key: " BEATAPI_API_KEY && echo
export BEATAPI_API_KEY

すべてのリクエストで、ベース URL https://api.beatapi.io と次のヘッダーを使います。

Authorization: Bearer <BEATAPI_API_KEY>

2. タスクを作成する

最小の画像リクエストは POST /v1/images/tasks です。

curl https://api.beatapi.io/v1/images/tasks \
-X POST \
-H "Authorization: Bearer $BEATAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana",
"prompt": "Editorial product photograph on a warm stone pedestal."
}'

有効なリクエストには 201 Created が返ります。返された data.id を保存してください。

3. 結果をポーリングする

curl https://api.beatapi.io/v1/tasks/task_8K2qA \
-H "Authorization: Bearer $BEATAPI_API_KEY"

task_8K2qA をステップ 2 の data.id に置き換えます。ジッターを付けて 5–10 秒ごとに確認します。succeeded なら data.output.media を読み、停止します。failed なら data.error_code と data.error_message を読み、停止します。

長期利用する API キーは信頼できるサーバーに保存してください。ブラウザーやモバイルのコード、スクリプト、ログ、スクリーンショットに含めないでください。Realtime のブラウザーには、サーバーが作成した短寿命の client_secret だけを渡します。

API を選ぶ

API作成操作入力結果
Text(GPT-5.6)POST /v1/responsesテキスト、画像、ツール、推論設定同期 JSON またはストリーミングのテキスト応答
Workflow — Music VideoPOST /v1/music-video/tasks音声とグレード別の視覚参照完成した Music Video と絵コンテのメタデータ
Workflow — EcommercePOST /v1/ecommerce-video/tasks商品画像、長さ、制作指示完成した商品動画
Workflow — Video AnalysisPOST /v1/video-analysis/tasksアップロード動画、分析プロンプト、深度分析テキストとトークン利用量
RealtimePOST /v1/realtime/sessionsブラウザーのオリジンと固定の長さ、その後ライブの MediaStreamリアルタイム生成の WebRTC 動画
VideoPOST /v1/videos/tasksモデル別のプロンプトとメディア参照ホストされた動画 1 本
ImagePOST /v1/images/tasksモデル別のプロンプトと任意の参照ホストされた画像 1 枚
EffectPOST /v1/effects/tasks公開 Effect ID、画像、対応オプションホストされた画像または動画のエフェクト結果

テキストは同期、または Server-Sent Events で返します。Realtime は短寿命の Session を作成します。Workflow、Video、Image、Effect の作成は非同期の Task を返すため、data.id を保存し、共通タスクエンドポイントを確認します。上限は API キーごとに毎分 120 リクエストです。

GPT-5.6 の選択、SDK 互換形式、ストリーミング例は GPT-5.6 ガイドを参照してください。

タスクのステータスを取得する

GET /v1/tasks/{task_id}

パラメーター場所型必須ルール
task_idパスstringはい作成レスポンスの data.id を使用

ステータス

ステータス意味クライアントの操作
queued受け付け済み、待機中ポーリングを続ける
processing生成中ポーリングを続ける
storyboard_readyMusic Video の絵コンテが利用可能自動フローでは続行する場合がある。必要に応じて確認
requires_actionMusic Video の手動確認待ちショットを編集、または合成
editingMusic Video のショット編集中ポーリングを続ける
composingMusic Video の合成中ポーリングを続ける
succeededホストされた出力が完成data.output を読み、停止
failedエラーで終了エラーと返金を読み、停止

共通形式の Task フィールド

フィールド型存在条件意味
idstring常に安定したタスク ID
objectstring常にtask
task_kindstring常にworkflow、effect、image、video
capability_idstring常に安定したワークフロー、Effect、生成モデル ID
capability_versioninteger or null常にバージョン管理されている場合の不変バージョン
workflowstringワークフローmusic-video または ecommerce-video
effect_idstringエフェクト安定したエフェクト ID
effect_versionintegerエフェクト選択した不変のエフェクトバージョン
media_typestring画像・動画image または video
modelstring画像・動画安定したモデルエイリアス
statusstring常に現在のライフサイクル状態
stagestring常に現在の処理段階
storyboardobjectMusic Video利用可能な場合のショットメタデータ
created_atinteger常にUnix タイムスタンプ
updated_atinteger常にUnix タイムスタンプ
completed_atinteger or null常に終了時の Unix タイムスタンプ
outputobject or null常に成功まで null
usageobject常にクレジットと課金対象の長さ
request_idstring常にサポート・デバッグ用の照合 ID
error_codestring or null常に機械可読のタスク失敗コード
error_messagestring or null常に人が読むタスク失敗の説明

利用量と出力

credits_reserved などの公開フィールド名は API 互換性のため維持しています。クレジットと残高はすべて米ドル建ての小数の台帳金額です。1 Credit = 1USD。ダッシュボードも同じ値を‘1 USD。ダッシュボードも同じ値を `` 付きで表示します。

フィールド型意味
usage.credits_reservednumber操作で仮確保した米ドル金額
usage.credits_chargednumber受け付け時に課金した米ドル金額
usage.billable_duration_secondsinteger, optional米ドル料金の計算に使う長さ
usage.credits_settlednumber成功後に確定した米ドル金額
usage.credits_refundednumber返金対象の失敗後に戻した米ドル金額
output.mediaobject[]ホストされた結果ファイル
output.media[].typestringimage または video
output.media[].urlstringホストされた結果 URL
output.media[].mime_typestring結果の MIME タイプ
output.r2_urlstring主な結果 URL

入力ファイルをアップロードする

POST /v1/files

公開 HTTPS URL にないローカルの入力素材をアップロードします。正確な Content-Length が必要です。通常の curl、ブラウザー、SDK は自動で設定します。長さを宣言しないチャンク転送は、本文をバッファーする前に拒否されます。

Multipart フィールド

フィールド型必須初期値ルール
filebinaryはい—対応ファイル 1 つ。動画最大 100 MB、その他最大 50 MB
purposestringいいえinputinput のみ対応
curl https://api.beatapi.io/v1/files \
-X POST \
-H "Authorization: Bearer $BEATAPI_API_KEY" \
-F "file=@./song.mp3" \
-F "purpose=input"

素材の Content-Type を指定して、ファイル本文を直接送ることもできます。

素材対応拡張子対応 MIME タイプ追加ルール
画像PNG、JPG/JPEG、WebPimage/png、image/jpeg、image/webp最大 50 MB
音声MP3、WAV、AAC、M4Aaudio/mpeg、audio/wav、audio/aac、audio/mp4最大 50 MB、10–300 秒
字幕SRTapplication/x-subrip。text/plain はファイル名が .srt の場合のみ最大 50 MB
動作参照動画MP4、MOVvideo/mp4、video/quicktime最大 100 MB、3–30 秒。Kling Motion Control 用

PDF、一般のテキスト、octet-stream、未対応の動画コンテナー、ZIP はアップロードできません。BeatAPI は宣言した MIME タイプとファイルのシグネチャを照合し、サーバーで動画の長さと寸法を読み取ります。ワークフローの入力 URL に localhost、プライベートネットワーク、data URL は使えません。

ファイルのレスポンス

{
"data": {
"id": "file_3xYz9",
"object": "file",
"url": "https://media.beatapi.io/inputs/file_3xYz9.mp3",
"key": "inputs/file_3xYz9.mp3",
"mime_type": "audio/mpeg",
"size_bytes": 1048576,
"purpose": "input",
"audio_duration_seconds": 64.02,
"audio_duration_source": "mp3_frame_scan",
"created_at": 1782210000
}
}
フィールド型存在条件意味
idstring常にファイル ID
objectstring常にfile
urlstring常に長期利用できる HTTPS 入力 URL
keystring常にストレージキー
mime_typestring常に検出・受け付けた MIME タイプ
size_bytesinteger常にアップロードのバイト数
audio_duration_secondsnumber音声のみ検出した音声の長さ
audio_duration_sourcestring音声のみ長さの検出方式
purposestring常にinput
created_atinteger常にUnix タイムスタンプ

モデルやワークフローに data.url を指定します。音声タスクの制限は引き続き適用されます。Standard Music Video は 10–180 秒、Premium は 10–300 秒です。

利用量と上限を確認する

GET /v1/usage

認証が必要で、パラメーターはありません。

curl https://api.beatapi.io/v1/usage \
-H "Authorization: Bearer $BEATAPI_API_KEY"
フィールド型意味
objectstringusage
credit_balancenumber現在の米ドル残高。マイナスの場合もある
total_tasksintegerアカウントのタスク数
credits_settlednumber精算済みの米ドル金額
credits_refundednumber返金済みの米ドル金額
concurrencyobject処理中タスクの容量概要
concurrency.limitintegerアカウントの同時処理タスク上限
concurrency.activeinteger現在、処理容量を使っているタスク数
realtimeobject, optionalRealtime Session の利用概要
realtime.sessionsintegerRealtime Session の総数
realtime.creditsnumberRealtime の精算済み米ドル金額
realtime.activeintegerready、connecting、active のセッション数
by_workflow[]object[]ワークフロー互換の内訳
by_capability[]object[]安定した機能 ID ごとの全タスク種別の内訳
by_model[]object[]モデルエイリアス別の画像・動画タスク
by_api_key[]object[]API キー別のタスク・クレジット合計

内訳項目のフィールドは次のとおりです。

配列必須項目
by_workflowworkflow、tasks、credits_settled
by_capabilitytask_kind、capability_id、tasks、credits_settled
by_modelmedia_type、model、tasks、credits_settled
by_api_keyapi_key_id、title、key_prefix、tasks、credits_settled

storyboard_ready または requires_action で止まった Music Video は、処理中として数えられなくても精算済みクレジットを持つ場合があります。

エラーと再試行方針

{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Wait 12 seconds, then retry.",
"retryable": true,
"request_id": "req_abc123",
"retry_after_seconds": 12
}
}

すべてのエラーに code、原因を示す英語の message、retryable、request_id が付きます。429 と待機時間が分かる 503 は retry_after_seconds と Retry-After も返します。retryable が false なら、内容を変更するまで同じ呼び出しは再び失敗します。

公開エラーコード

公開するのは以下の安定したコードのみです。第三者のステータスやエラー本文をそのまま返しません。エラーには、作成時と受け付け済みタスクの失敗コード、テキストの独自エラー形式を掲載しています。レスポンスでは error.code、非同期の終了時にも該当する値が error_code に入ります。

コード意味クライアントの対処
bad_request不正な JSON、フィールド、組み合わせ、形式、URL、上限。作成時や、モデルが受け付け済みタスクの入力・パラメーターを拒否した場合。メッセージに対象を示す修正してから再試行
missing_api_keyキー未送信Authorization: Bearer <key> を送る
invalid_api_key不正、期限切れ、無効、上限到達。理由はメッセージダッシュボードで有効なキーを確認
unauthorized401 の旧名称。2026-09-29 に missing_api_key と invalid_api_key に変更invalid_api_key と同様に扱う
forbiddenキーやアカウントで操作不可。無料対象外のモデル、IP 許可リスト、モデルグループなどメッセージを確認。無料クレジットのアカウントはチャージで全モデルを利用可能
not_found不明なモデル・機能、存在しないリソース、またはキーのアカウントに属さないリソースID と所有関係を確認
insufficient_credits残高が 0、または料金に不足次の有料リクエスト前にチャージ
idempotency_conflict同じ冪等キーを異なる本文で使った同じ論理リクエストのみ再利用、または新しいキー
user_concurrency_exceededアカウントの処理中タスク数が上限完了を待つか同時実行数を増やす
rate_limit_exceeded無料モデルを含むリクエスト数の上限超過Retry-After / retry_after_seconds に従う
content_policy_violationプロンプト、入力メディア、結果が審査で拒否された内容を修正して新しいリクエストを送る
processing_unavailableモデルが一時的に利用不可、または容量不足。利用者のレート制限ではないバックオフして再試行。受け付け済みタスクは確認を続ける
processing_failedBeatAPI 側の理由で処理失敗ポーリング停止。メッセージと返金を確認し、バックオフして再試行
processing_timeout処理時間内に完了しなかった停止して返金を確認。必要なら新しいリクエスト
result_transfer_failed生成結果を BeatAPI のストレージに保存できなかった停止して返金を確認。必要なら再実行
invalid_signatureWebhook の署名・タイムスタンプを検証できない署名シークレット、生の本文、時刻、署名ヘッダーを確認
realtime_disabledRealtime がアカウントで無効新しい Session の前にアクセスを有効化
realtime_capacity_unavailableRealtime の容量が一時不足指定時間待って新しい Session を作る
realtime_session_expiredSession が利用できない新しい Session とシークレットを作る
origin_not_allowedSession に許可されていないブラウザーのオリジン設定済みの正確な HTTPS オリジンを使う
invalid_client_secretRealtime シークレットが不正、または利用できない新しい Session のシークレットを使う
transport_not_allowed指定した Realtime の通信方式が未許可文書化された方式を使う
internal_error予期しない内部エラーrequest_id を保存。安全な場合のみ再試行、またはサポートに連絡
HTTPコードretryableクライアントの対処
400bad_request、content_policy_violationfalseフィールド、組み合わせ、形式、URL、上限、入力を修正
401missing_api_key、invalid_api_keyfalseBearer キーを送る、または交換
402insufficient_creditsfalse次の有料リクエスト前にチャージ
403forbidden または Realtime のオリジンエラーfalse権限や正確なオリジンを確認
404not_foundfalseモデル、reference、ID、所有関係を確認
409idempotency_conflictfalse同じ論理リクエストの本文でのみ再利用
429rate_limit_exceeded、user_concurrency_exceededtrueRetry-After に従うか処理完了を待つ
500internal_errortruerequest_id を保存し 1 回再試行。その後サポート
503processing_unavailable、processing_timeout、processing_failed、result_transfer_failedtrueバックオフして再試行

BeatAPI は 502 と 504 を返しません。見られる場合はネットワークのエッジからの応答で、JSON 本文はなく、503 と同様に再試行します。

冪等性のルールはエンドポイントによって異なります。

  • Realtime Session 作成は Idempotency-Key が必須(1–128 文字)です。
  • Workflow、Image、Video、Effect タスク作成は任意です。完全に同じ論理リクエストの本文でのみ再利用します。
  • Image、Video、Effect のキーは最大 255 文字です。Workflow のキーはデータベース間の互換性のため短くしてください。

本番利用のチェックリスト

  • 接続先は正確に https://api.beatapi.io を指定します。
  • 長期利用する API キーは信頼できるサーバーに保存します。
  • 選択 API の必須・任意項目、列挙値、上限、条件付きルールを検証します。
  • バックグラウンド処理の前にタスク/Session ID と request_id を保存します。
  • ジッターを付けて確認し、文書化された終了・操作待ち状態で停止します。
  • ステータス、Retry-After、retry_after_seconds に従います。
  • JSON 解析前に、生のバイト列で Webhook の署名を検証します。
  • クレジットの仮確保、精算、返金、エラー、最終出力 URL を記録します。
  • カメラ、顔、声、参照素材を処理する前にプライバシーポリシーと利用規約を確認します。