FASTART

開発ドキュメント

FASTART 統合 API で画像・動画・画像編集に接続。MiniMax 互換 API も引き続き利用でき、キュー・素材・Credit 台帳を共有します。

FASTART UNIFIED / V1

画像・動画・編集の統合 API

公開済みの制作モデルに共通の API です。Provider ではなくモデル・機能・モードを選びます。下記の MiniMax 互換 API も同じキーと Credit 残高で利用できます。

Base URL
https://api.fastart.ai/enterprise/fastart/v1
GET/enterprise/fastart/v1/models
GET/enterprise/fastart/v1/models/{model}/capabilities
POST/enterprise/fastart/v1/generations/quote
POST/enterprise/fastart/v1/generations
GET/enterprise/fastart/v1/generations/{id}
POST/enterprise/fastart/v1/generations/{id}/cancel

全要求に 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 はランダムです。
inputsrole と 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 · models
curl --fail-with-body "https://api.fastart.ai/enterprise/fastart/v1/models" \
  -H "Authorization: Bearer $FASTART_KEY"
Python · create + poll (requests)
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 を使用します。

GET /generations/{id} · response example
{
  "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 COMPATIBLE / V1
現在のコード実装の説明であり、稼働状況ページではありません。本番のドメイン・キー・ルート・料金設定が必要です。

MiniMax · クイックスタート

本番の Base URL は以下です。ローカルではドメインを http://localhost:8001 に置き換え、パスは維持します。言語や /api/v1 の接頭辞は不要です。

Base URL
https://api.fastart.ai/enterprise/minimax/v1
  1. 送信して task_id を保存
  2. 状態照会または通知を受信
  3. 成功した出力を取得

サーバー上で 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 キーの代わりにはなりません。

Request headers
Authorization: Bearer <FASTART_KEY>
Content-Type: application/json
  • Cookie、CSRF トークン、ログイン要求は不要です。キーはサーバー側の環境変数で管理し、フロントエンド・URL・ログ・Git に含めないでください。
  • キー所有者にはメール認証と Workspace の有効な書き込み権限が必要です。無効・期限切れ・取消済みキーは拒否されます。
  • 同じ Workspace の有効キーで照会できます。別 Workspace の照会・削除は invalid task_id を返します。

動画タスクを作成

POST/enterprise/minimax/v1/video_generation

非同期作成です。HTTP 200 はタスク作成の成功であり、動画の完成ではありません。task_id を保存して照会してください。すべての要求に空でない text 項目がちょうど1つ必要です。

フィールド型 / 必須説明
modelstring · requiredMiniMax-H3 は検証済みです。MiniMax-H3-Max は認識しますが、専用ルート未設定では利用できません。
contentarray · required1〜16項目。text は1〜7000文字で、空白のみ不可。その他は role 付き素材です。
durationinteger · required3〜15秒の整数。ワークフロー制限も適用します。最低4/5秒ではありません。
resolutionstring · required352P / 480P / 768P / 1080P / 2K(大文字)。MiniMax-H3 のテキスト・参照生成は 1080P / 2K でアップスケーラーを使用し、テキストのみなら参照素材は不要です。高解像度の開始・終了フレームは未設定です。非対応値は拒否し、自動で下げません。
ratiostring · conditional21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 / adaptive。テキストのみでは必須で adaptive は不可。参照生成も具体的な比率を指定してください。
aigc_watermarkboolean · optional既定値 false。true は透かしパラメーターの設定が必要で、未設定では拒否されます。
callback_urlstring · optional公開 HTTP(S) 通知 URL。作成前に challenge 検証が必要です。
200 · レスポンス例 · ID と URL はプレースホルダー
{
  "task_id": "00000000-0000-4000-8000-000000000001"
}

タスクと結果を照会

GET/enterprise/minimax/v1/query/video_generation/{task_id}

作成時の 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実行前にキャンセル済み。
200 · レスポンス例 · ID と URL はプレースホルダー
{
  "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_atUnix タイムスタンプ(秒)。
content.url成功時の署名付き URL。期限切れ時は7日間の照会期間内に再取得できます。永続公開 URL ではありません。
usage成功時に total_seconds = input_seconds + output_seconds、input_image_count、音声参照時は input_audio_seconds を返します。素材の実時間を四捨五入し、トークン数は返しません。
resolution / duration / ratioresolution と duration は要求値です。実際のサイズと時間はファイルが正です。adaptive 成功時は実寸の最簡比を返します。
task_type / modalitygeneration / video
失敗タスク例(HTTP 200)
{
  "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"
    }
  }
}
Python · 待機上限付き照会
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.")

キャンセル・削除

DELETE/enterprise/minimax/v1/video_generation/{task_id}

リクエスト本文は不要です。サーバーの現在状態で処理を決めます。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"
statusaction結果
queuedcancelled取消して予約済み Credit を解放。
succeeded / faileddeleted法人 API の記録のみ非表示。素材・台帳は保持し、返金しません。
running / cancelled—HTTP 400
200 · レスポンス例 · ID と URL はプレースホルダー
{
  "task_id": "00000000-0000-4000-8000-000000000001",
  "action": "cancelled",
  "status": "cancelled"
}

削除後の照会・再削除は invalid task_id です。失敗・結果不明タスクの Credit は共通精算・復旧処理に従い、DELETE の繰り返しで返金は早まりません。

参照画像・動画・音声

素材は multipart ではなく content 配列で渡します。同じ種類の順番は配列順で、プロンプトの言及順では変わりません。フレームと reference_* は混在不可。画像の role 省略は first_frame となるため reference_image を明記してください。

typerole上限
image_urlreference_image9枚
video_urlreference_video3本
audio_urlreference_audio3本
image_urlfirst_frame / last_frame各1枚・現在互換性に問題あり
以下の assets.example.com は仮の URL です。Cookie 不要で公開アクセス可能な実際の素材 URL に置き換えてください。

複数の参照画像

リクエスト例 · ブラウザーでは実行しません
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 形式

Media URL examples
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 やローカルパスは不可です。

素材制限(実ファイルで検証)
image30 MiB 以下。JPG/JPEG・PNG・WEBP・HEIC/HEIF(デコーダー依存)。幅・高さ各256〜5760 px、比率0.4〜2.5。
video50 MiB 以下、MP4/MOV、H.264/H.265、音声AAC/MP3、23.976〜60 fps。画像と同じサイズ制限。各2〜15秒、動画参照合計15秒以下。
audio15 MiB 以下、WAV/MP3。各2〜15秒、音声参照合計15秒以下。
JSONJSON・Base64 膨張分を含め64 MiB 以下。大きい素材は URL を推奨。ユーザー保存容量・ワークフロー制限も適用します。

コールバック

作成要求に callback_url を追加します。専用登録 API はありません。作成前に同期 POST challenge を送ります。通信のタイムアウト予算は1秒です。同じ JSON を直ちに返さない場合、作成・課金されません。検証は作成の待ち時間に含まれ、DNS 解決に追加時間がかかる場合があります。

Challenge request / response
{
  "challenge": "ECHO_THIS_VALUE"
}

通知は GET と同じ形式です。約5秒ごとの状態収集で、即時・厳密な順序は保証しません。初回失敗後、直前の失敗から10・30・60秒待機して最大3回再試行(合計4回)します。スキャンやキューにより遅れる場合があります。task.id + status で重複排除し、GET で補完してください。通知失敗による再生成はありません。

通知先は公開到達可能でリダイレクト不可です。HMAC 署名は未提供のため、重要な処理の前にサーバー側キーで GET 照会し、JSON のみを信用しないでください。

エラーとリトライ

完了タスクに動画出力がない場合、GET は HTTP 200、status=failed、error.code=video_output_missing を返し、通知も同じ状態です。自動再生成せず管理者に確認してください。cancelled は現在 error/content/usage を含まず、公式の必須項目は確認待ちです。

リクエストエラーは HTTP エラーと以下の形式を返します。実行失敗の GET は HTTP 200・task.status=failed です。413などゲートウェイ拒否は異なる形式の場合があります。

レスポンス例 · ID と URL はプレースホルダー
{
  "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_errorGET は待機後に再照会。POST は結果不明の可能性があるため記録を確認し、request_id を保管。

リクエスト頻度制限

対象上限共有単位
タスク作成・照会・取消/削除毎分120回同一 Workspace の全キー・対象 API で共有。ポーリングも含みます。
ブラウザーの申請・キー管理毎分120回ユーザー単位で共有。生成 API の枠とは別です。
管理の書き込みさらに毎時30回申請・作成・キー全表示・失効で共有。毎分制限も適用します。

頻度制限と同時実行数は別です。同時実行・待機数はプランとキュー規則に従い、キー追加で枠は増えません。

生成 API は HTTP 429 / rate_limit_error (1002) を返し、現在 Retry-After はありません。頻度を下げ、ポーリングを分散してください。管理 API はブラウザー API のエラー形式です。

上限は現在コードで固定され、管理画面で変更できません。キャッシュ方式のため高並行時は若干超過する場合があり、厳密な容量保証ではありません。

法人 API ドキュメント · FASTART