動画API — プログラム動画管理用RESTエンドポイント

動画API

AVCaptionはプログラム動画管理のためのREST APIを提供します。Enterpriseプランで利用可能。Premiumには要望に応じてプレビューアクセスを提供。

認証

2つの方法があります:

Bearerトークン(JWT) — ログイン時に発行、Authorization: Bearer <token> ヘッダーで送信。認証済みダッシュボードセッションで使用。

APIキー — 設定ページで生成。形式 avc_<64文字16進>X-API-Key: <key> ヘッダーまたは ?api_key=<key> クエリパラメータで送信。サーバー間通信に有用。

エンドポイント

GET    /api/v1/videos               動画一覧(ページング、?page=1)
GET    /api/v1/videos/:id           動画メタデータ + embedトークン
POST   /api/v1/upload               直接アップロード(小ファイル)
POST   /api/v1/upload/init          チャンクアップロードセッション開始
POST   /api/v1/upload/chunk         1チャンクをアップロード
POST   /api/v1/upload/complete      チャンクアップロード確定
PUT    /api/v1/videos/:id           title、allowed_domainsを更新
DELETE /api/v1/videos/:id           動画を削除
GET    /api/v1/stats                アカウント統計: 総動画数、視聴数、ストレージ使用量
GET    /api/v1/embed/:token         公開embedメタデータ(公開動画は認証不要)
POST   /api/v1/videos/:id/subtitles 字幕トラックをアップロード(Enterprise)
GET    /api/v1/presets              プレーヤープリセット一覧(Enterprise)
POST   /api/v1/presets              プレーヤープリセット作成(Enterprise)

チャンクアップロードパターン

# ステップ1: init
curl -X POST https://dashboard.avcaption.com/api/v1/upload/init \
  -H "X-API-Key: avc_..." \
  -d '{"filename":"course-lesson-1.mp4","size":1234567890,"title":"Lesson 1"}'
# 戻り値: {"upload_id":"abc123","chunk_size":5242880}

# ステップ2: チャンクアップロード(並列可)
curl -X POST https://dashboard.avcaption.com/api/v1/upload/chunk \
  -H "X-API-Key: avc_..." \
  -H "X-Upload-ID: abc123" \
  -H "X-Chunk-Index: 0" \
  --data-binary @chunk-0.bin
# ...各チャンクで繰り返し

# ステップ3: complete
curl -X POST https://dashboard.avcaption.com/api/v1/upload/complete \
  -H "X-API-Key: avc_..." \
  -d '{"upload_id":"abc123"}'
# 戻り値: {"video_id":"...","embed_token":"...","status":"processing"}

Webhookイベント(Enterprise)

任意のHTTPSエンドポイントでイベントを購読:

  • video.uploaded — チャンクアップロード完了
  • video.encoded — エンコード終了、再生準備完了
  • video.failed — エンコード失敗(エラー詳細付き)
  • view.threshold — 視聴回数が設定閾値を超過
  • subtitle.translated — AI翻訳完了

WebhookペイロードはHMAC-SHA256で署名されます。

レート制限

  • 読み取り系(list、get): APIキーあたり300 req/分
  • 書き込み系(update、delete): 60 req/分
  • アップロード系: init/complete で60 req/分; チャンク自体は無制限
  • Stats: 60 req/分

Enterprise顧客には自動でスケールされます。カスタムレートはセールスへ。

エラー形式

{
  "error": "人間が読めるエラーメッセージ",
  "code": "machine_readable_error_code",
  "request_id": "x-request-id-for-support-tickets"
}

はじめる

REST APIはEnterpriseに含まれます。APIキーはダッシュボードの Settings → API Keys で生成してください。Enterpriseアカウントを作成し、一括移行をスクリプト化する前に、実ソースファイルでチャンクアップロードを1回叩いてみてください。よくあるAPI駆動の導入例:LMS動画ホスティング代理店のクライアント動画デジタルプロダクト

よくあるご質問

AVCaption動画APIで何が作れますか? +
プログラムによる動画管理が必要なものなら何でも: 自社バックエンドからのインジェストパイプライン、別プラットフォームからの自動移行、ユーザー単位アップロードクォータ、カスタムダッシュボード、サーバーサイドのembedトークンローテーション、webhook駆動のポストプロセッシング。REST APIはダッシュボードを反映し、チャンクアップロードと署名付きwebhookイベントを追加します。
APIにはレート制限がありますか? +
はい。本番運用に十分な既定制限です(ほとんどのエンドポイントで60 req/分、読み取り系はもっと高い)。ハードリミットが乱用を防ぎます。Enterprise顧客はリミット引き上げをリクエストできます。
APIはレジューム可能なアップロードに対応していますか? +
はい。Upload initがアップロードセッションIDを返し、チャンクは個別にPOSTされ失敗時はリトライされます。セッションは24時間保持されるので、ネットワーク切断でも進捗を失いません。
APIはセッション単位のembedトークンを発行しますか? +
はい。POST /api/v1/embed-token に video_id、viewer_id、expires_in を渡すと新しいトークンが返ります。これを自社アプリの認証セッションごとに使えば、漏洩したiframe URLは選択ウィンドウ内に失効します。有料コース、ゲーテッドチュートリアル、メンバーシップコンテンツでは必須パターンです。
← content.back_to_index