API の使い方
画像・音声・動画をローカル GPU 上で生成する REST API です。APIキー1本で叩けて、OpenAI 互換の呼び出し形に揃えてあります。音声 TTS は最初の音声バイトまで ~100ms、画像は数秒、動画は非同期ジョブで返します。各レスポンスに timing が入るので、速度は実測で確認できます。
APIキーの発行・失効、利用制限の確認は「API管理」ページから:API管理を開く
使い方(4 ステップ)
- 1. ログイン / 新規登録まずアカウントにログインします。未登録なら無料で登録できます。
- 2. APIキーを発行「API管理」ページでプロジェクト名を入れて「発行」。平文キーは発行直後の 1 回だけ表示されるので安全な場所にコピーしてください(DB にはハッシュのみ保存)。
- 3. 最初のリクエストAuthorization: Bearer <あなたのキー> を付けて下記のエンドポイントを呼びます。
- 4. レスポンス処理 / 運用画像・音声は base64、動画はジョブ ID を受け取りポーリング。各レスポンスの timing で速度を確認できます。不要なキーは失効、漏洩時は失効して再発行します。
レイテンシ目安(RTX PRO Blackwell)
| エンドポイント | 方式 | 速度 |
|---|---|---|
音声 /audio/generations | 同期 | 最初の音声 ~85–120ms / 短文は全体 1秒未満 |
画像 /images/generations | 同期 | ~4秒(1024², 20 steps) |
動画 /videos/generations | 非同期ジョブ | ~60–90秒(ジョブIDをポーリング) |
認証
すべてのリクエストに APIキーを Bearer トークンとして付けます。キーは「API管理」ページから発行します(平文は発行直後の1回だけ表示)。
Authorization: Bearer kotonia_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
画像 API
curl -X POST https://kotonia.ai/api/v1/images/generations \
-H "Authorization: Bearer $KOTONIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a serene japanese garden at dawn, soft light",
"size": "1024x1024",
"steps": 20
}'
# → { "data": [ { "b64_json": "<PNG base64>" } ], "timing": { "total_ms": 4200 } }任意: seed, guidance_scale, shift, ref_image(base64、編集モード)。制限: prompt 4000 文字以内、size は各辺 256〜2048(範囲外は 400)。
音声 API
curl -X POST https://kotonia.ai/api/v1/audio/generations \
-H "Authorization: Bearer $KOTONIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": "Hello, what a lovely day.",
"engine": "qwen3",
"language": "en"
}'
# → { "audio": { "b64": "<WAV base64>", "format": "wav", "sample_rate": 24000 },
# "timing": { "first_byte_ms": 92, "total_ms": 480 } }engine: qwen3(既定・多言語)/ irodori / voicevox。任意: voice, speed, instruct。制限: input 4000 文字以内。
動画 API(非同期)
# 1) submit job
curl -X POST https://kotonia.ai/api/v1/videos/generations \
-H "Authorization: Bearer $KOTONIA_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "prompt": "a cat walking through neon-lit streets", "width": 768, "height": 512 }'
# → { "id": "<job_id>", "status": "queued", "poll_url": "/api/v1/videos/generations/<job_id>" }
# 2) poll
curl https://kotonia.ai/api/v1/videos/generations/<job_id> \
-H "Authorization: Bearer $KOTONIA_API_KEY"
# → { "status": "completed", "data": [ { "url": "/api/ltx/video?path=..." } ] }任意: image(base64、I2V)、audio(base64、A2V リップシンク)、num_frames。制限: prompt 4000 文字以内、width/height は各辺 256〜1280、num_frames は 200 以下(範囲外は 400)。
レスポンスコード
200 | 成功。画像・音声は body(base64)、動画はジョブ ID を返します。 |
400 | リクエスト不正。必須パラメータ不足や不正値(prompt / input 欠落、base64 不正 など)。 |
401 | 認証エラー。APIキーが未指定または無効(Authorization ヘッダを確認)。 |
429 | 上限超過(Too Many Requests)。無料枠の日次上限を超過。翌 JST 0 時にリセット。 |
503 | 利用不可。生成サーバが一時的に未稼働/混雑。時間をおいて再試行してください。 |