クイックスタート

FFHub クラウド FFmpeg API を 3 分で動かす。

このページでは初回の API コールを通します:API キー取得 → タスク投入 → 結果取得。

1. API キーを取得

ffhub.io でアカウント登録し、ダッシュボードの API Keys でキーを作成します。sk_xxxxx の形式です。漏らさないでください。

新規登録で無料クレジットが付くので、以下の手順は無料で試せます。

2. タスクを投入

任意の FFmpeg コマンドを POST /v1/tasks に投げるだけ。入力は公開 URL である必要があります(ローカルパスはクラウドワーカーに拒否されます)。

curl -X POST https://api.ffhub.io/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "command": "ffmpeg -i https://storage.ffhub.io/Sample_Video_File_100MB.mp4 -c:v libx264 -preset fast output.mp4"
  }'
const res = await fetch("https://api.ffhub.io/v1/tasks", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.FFHUB_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    command:
      "ffmpeg -i https://storage.ffhub.io/Sample_Video_File_100MB.mp4 -c:v libx264 -preset fast output.mp4",
  }),
});
const { task_id } = await res.json();
import os, requests

res = requests.post(
    "https://api.ffhub.io/v1/tasks",
    headers={"Authorization": f"Bearer {os.environ['FFHUB_API_KEY']}"},
    json={
        "command": "ffmpeg -i https://storage.ffhub.io/Sample_Video_File_100MB.mp4 -c:v libx264 -preset fast output.mp4",
    },
)
task_id = res.json()["task_id"]

レスポンスの task_id を使ってステータスをポーリングします:

{
  "task_id": "01abcd…",
  "status": "pending",
  "created_at": "2026-05-10T12:00:00Z"
}

3. 完了までポーリング

curl https://api.ffhub.io/v1/tasks/TASK_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

2〜5 秒間隔で確認します。statuscompleted になると、ダウンロード URL が含まれます:

{
  "task_id": "01abcd…",
  "status": "completed",
  "progress": 100,
  "outputs": [
    {
      "filename": "output.mp4",
      "url": "https://storage.ffhub.io/outputs/01abcd…/output.mp4",
      "size": 10485760
    }
  ]
}

出力 URL は 24 時間 で失効します。残したいファイルは事前にダウンロードしてください。

ローカルファイルをアップロード

入力がまだ公開 URL でない場合、先にアップロードして URL を取得します。2 ステップです:

# 1. 使い捨ての署名付き PUT URL をリクエスト
SIGNED=$(curl -s -X POST https://api.ffhub.io/v1/uploads/sign \
  -H "Authorization: Bearer $FFHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"input.mp4","size":12345678,"content_type":"video/mp4"}')

# 2. ファイルを R2 に直接 PUT — サーバーはバイトを一切経由しません
curl -X PUT "$(echo "$SIGNED" | jq -r '.upload_url')" \
  -H "Content-Type: video/mp4" \
  --data-binary "@./input.mp4"

# 返ってきた .public_url フィールドが、タスクコマンドの `-i` に渡す URL です。

詳しい手順は ファイルアップロード を参照してください。

次に

  • CLI — ターミナルから直接実行、ローカルファイルは自動アップロード
  • n8n 連携 — ビジュアルワークフロー
  • Claude Code スキル — Claude Code から FFHub を呼ぶ
  • OpenAPI 仕様 — 全エンドポイントの詳細
クイックスタート — FFHub Docs