3行でいうと
- 大きな素材は、ファイルAPIで1回だけ上げ、
file_idで参照できます。小さいファイルは multipart、大きいファイルは署名つきの3段で、5 GiBまでです。 - 上限は、分あたりの依頼数と同時ジョブ数の2つです。超えると429で、待ち行列はなく、すぐに拒否されます。
- 生成の削除は、いまのところSDKになく、HTTPで呼ぶと公式は書いています。削除の完了は、削除のタスクが
completedになったときだけです。 - 管理用のAdmin APIは、エンタープライズの管理者向けの読み取り専用です。LLM Inference は別の製品で、キーは営業を通じて発行されます。
- AI同士をつなぐ場面の案は、11にまとめました。公式の事実ではなく、この記事の案です。
この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。手順は「公式の手順を順に並べたもの」で、コード・コマンドは、公式の例を写したものと、この記事で組んだ例(動作は確かめていません)を、そのつど区別して書きます。実行の前に、公式ページの原文と見比べてください。
先に結論
- ファイル、削除、上限は、キー(クライアント)の範囲で動きます。 ファイルはAPIキーの範囲に属し、エンドユーザーごとのアクセス管理は自分で行う、とファイルのページにあります。
- 公式が recommended と書くもの。 状態の確認は、レート制限のページが「2〜5秒おきが recommended」と書きます(08の1-4の表に、ほかのページの数字も並べました)。
- 「Luma Agents API」の資料と、古い「Dream Machine API」(docs.lumalabs.ai)は別の世代です。 移行の案内は03にあります。
前提:用語をそろえる
- 署名つきURL(presigned URL):期限つきで、ログイン不要で取り出せるURLです。
- ポーリング:結果ができたか、一定間隔で聞きに行くことです(08)。
- RPM:1分あたりの依頼数です。
- OpenAI互換:OpenAIのChat Completionsと同じ形の依頼を受ける、という意味です(LLM Inferenceの節)。
- curl:ターミナルからWebに依頼を出すコマンドです。
5. ファイルAPI:大きな素材を1回だけ上げる
公式のファイルのページの内容です。ファイルはAPIキーの範囲に属し、エンドユーザーごとのアクセス管理は自分で行う、とあります。
| メソッド | パス | 用途 |
|---|---|---|
| POST | /v1/files |
アップロードの作成(小さいファイルは multipart、大きいファイルは署名つきJSON) |
| POST | /v1/files/{file_id}/complete |
署名つきアップロードの完了と取り込みの開始 |
| GET | /v1/files/{file_id} |
1件のメタデータ |
| GET | /v1/files?limit=&purpose=&cursor= |
新しい順の一覧 |
| DELETE | /v1/files/{file_id} |
論理削除(204) |
5-1. 小さいファイル(公式の例の写し)
curl -X POST https://agents.lumalabs.ai/v1/files \
-H "Authorization: Bearer $LUMA_AGENTS_API_KEY" \
-F "file=@./reference.jpg" \
-F "purpose=reference"
purposeはinput(編集の元など。既定)かreference(スタイルや内容の手がかり)です。
5-2. 大きいファイル(署名つき、3段)
POST /v1/filesに、filename、mime_type、size_bytes、purposeのJSONを送る。応答のuploadに、url、method(PUT)、headers、expires_atが入る。upload.urlに、返ってきたヘッダーのとおりに、宣言した大きさのファイルをPUTする。保存先に直接送るので、APIの依頼数の上限には数えられない。-
POST /v1/files/{file_id}/complete。バイトを上げる前に呼ぶと422。 -
署名つきは5 GiBまで。小さいファイルのサイズの上限は、ページに数字がありません(超えると413)。受け付ける画像・動画の形式の一覧も、ページに書かれていません。
5-3. 状態と使い方
- 状態は
pending(取り込み中。参照できない)、ready、failed、deletedです。GET /v1/files/{file_id}でreadyかfailedまで見ます。 - 参照は、
ImageRefを受ける場所(source、image_ref[]、video.start_frame、video.end_frame、video.keyframes[])に、file_idを1つだけ入れます。自分のクライアントのもので、readyの状態のものだけです。 - 削除すると、すぐに使えなくなり、取得は404です。保存されたバイトは、ファイル保持が有効なクライアントでは、非同期で消され、そうでなければ、Lumaの運用者が消すまで残る、と書かれています。使い終えた生成には影響しません。
6. 上限と再試行
レート制限のページの内容です。
| 項目 | 内容 |
|---|---|
| RPM | 60秒の窓での POST /v1/generations の数。画像・動画のすべての種類で1つの枠 |
| 同時ジョブ | 提出から completed/failed までの数 |
| 評価の単位 | APIクライアントごと。両方を通らないと429 |
| 429の見分け方 | detail が「Rate limit exceeded」ならRPM、「Too many concurrent jobs」なら同時ジョブ |
Retry-After |
429に付く、待つ最小の秒数(1以上)。同時ジョブの429では60固定 |
| ヘッダー | X-RateLimit-Limit、-Remaining、-Reset(201とRPMの429に付く)。X-Request-Id、X-API-Version(すべて) |
| 待ち行列 | なし。すぐに拒否される |
| 引き上げ | 方法はページにない。上限は、プランに依存し、platform.lumalabs.ai に表示される、とある |
- 再試行:429、502、503と、失敗コードの
generation_failed、output_not_found、rate_limitedは、自動で再試行してよい、とエラーのページが書きます。Retry-Afterを使い、なければジッターつきの指数バックオフにします。 - 生成の状態の取得は、生成のRPMの枠の対象外です。ただし、
/v1/*全体に、乱用を防ぐ別の上限(毎分数千回)があります。 - 追跡のため、自分で一意の
X-Request-Idを付け、生成のIDと合わせて記録します。サポートへの問い合わせ(support+luma-agents-api@lumalabs.ai)には、生成のID、X-Request-Id、キーを隠した依頼の内容、期待と実際の違いを添える、とFAQにあります。
7. 失敗の見分け方(エラーのページ)
| 種類 | 値 | 意味 | 再試行 |
|---|---|---|---|
| 同期(HTTP) | 400、401、402、403、404、413、422 | 05のつまずき表を参照 | 変更が必要 |
| 同期 | 429、502、503 | 上限、取得の代理が使えない、素材の取り込みが使えない | する |
| 非同期の失敗 | content_moderated |
プロンプトや入力画像が基準に当たった | 変更が必要 |
| 非同期の失敗 | generation_failed、output_not_found |
モデルの内部エラー、出力を取り出せない | 同じ依頼を再送 |
| 非同期の失敗 | budget_exhausted |
途中で残高が尽きた | 入金後 |
| 非同期の失敗 | image_too_large、unsupported_format、corrupt_input、invalid_request |
入力や依頼の問題 | 変更が必要 |
| 非同期の失敗 | rate_limited |
上流の提供元の制限 | する |
- 誤りの応答は、
detailに人が読む文言が入るJSONです。例外として、503のTRANSIENT.SERVICE.UNAVAILABLEはerrorのオブジェクトも付きます。 - FAQは、同期のエラーは課金されない、と書きます。非同期では、
content_moderated、generation_failed、output_not_foundは返金され、budget_exhaustedは一部が課金されることがある、とあります。 - 審査(moderation)は、プロンプト、元画像、参照画像、出力に適用され、無効にできません(FAQ)。実在の人物の名前や、人が写る参照画像で、意図せず引っかかることがある、と書かれています。
8. 生成と出力を消す(生成の削除のページ)
DELETE /v1/generations/{id}は、HTTP 202 と削除のタスクを返し、裏で消されます。SDKには、この入口はまだなく、HTTPで呼ぶ、と書かれています。
この記事で組んだ例(公式の例の生成IDを、変数 $GENERATION_ID に置き換えた形。動作は確かめていません)
curl -X DELETE https://agents.lumalabs.ai/v1/generations/$GENERATION_ID \
-H "Authorization: Bearer $LUMA_AGENTS_API_KEY"
- 前提:生成の全体が終わっていること(そうでないと409
GENERATION.NOT_TERMINAL)。 - 消えるもの:出力(画像、動画)、生成に付けたURLや埋め込みの入力、生成の記録、あなたからのアクセス。
- 消えないもの:
file_idのファイル(DELETE /v1/files/{file_id}で別に消す)、請求の記録。 - 確認:
GET /v1/deletions/{task_id}で、状態がscheduled、queued、runningを経てcompletedになるまで見ます。completedだけが、削除の完了です。Webhookはありません。blockedはLumaの対応が要るので、supportへ。 - 自分の依頼で作ったタスクの期限は、依頼から24時間(
delete_deadline)。保持期間のあとに自動でタスクが作られることもあり、期間の具体的な日数は、ページに書かれていません。 - 削除が有効でないクライアントでは404「Not Found」。このページの記述では、自分のクライアントで使えるかは、画面や契約で確かめる必要があります。
9. 管理用API(Admin API)
- エンタープライズの管理者向けの、読み取り専用のAPIです。使用量のレポートを、社内の集計や分析のシステムに出すために使える、と書かれています。
- 生成用のキーとは別の資格情報です。読み取り専用のキーでは、生成も課金もできず、生成用のキーでは、管理用の入口を呼べません。
- 対象:最上位のエンタープライズのアカウントの管理者。キーは、そのアカウントと、下位のチームの使用量を報告できます。下位のチームのためだけには作れません。
- キーの作り方(公式の順):1. 「Developer settings」を開く。2. 最上位のエンタープライズのアカウントを選ぶ。3. 「Admin read-only keys」の節で「New Read key」を選ぶ。4. 連携の名前を付ける。5. 作ってコピーする(秘密の値は1回だけ表示)。6. 秘密の値として保管する。
- 節が表示されない場合は、アカウントが対象でないか、管理者の権限がない、とあります。
- 入口:
GET /v1/team/usage-breakdown。サブチーム、ユーザー、ボード、プロジェクト、製品、モデル、メディア、役割、暦の期間で、クレジットの使用量をまとめます。 - 失効の手順、ヘッダーの書き方、コード例は、このページに書かれていません。連携ごとに別のキーにして、個別に失効できるようにする、とあります。
10. LLM Inference:別の製品
- LumaのAPIの資料に、「LLM Inference」というページがあります。GLM のモデルを、OpenAIのChat Completionsと同じ形(OpenAI互換)で提供するもので、LLMのルーターや再販事業者向けと書かれています。画像・動画のAPIとは、接続先(https://inference.lumalabs.ai/v1)、キー、請求が別です。
- モデルは
glm-5.2(文脈長262,144、最大出力32,768)。道具の呼び出し、JSONモード、構造化出力に対応します。 - キーは、Lumaが推論のアカウントを用意するときに発行します。営業に連絡して用意するとあり、Luma Agentsのキーとは別です。後払いの従量課金です。
- Anthropic形式の入口や互換の記述は、このページにありません。
- 公式のOpenAI SDKの接続先を差し替える例が、ページにあります。
11. AIとAIをつなぐ:この記事の案
以下は、公式の資料からの事実ではなく、事実を組み合わせたこの記事の案です。
| 場面 | 案 | 根拠になる公式の記述 |
|---|---|---|
| コードを書かせるAIに、APIの呼び出しを書かせる | AIには、キーの実値を渡さず、環境変数 LUMA_AGENTS_API_KEY を読む形のコードを書かせる。ドキュメントのURL(クイックスタート、各パラメータのページ)と、この記事の表を渡す | キーは環境変数に入れ、SDKが自動で読む(05) |
| 生成の完了を待つ処理 | 状態の確認の間隔、上限の時間、署名つきURLの期限(1時間)を、コードに入れてもらう | 08の1-4の表、署名つきURLは1時間 |
| 複数のAIやユーザーの依頼をまとめて流す | user_id に、個人情報を含まない固定のIDを付ける。上限(RPMと同時ジョブ)で429を受けたときの再試行を入れる |
user_id(クイックスタート)、レート制限のページ |
| 素材の受け渡し | 大きな素材は、ファイルAPIで1回上げ、file_id で参照する |
ファイルのページ |
| 社内のAI基盤から使量を見る | Admin API の usage-breakdown を、分析のシステムに取り込む |
Admin APIのページ(対象は、エンタープライズの管理者) |
| OpenAI互換の道具から、別の言語モデルを呼ぶ | LLM Inference の接続先とキー(営業を通じて発行)に差し替える | LLM Inferenceのページ |
- FAQは、キーをパスワードのように扱い、ソース管理やクライアント側のコードに置かない、と書いています。会話にキーを貼ることへの明記は、読んだ範囲にありません。この記事の見立てでは、キーの受け渡しは人が行い、AIには環境変数を読むコードだけを書かせる形になります。
12. 外し方のまとめ(API側)
| 対象 | 公式の資料に書かれていること |
|---|---|
| APIキー | プラットフォームのダッシュボードで失効。失効したキーは元に戻せない(FAQ)。ダッシュボードの画面は今回読めていない |
| 管理用の読み取りキー | 失効の手順は、Admin APIのページに記載がない |
| ファイル | DELETE /v1/files/{file_id} |
| 生成と出力 | DELETE /v1/generations/{id}(HTTP。SDKにはない) |
| データの書き出し | FAQは、support に依頼する、と書く |
| 自動チャージ | ダッシュボードで設定(05のB-3)。止め方の画面は読めていない |
気をつけること
- この記事は、実際に使って確かめた記録ではありません。公式のドキュメントを読んだ範囲です。
- 読めなかったページ。 開発者ダッシュボード(platform.lumalabs.ai)は、取得を拒まれて読めませんでした。キーの失効、自動チャージ、上限の確認の画面は、FAQの記述の範囲です。Admin APIの
usage-breakdownの詳細ページ、APIリファレンス、料金のページ(今回は読み直していません。03にあります)は、今回読んでいません。 - 生成の削除のページが書く、保持期間と、自動の削除の日数は、具体的な数字がありません。
- 動画の料金は、一般提供の前に変わることがある、と料金のページに書かれています(03)。この記事では数字を書いていません。
- 公式の記事の数字や評価は、会社自身の説明です。独立した検証は、読んだ範囲では見つかっていません。
- 今回取得した公式ページの要約に、AIアシスタントへの指示のような文は見つかりませんでした。
- 契約や規約の解釈は、必要なら公式や専門家に確認してください。この記事は法律の助言ではありません。
出典
- Quickstart(Luma Agents API、Luma AI、確認日 2026-10-25)
- Files(Luma Agents API、Luma AI、確認日 2026-10-25)
- Generation deletion(Luma Agents API、Luma AI、確認日 2026-10-25)
- Rate limits and headers(Luma Agents API、Luma AI、確認日 2026-10-25)
- Error handling(Luma Agents API、Luma AI、確認日 2026-10-25)
- FAQ(Luma Agents API、Luma AI、確認日 2026-10-25)
- Admin API(Luma Agents API、Luma AI、確認日 2026-10-25)
- LLM Inference(Luma Agents API、Luma AI、確認日 2026-10-25)