設定
外部システムが `api/v1` 経由で本サービスに接続するための情報を確認できます
接続情報
外部システムが `api/v1` 経由で接続するためのURLと認証情報です。
APIキーはDBにハッシュ化して保存されます。フルキーを再表示することはできません。
外部連携の流れ
外部システムは次の流れで `api/v1` を利用できます。
1. `POST /jobs` または `POST /audio-jobs` でジョブを作成し、レスポンスの `id` を保存します。
2. `GET /jobs/{id}` または `GET /audio-jobs/{id}` で状態を確認し、`completed` になるまでポーリングします。
3. 完了後に `GET /jobs/{id}/download` または `GET /audio-jobs/{id}/download` で成果物を取得します。
X-API-Key 必須callback_url 対応
認証方法
全ての外部APIエンドポイントで
X-API-Key ヘッダーが必要です。X-API-Key: <YOUR_API_KEY>
APIキーは設定画面から生成し、利用時は X-API-Key ヘッダーで送信します。
エンドポイント一覧
ベースURL以降のパスです。全リクエストに
X-API-Key ヘッダーが必要です。POST
/jobs— 動画生成ジョブ作成CSVファイルをBase64またはサーバーパスで指定し、動画生成ジョブを作成します。ジョブIDを即時返却し、バックグラウンドで処理を開始します。
GET
/jobs— ジョブ一覧取得全ジョブの一覧を返します。?status=processing などでフィルタリングできます。
GET
/jobs/{id}— ジョブ状態取得指定ジョブの現在の状態を返します。status フィールドは pending / processing / completed / error のいずれかです。
GET
/jobs/{id}/download— 動画ダウンロード完了したジョブのMP4動画をダウンロードします。外部システムからそのままファイル取得に利用できます。
POST
/audio-jobs— 音声ジョブ作成CSVからGemini TTSを使って音声解説(WAV)を生成するジョブを作成します。
GET
/audio-jobs/{id}— 音声ジョブ状態取得指定した音声ジョブの現在の状態を返します。completed になると generatedScript フィールドに解説原稿が含まれます。
GET
/audio-jobs/{id}/download— 音声ダウンロード完了した音声ジョブのWAVファイルをダウンロードします。外部システムからそのままファイル取得に利用できます。
cURL サンプル
コピーしてすぐに試せるリクエスト例です。
動画生成ジョブ作成
curl -X POST "http://localhost:8000/api/v1/jobs" \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"notebook_title": "月次レポート",
"instructions": "CSVデータの主要な傾向を解説してください",
"style": "whiteboard",
"format": "explainer",
"language": "ja",
"csv_files": [
{
"filename": "report.csv",
"content_base64": "<BASE64_ENCODED_CSV>"
}
]
}'ジョブ状態確認
curl "http://localhost:8000/api/v1/jobs/{job_id}" \
-H "X-API-Key: <YOUR_API_KEY>"動画ダウンロード
curl -L "http://localhost:8000/api/v1/jobs/{job_id}/download" \
-H "X-API-Key: <YOUR_API_KEY>" \
--output report.mp4音声ジョブ作成
curl -X POST "http://localhost:8000/api/v1/audio-jobs" \
-H "X-API-Key: <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "CSV音声解説",
"instructions": "データの傾向を音声で解説してください",
"voice_name": "Kore",
"language": "ja",
"csv_files": [
{
"filename": "data.csv",
"content_base64": "<BASE64_ENCODED_CSV>"
}
]
}'