開発ドキュメント
FASTART 統合 API で画像・動画・画像編集に接続。MiniMax 互換 API も引き続き利用でき、キュー・素材・Credit 台帳を共有します。
画像・動画・編集の統合 API
公開済みの制作モデルに共通の API です。Provider ではなくモデル・機能・モードを選びます。下記の MiniMax 互換 API も同じキーと Credit 残高で利用できます。
https://api.fastart.ai/enterprise/fastart/v1全要求に Authorization: Bearer が必要です。クライアントで要求 ID を生成する必要はありません。送信ごとに新しいタスクを作成します。Idempotency-Key は重複防止用の任意の拡張です。202 は受付済みであり完了ではありません。
| 要求フィールド | 説明 |
|---|---|
model | 必須。GET /models の id。表示名ではありません。 |
capability / mode | 一覧の値をそのまま使用します。mode の初期値は generate。編集ツールは image_viewpoint_edit、image_relight_edit、image_inpaint_edit です。 |
parameters | プロンプト・比率・サイズ・長さ・seed 等。選んだ機能の公開パラメーターのみ使用可能です。省略時は初期値、seed:null はランダムです。 |
inputs | role と url または asset_id の配列。一覧の asset.role を使用し、同じロールは配列順に番号を割り当てます。素材 ID はキーのユーザーと Workspace に属する必要があります。 |
callback_url | 任意の HTTPS 通知先。作成前の POST challenge に同じ JSON を返してください。通知には2xxを返し、失敗時は10・30・60秒後に最大3回再試行します。 |
price_token | 任意。見積もりの price_token を渡すと、料金変更時に作成を拒否し、意図しない新料金を防ぎます。 |
素材は公開 HTTP(S) URL のみです。内部ネットワーク・ローカルパス・Base64 は不可。実際の形式を検証し、参照画像は縦横240px以上が必要です。各モデルの数・サイズ・形式・参照時間制限も適用されます。マスクは元画像と同サイズ、開始・終了フレームは専用ロールを使います。
curl --fail-with-body "https://api.fastart.ai/enterprise/fastart/v1/models" \
-H "Authorization: Bearer $FASTART_KEY"import os, time
import requests
base = "https://api.fastart.ai/enterprise/fastart/v1"
headers = {"Authorization": "Bearer " + os.environ["FASTART_KEY"]}
# Choose model, capability, mode and parameter values from GET /models.
payload = {
"model": "qwen-image-2-1",
"capability": "text_to_image",
"parameters": {"prompt": "A golden retriever on green grass.", "aspect_ratio": "16:9"},
}
response = requests.post(base + "/generations", json=payload,
headers=headers, timeout=180)
response.raise_for_status()
task_id = response.json()["task"]["id"]
deadline = time.monotonic() + 3600
while time.monotonic() < deadline:
response = requests.get(base + "/generations/" + task_id, headers=headers, timeout=30)
if response.status_code == 429 or response.status_code >= 500:
time.sleep(15)
continue
response.raise_for_status()
task = response.json()["task"]
print(task["status"], task["progress"])
if task["status"] == "succeeded":
print(task["outputs"]) # Signed URLs can be downloaded without a browser cookie.
break
if task["status"] in ("failed", "cancelled"):
raise RuntimeError(task["error"] or task["status"])
time.sleep(5)
else:
raise TimeoutError("Keep task_id and query later; do not create another task.")利用可能なモデルと全パラメーター
現在の環境の公開設定を読み取っています。モデルを展開すると初期値・選択肢・上限下限・素材数・要求例を確認できます。設定公開後に更新してください。掲載は空き計算資源や料金の保証ではありません。
公開済みモデルとパラメーターを読み込み中…
見積もり・状態・結果
見積もりは作成と同じ本文で、タスク作成・課金は行いません。URL 素材は検証のため取得し、一時コピーを削除します。expected_microcredits、maximum_microcredits、price_token を返します。換算にはレスポンスの microcredits_per_credit を使用します。
{
"task": {
"id": "00000000-0000-4000-8000-000000000001",
"model": "qwen-image-2-1",
"capability": "text_to_image",
"mode": "generate",
"status": "succeeded",
"progress": 100,
"outputs": [
{
"asset_id": "00000000-0000-4000-8000-000000000002",
"type": "image",
"url": "https://assets.example.com/signed/result.png",
"mime_type": "image/png",
"metadata": {
"width": 1328,
"height": 1328
}
}
],
"error": null,
"billing_status": "settled",
"usage": {
"reserved_microcredits": 1000,
"consumed_microcredits": 1000,
"released_microcredits": 0
}
}
}3〜5秒おきに照会します。状態は queued、running、succeeded、failed、cancelled。信頼できる進捗がない場合は null、成功時100です。出力は複数の画像・動画を含められます。URL は期限付きで、再照会して更新できます。失敗は error、usage は確保・消費・返還 Credit を示し、課金無効時は null の場合があります。
取消要求は実行中タスクの停止を保証しません。取消不可は409を返し、強制失敗にはしません。既存の返金・コスト記録を使用し、API 請求に記録します。同一 Workspace の全キーと MiniMax API で照会を含む毎分120回を共有し、同時実行はプランに従います。
400 入力不正、401 認証・権限、402 残高不足、404 未検出、409 料金・冪等性・取消競合、429 頻度制限。冪等キーなしでタイムアウト/5xxになった場合、再送前に作成結果を確認してください。再送は重複生成・課金になる可能性があります。任意のキーを使った場合は同じキーと本文で再試行します。通知はHMAC署名なし・リダイレクト非対応で、重複受信に対応してください。通知と照会は同形式で、認証付き照会を正とします。
MiniMax · クイックスタート
本番の Base URL は以下です。ローカルではドメインを http://localhost:8001 に置き換え、パスは維持します。言語や /api/v1 の接頭辞は不要です。
https://api.fastart.ai/enterprise/minimax/v1- 送信して task_id を保存
- 状態照会または通知を受信
- 成功した出力を取得
サーバー上で cURL、Python(requests をインストール)、または fetch と AbortSignal.timeout 対応の Node.js を使用します。FASTART_KEY を設定し、照会・削除では返された task_id を FASTART_TASK_ID に設定してください。
curl --fail-with-body -X POST "https://api.fastart.ai/enterprise/minimax/v1/video_generation" \
-H "Authorization: Bearer $FASTART_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"content": [
{
"type": "text",
"text": "A golden retriever running on green grass."
}
],
"resolution": "352P",
"duration": 3,
"ratio": "16:9"
}'認証と API キー
ログイン・メール認証後に申請します。管理者の承認後、アカウント画面で複数キーを作成できます。通常はマスク表示で、全文表示・コピーが可能です。サイトの Cookie は API キーの代わりにはなりません。
Authorization: Bearer <FASTART_KEY>
Content-Type: application/json- Cookie、CSRF トークン、ログイン要求は不要です。キーはサーバー側の環境変数で管理し、フロントエンド・URL・ログ・Git に含めないでください。
- キー所有者にはメール認証と Workspace の有効な書き込み権限が必要です。無効・期限切れ・取消済みキーは拒否されます。
- 同じ Workspace の有効キーで照会できます。別 Workspace の照会・削除は invalid task_id を返します。
動画タスクを作成
非同期作成です。HTTP 200 はタスク作成の成功であり、動画の完成ではありません。task_id を保存して照会してください。すべての要求に空でない text 項目がちょうど1つ必要です。
| フィールド | 型 / 必須 | 説明 |
|---|---|---|
model | string · required | MiniMax-H3 は検証済みです。MiniMax-H3-Max は認識しますが、専用ルート未設定では利用できません。 |
content | array · required | 1〜16項目。text は1〜7000文字で、空白のみ不可。その他は role 付き素材です。 |
duration | integer · required | 3〜15秒の整数。ワークフロー制限も適用します。最低4/5秒ではありません。 |
resolution | string · required | 352P / 480P / 768P / 1080P / 2K(大文字)。MiniMax-H3 のテキスト・参照生成は 1080P / 2K でアップスケーラーを使用し、テキストのみなら参照素材は不要です。高解像度の開始・終了フレームは未設定です。非対応値は拒否し、自動で下げません。 |
ratio | string · conditional | 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive。テキストのみでは必須で adaptive は不可。参照生成も具体的な比率を指定してください。 |
aigc_watermark | boolean · optional | 既定値 false。true は透かしパラメーターの設定が必要で、未設定では拒否されます。 |
callback_url | string · optional | 公開 HTTP(S) 通知 URL。作成前に challenge 検証が必要です。 |
{
"task_id": "00000000-0000-4000-8000-000000000001"
}タスクと結果を照会
作成時の UUID task_id を使用します。同じ Workspace の直近7日以内・未削除の法人タスクを照会できます。百分率ではなく状態を返します。約5秒間隔の照会を推奨します。
curl --fail-with-body -X GET "https://api.fastart.ai/enterprise/minimax/v1/query/video_generation/${FASTART_TASK_ID}" \
-H "Authorization: Bearer $FASTART_KEY"| status | 意味 |
|---|---|
queued | 未配信。キャンセルを要求できます。 |
running | 配信・実行・出力収集・照合中。取消不可。常に GPU 演算中とは限りません。 |
succeeded | 成功。content.url と usage を取得します。 |
failed | 失敗または期限切れ。error を確認します。 |
cancelled | 実行前にキャンセル済み。 |
{
"task": {
"id": "00000000-0000-4000-8000-000000000001",
"model": "MiniMax-H3",
"status": "succeeded",
"created_at": 1789120000,
"updated_at": 1789120030,
"resolution": "352P",
"duration": 3,
"ratio": "16:9",
"task_type": "generation",
"modality": "video",
"content": {
"url": "https://assets.example.com/output.mp4?signature=EXAMPLE"
},
"usage": {
"total_seconds": 3,
"input_seconds": 0,
"output_seconds": 3,
"input_image_count": 0
}
}
}| 応答フィールド | 説明 |
|---|---|
created_at / updated_at | Unix タイムスタンプ(秒)。 |
content.url | 成功時の署名付き URL。期限切れ時は7日間の照会期間内に再取得できます。永続公開 URL ではありません。 |
usage | 成功時に total_seconds = input_seconds + output_seconds、input_image_count、音声参照時は input_audio_seconds を返します。素材の実時間を四捨五入し、トークン数は返しません。 |
resolution / duration / ratio | resolution と duration は要求値です。実際のサイズと時間はファイルが正です。adaptive 成功時は実寸の最簡比を返します。 |
task_type / modality | generation / video |
{
"task": {
"id": "00000000-0000-4000-8000-000000000001",
"model": "MiniMax-H3",
"status": "failed",
"created_at": 1789120000,
"updated_at": 1789120030,
"resolution": "352P",
"duration": 3,
"ratio": "16:9",
"task_type": "generation",
"modality": "video",
"error": {
"code": "1000",
"message": "video generation failed"
}
}
}import os
import time
from urllib.parse import quote
import requests
task_id = quote(os.environ["FASTART_TASK_ID"], safe="")
headers = {"Authorization": "Bearer " + os.environ["FASTART_KEY"]}
deadline = time.monotonic() + 1800 # Client wait limit, not a server timeout
while time.monotonic() < deadline:
response = requests.get(
f"https://api.fastart.ai/enterprise/minimax/v1/query/video_generation/{task_id}",
headers=headers, timeout=30,
)
if response.status_code == 429 or response.status_code >= 500:
time.sleep(15) # Retry this GET only; never resubmit POST
continue
response.raise_for_status()
task = response.json()["task"]
print(task["status"])
if task["status"] == "succeeded":
print(task["content"]["url"])
break
if task["status"] in ("failed", "cancelled"):
raise RuntimeError(task.get("error", task["status"]))
time.sleep(5)
else:
raise TimeoutError("Keep task_id and query later; do not resubmit.")キャンセル・削除
リクエスト本文は不要です。サーバーの現在状態で処理を決めます。queued の照会後でも実行開始済みなら400を返します。
curl --fail-with-body -X DELETE "https://api.fastart.ai/enterprise/minimax/v1/video_generation/${FASTART_TASK_ID}" \
-H "Authorization: Bearer $FASTART_KEY"| status | action | 結果 |
|---|---|---|
queued | cancelled | 取消して予約済み Credit を解放。 |
succeeded / failed | deleted | 法人 API の記録のみ非表示。素材・台帳は保持し、返金しません。 |
running / cancelled | — | HTTP 400 |
{
"task_id": "00000000-0000-4000-8000-000000000001",
"action": "cancelled",
"status": "cancelled"
}削除後の照会・再削除は invalid task_id です。失敗・結果不明タスクの Credit は共通精算・復旧処理に従い、DELETE の繰り返しで返金は早まりません。
参照画像・動画・音声
素材は multipart ではなく content 配列で渡します。同じ種類の順番は配列順で、プロンプトの言及順では変わりません。フレームと reference_* は混在不可。画像の role 省略は first_frame となるため reference_image を明記してください。
| type | role | 上限 |
|---|---|---|
image_url | reference_image | 9枚 |
video_url | reference_video | 3本 |
audio_url | reference_audio | 3本 |
image_url | first_frame / last_frame | 各1枚・現在互換性に問題あり |
複数の参照画像
curl --fail-with-body -X POST "https://api.fastart.ai/enterprise/minimax/v1/video_generation" \
-H "Authorization: Bearer $FASTART_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"content": [
{
"type": "text",
"text": "A golden retriever running on grass. Use the two reference images for its appearance."
},
{
"type": "image_url",
"image_url": {
"url": "https://assets.example.com/reference-1.jpg"
},
"role": "reference_image"
},
{
"type": "image_url",
"image_url": {
"url": "https://assets.example.com/reference-2.jpg"
},
"role": "reference_image"
}
],
"resolution": "352P",
"duration": 3,
"ratio": "16:9"
}'画像+動画+音声
curl --fail-with-body -X POST "https://api.fastart.ai/enterprise/minimax/v1/video_generation" \
-H "Authorization: Bearer $FASTART_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MiniMax-H3",
"content": [
{
"type": "text",
"text": "A golden retriever running on grass, guided by the reference motion and audio."
},
{
"type": "image_url",
"image_url": {
"url": "https://assets.example.com/reference.jpg"
},
"role": "reference_image"
},
{
"type": "video_url",
"video_url": {
"url": "https://assets.example.com/reference.mp4"
},
"role": "reference_video"
},
{
"type": "audio_url",
"audio_url": {
"url": "https://assets.example.com/reference.wav"
},
"role": "reference_audio"
}
],
"resolution": "352P",
"duration": 3,
"ratio": "16:9"
}'素材 URL 形式
https://assets.example.com/reference.jpg
data:image/png;base64,<BASE64_DATA>
data:video/mp4;base64,<BASE64_DATA>
data:audio/wav;base64,<BASE64_DATA>
mm_file://<FASTART_ASSET_UUID>mm_file:// はキー所有者と Workspace に属する FASTART 素材 UUID のみ対応し、MiniMax file_id は使えません。法人 Files アップロード API はありません。内部・ループバック・メタデータ URL やローカルパスは不可です。
| 素材 | 制限(実ファイルで検証) |
|---|---|
image | 30 MiB 以下。JPG/JPEG・PNG・WEBP・HEIC/HEIF(デコーダー依存)。幅・高さ各256〜5760 px、比率0.4〜2.5。 |
video | 50 MiB 以下、MP4/MOV、H.264/H.265、音声AAC/MP3、23.976〜60 fps。画像と同じサイズ制限。各2〜15秒、動画参照合計15秒以下。 |
audio | 15 MiB 以下、WAV/MP3。各2〜15秒、音声参照合計15秒以下。 |
JSON | JSON・Base64 膨張分を含め64 MiB 以下。大きい素材は URL を推奨。ユーザー保存容量・ワークフロー制限も適用します。 |
コールバック
作成要求に callback_url を追加します。専用登録 API はありません。作成前に同期 POST challenge を送ります。通信のタイムアウト予算は1秒です。同じ JSON を直ちに返さない場合、作成・課金されません。検証は作成の待ち時間に含まれ、DNS 解決に追加時間がかかる場合があります。
{
"challenge": "ECHO_THIS_VALUE"
}通知は GET と同じ形式です。約5秒ごとの状態収集で、即時・厳密な順序は保証しません。初回失敗後、直前の失敗から10・30・60秒待機して最大3回再試行(合計4回)します。スキャンやキューにより遅れる場合があります。task.id + status で重複排除し、GET で補完してください。通知失敗による再生成はありません。
エラーとリトライ
完了タスクに動画出力がない場合、GET は HTTP 200、status=failed、error.code=video_output_missing を返し、通知も同じ状態です。自動再生成せず管理者に確認してください。cancelled は現在 error/content/usage を含まず、公式の必須項目は確認待ちです。
リクエストエラーは HTTP エラーと以下の形式を返します。実行失敗の GET は HTTP 200・task.status=failed です。413などゲートウェイ拒否は異なる形式の場合があります。
{
"type": "error",
"error": {
"type": "bad_request_error",
"message": "media url is required (2013)",
"http_code": "400"
},
"request_id": "00000000000000000000000000000001"
}| HTTP / error.type | 対処 |
|---|---|
400 · bad_request_error | パラメーター・素材・ルート・所有権を確認し、原因を修正してから送信。 |
401 · authorized_error | キー・期限・メール認証・メンバー権限を確認。 |
402 · insufficient_balance_error | 課金有効時の残高不足。チャージまたは管理者に連絡。 |
429 · rate_limit_error | 頻度を下げてください。照会を含め Workspace ごとに毎分120要求であり、120同時実行ではありません。 |
500 · server_error | GET は待機後に再照会。POST は結果不明の可能性があるため記録を確認し、request_id を保管。 |
リクエスト頻度制限
| 対象 | 上限 | 共有単位 |
|---|---|---|
タスク作成・照会・取消/削除 | 毎分120回 | 同一 Workspace の全キー・対象 API で共有。ポーリングも含みます。 |
ブラウザーの申請・キー管理 | 毎分120回 | ユーザー単位で共有。生成 API の枠とは別です。 |
管理の書き込み | さらに毎時30回 | 申請・作成・キー全表示・失効で共有。毎分制限も適用します。 |
頻度制限と同時実行数は別です。同時実行・待機数はプランとキュー規則に従い、キー追加で枠は増えません。
生成 API は HTTP 429 / rate_limit_error (1002) を返し、現在 Retry-After はありません。頻度を下げ、ポーリングを分散してください。管理 API はブラウザー API のエラー形式です。
上限は現在コードで固定され、管理画面で変更できません。キャッシュ方式のため高並行時は若干超過する場合があり、厳密な容量保証ではありません。