Pro API: 自分のサーバーからクラウドレンダリングを操作する
アプリがオンラインで行うすべての処理(画像、レタッチ、動画、キャラクタートレーニング)は、 HTTPでも同じクレジット価格でアクセスできます。アプリを開いていなくても、 自分のサーバー、スクリプト、またはエージェントからライセンスのクレジットを使って操作できます。
Proライセンスで利用可能です。 キーはアプリ内の 設定 > API で作成します。
| ベースURL | https://api.tendre.ai/pro/v1 |
| 認証 | ヘッダー Authorization: Bearer tk_pro_... |
| フォーマット | 入出力はJSON、画像はPNG、動画はMP4 |
| 機械可読な定義 | openapi-pro.yaml (OpenAPI 3.0)、クライアント生成に使用可能 |
キーを取得する
Proライセンスを持つ状態でアプリを開き、設定 > API > 新しいキー を選択します。名前(例:「本番サーバー」)を付け、権限を選択し、必要に応じて1日あたりのクレジット上限と有効期限を設定します。
キーは一度しか表示されません。 すぐにコピーしてください。紛失したキーは再発行のみで、復元はできません。
- 1ライセンスにつき最大3つのアクティブなキー。 サービスを止めずにローテーションするのに十分な数です。新しいキーを作成して適用し、古いキーを無効にしてください。
- キーはシートではありません。 自分のパソコンやスマートフォンは、キーと並行して引き続き使用できます。
- キーはクレジットと同等の価値があります。 Webページ、配布するアプリ、または公開リポジトリには絶対に含めないでください。サーバー上に置く場合は、必ず1日あたりのクレジット上限を設定してください。
キーに許可される操作
| 権限 | 許可される内容 |
|---|---|
| 読み取り | 常に付与されます。レンダリングステータス、ファイルダウンロード、残高、キャラクター一覧 |
| 画像 | 画像の送信とキャンセル(生成、レタッチ、バリエーション) |
| 動画 | 動画の送信とキャンセル |
キーの権限を超えた呼び出しには 403 portee_manquante が返され、不足している権限が portee に示されます。
レンダリングのライフサイクル
常に同じ3ステップです。
- 送信。
POST /imagesまたはPOST /videos。jobIdとコストが即座に返されます。 - ポーリング。
GET /images/{jobId}またはGET /videos/{jobId}を3秒ごとに実行し、statusがcompletedまたはfailedになるまで繰り返します。 - ダウンロード。 ステータスが
completedになったらすぐにGET /images/{jobId}/fileまたはGET /videos/{jobId}/fileを実行します。ファイルは保持されません。待たずにすぐダウンロードしてください。
目安の所要時間:画像は10〜40秒、動画は1〜5分。エンジンがコールドスタートの場合はさらに時間がかかります。
最初の呼び出し
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
curl -s $B/credits -H "Authorization: Bearer $KEY"
{ "balance": 1830, "licenseId": "lic_...", "key": "k_1a2b3c4d",
"limits": { "concurrent": 2, "perMinute": 60, "perDay": 0 }, "running": 0 }
この応答が返れば、他のすべての操作も問題なく動作します。
完全なレンダリング、3つの方法
bash
KEY=tk_pro_...
B=https://api.tendre.ai/pro/v1
JOB=$(curl -s $B/images -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"prompt":"a lighthouse at dawn, photorealistic","width":1216,"height":832}' | jq -r .jobId)
until curl -s $B/images/$JOB -H "Authorization: Bearer $KEY" | grep -q '"completed"'; do sleep 3; done
curl -s $B/images/$JOB/file -H "Authorization: Bearer $KEY" -o lighthouse.png
PowerShell
$H = @{ Authorization = "Bearer tk_pro_..." }
$B = "https://api.tendre.ai/pro/v1"
$job = Invoke-RestMethod -Uri "$B/videos" -Method Post -Headers $H -ContentType "application/json" `
-Body '{"prompt":"waves on a beach at sunset, gentle wind","width":1080,"height":1920,"audio":true}'
do { Start-Sleep 5; $s = Invoke-RestMethod -Uri "$B/videos/$($job.jobId)" -Headers $H } while ($s.status -eq "pending")
Invoke-WebRequest -Uri "https://api.tendre.ai$($s.file_url)" -Headers $H -OutFile beach.mp4
Python
import time, requests
KEY, B = "tk_pro_...", "https://api.tendre.ai/pro/v1"
H = {"Authorization": f"Bearer {KEY}"}
job = requests.post(f"{B}/videos", headers=H, json={"prompt": "waves on a beach at sunset, gentle wind", "audio": True}).json()
while (s := requests.get(f"{B}/videos/{job['jobId']}", headers=H).json())["status"] == "pending":
time.sleep(3)
if s["status"] == "completed":
open("beach.mp4", "wb").write(requests.get("https://api.tendre.ai" + s["file_url"], headers=H).content)
else:
print("failed:", s.get("detail"))
次のステップ
- 画像:生成、3種類のレタッチモード、キャラクター。
- 動画:フォーマット、料金体系、開始フレームと終了フレーム。
- アカウント:残高、上限、トレーニング済みキャラクター、アクティビティ。
- 制限とエラー:上限、すべてのエラーコード、ベストプラクティス。
今後追加予定の機能
実装予定の順に:自分の写真からのキャラクタートレーニング、音声、2Kへのアップスケーリング、レンダリングを再現するための固定シード、そしてポーリングを不要にするWebhook。
APIはバージョン管理されています。ここで説明した内容は /pro/v1 のもとで引き続き有効です。追加機能が既存の動作を壊すことはなく、破壊的な変更は /pro/v2 として提供されます。