3行でいうと
- この記事の連携は、すべてAPIキーがあって成り立ちます。キーは、API用のクレジットを買ってから作ります。Webアプリのトークンとは別です。キーは、人に見せないものです。
- 結果は、「こちらから取りに行く(polling)」か「Webhookで通知を受ける」で受け取ります。公式のAPIのFAQは、画像生成ではwebhookの設定が「best practice」だと書いています。
- 渡るデータは、プロンプト、入力画像、設定です。公式のAPIのページは、入力画像は非公開で学習に使わない、
publicをfalseにした生成も学習に使わない、と書いています。 - 外すときの要になるのは、キーを消すことです。API Accessのタブでキーを消せる、とAPIのFAQは書いています。
- BlueprintsのAPIは、開発者向けドキュメントとヘルプで書き方が違います。併記します。
この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。
手順は、公式の手順を順に並べたものです。設定例は、「公式の例の写し」か、「公式の記載に合わせて、この記事で組んだ例(動作は確かめていません)」のどちらかに、そのつど分けて書きます。公式ページは要約の形で取得したため、設定ファイルやコードの中身が原文と違う可能性があります。使う前に、公式ページの原文を見てください。画面の表記は変わるので、手元の画面と照らして読んでください。
先に結論
- この記事の連携は、APIキーが前提です。 キーの作り方は05のEにあります。ここでは、キーを使う側(呼び出す側)の手順を書きます。
- 渡るデータは、つなぎ方ごとに違います。 この記事の範囲(API、SDK、Get API Code、Blueprints)では、プロンプトと入力画像と設定が、Leonardoのサーバーへ渡ります。Webhookでは、完了の情報が、あなたのサーバーへ届きます。
- 公式の資料の間で書き方が違う所は、併記します。 BlueprintsのAPIが、その1つです。
- MCP、Canva、AI同士の組み合わせの案は、08にあります。
前提:用語をそろえる
- REST API:URLにリクエストを送って、結果を受け取る、標準的なAPIの形です。Leonardo.Aiの基本のアドレスは
https://cloud.leonardo.ai/api/rest/v1です(Quick StartとTypeScript SDKのREADMEに出てくる表記)。 - APIキー/Production APIキー:APIを使う合い鍵です。旧い形のUser APIキーは非推奨で、新しく作るのはProduction APIキーです(05を参照)。
- Bearerトークン:
authorizationヘッダーにBearer <キー>の形で送る方式です。 - Webhook:生成が終わったとき、Leonardoのほうから、あなたのサーバーへ通知を送る仕組みです。
- SDK:APIを、プログラミング言語から使いやすくした部品です。
- Blueprint:Webアプリにある、ひな型の流れです。一部は、APIからも実行できる、と開発者向けドキュメントは書きます。
- ヘッダー:HTTPの通信に付ける、追加の情報です。認証のキーを載せる所です。
この記事(その1)で扱うつなぎ方
| つなぎ方 | 相手 | 認証 | 公式の手順の有無 | この記事の節 |
|---|---|---|---|---|
| REST API | 自分のコード、他のソフト | APIキー(authorization: Bearer) |
Quick Startにあり | 1 |
| Webhook | 自分のサーバー | callback用のキー(authorization: Bearerで送られる) |
あり | 2 |
| Get API Code | 自分のコード | Production APIアカウント | あり | 3 |
| Blueprints(API) | 自分のコード | APIキー | あり(Blueprints Guide) | 4 |
| Python SDK/TypeScript SDK | Python、Node.jsなど | bearer_auth/bearerAuth |
READMEにあり | 5 |
MCP(Cursorなど)、Edit in Canva、Make.com、Pabbly Connectは、08です。
1. REST APIで呼び出す(Quick Startの順)
設定する画面と書く内容
- 画面:
https://app.leonardo.ai/api-access(または、Webアプリの左メニューの「API Access」)。05のEの手順で、API用のクレジットを買い、「Create New Key」でキーを作ります。 - 呼び出す側(あなたのコードやコマンド):キーを
authorization: Bearer <YOUR_API_KEY>として送ります。acceptとcontent-typeはapplication/jsonです。 - 呼び出しの例は、05のEに載せたQuick Startのcurl(
POST https://cloud.leonardo.ai/api/rest/v1/generations)です。生成が実行されるので、API用のクレジットが使われます。
結果の取り方
公式の資料にある、取り方は次のとおりです。
| 方法 | 公式の記述 |
|---|---|
| polling(こちらから取りに行く) | 生成の応答には generationId が含まれる。GET https://cloud.leonardo.ai/api/rest/v1/generations/<generationId> を呼ぶと、画像のアドレスが generations_by_pk.generated_images[].url に入る(Blueprints Guideの最後の手順に載っている形)。まだ終わっていないと、generated_images が空で、状態が PENDING。COMPLETE か FAILED になるまで確かめる(APIのFAQ) |
| webhook(通知で受ける) | 次の節。APIのFAQは、画像生成ではwebhookの設定が「best practice」だと書いている(Webhookのガイド自体には、「recommended」の語は無い) |
渡るデータ
- あなたからLeonardoへ:プロンプト、モデルのID、サイズ、枚数などの設定、入力画像。
- 入力画像:公式のAPIのページは、入力画像は非公開で、あなただけに見え、学習には使われず、リクエストのパラメータを取り出すためだけに使う、と書いています。削除は、「Delete Init Image」のエンドポイントでできる、と書かれています。
- 生成した画像:APIのページは、生成のときに
publicを false にすれば、非公開で、APIで作った画像は学習に使わない、と書いています。 - 画像の期限:APIのFAQは、生成した画像は期限切れにならず、Webアプリにも残る、と書いています。
- 権利:APIのページは、入力の権利は利用者にあり、出力の権利は利用規約に基づいて利用者に割り当てる、と書いています(04を参照)。
- 認証の取得(SOC 2):APIのページは、SOC 2のType IとType IIを取得している、と書いています。リンクはなく、中身は読めていません。
権限と上限
| 項目 | 公式の記述 |
|---|---|
| キーの権限の範囲 | Production APIキーは、すべてのエンドポイントで使える(旧いUser APIキーは非推奨) |
| キーの数 | 1アカウントにつき10個まで |
| 同時に動かせる数 | Pay as you goで「Up to 10 concurrent generations」。上げたいときはカスタムプラン(APIのページ)。細かい決まりの「Guide to Concurrency, Queue and Rate Limit」のページは、サイトが機械の取得を許可せず、読めていません |
| 課金 | Webアプリの購読とは別。ドル建てのAPI Credit。期限はなし |
| 費用の見積もり | WebFAQは、アプリのPricing Calculatorか、そのAPIのエンドポイントで見積もれる、と書いている |
外し方
| 目的 | 公式の記述 |
|---|---|
| 1つのキーを使えなくする | 使わないキーは、API Accessのタブで消す(APIのFAQ)。「消すと、そのキーが無効になる」と明記したページは、読んだ範囲では見つからなかった |
| webhookの設定を変える・外す | 変更するには、新しいProductionキーを、新しい設定で作り、そちらに切り替えて、旧いキーを消す(Webhookのガイド) |
| APIのアカウントごと | 別々には消せない。Webのアカウントを消すと、APIのアカウントも削除の予定になり、データは戻らない(APIのFAQ) |
うまくいかないとき
05のつまずき表と、公式のエラー一覧(API Error Messages)を見ます。代表的な対応です。
| 表示・症状 | 原因(公式の記述) | 直し方 |
|---|---|---|
| Invalid response from authorization hook/Authentication hook unauthorized this request | キーの形が不正、または間違い | キーが正しいか、authorization: Bearer <キー> の形かを見る |
| 200なのに画像の配列が空 | 生成が終わっていない | 状態がCOMPLETEかを見る。またはwebhook |
| 400 Too many images | num_images が上限を超えた |
減らす、または分ける |
| 403 content moderation filter | 審査に引っかかった | プロンプトを直す |
<MODEL_ID> is not supported within the Production API |
そのモデルが、Production APIにない | 別のモデルIDを使う |
| モデルのIDが分からない | 公式のFAQ:List Platform Modelsのエンドポイント、またはGet API Code、またはWebアプリの「Finetune Models」→「Platform Models」→「View More」で調べる | 同左 |
| 自分で訓練したモデルのID | Webアプリの「Finetune Models」→「Your Models」→「View More」(FAQ) | 同左 |
2. Webhook(生成の完了通知)を受ける
公式ドキュメント「Guide to the Webhook Callback Feature」が書く範囲です。
設定する画面
- Production APIキーを作る流れ(API Accessの「Create New Key」)の中に、webhookのコールバックURLと、webhookのコールバック用のAPIキーを入れる欄があります。どちらも、キーを作るために必須ではありません。
- コールバックURLは、HTTPSでなければなりません。httpのURLを入れると、「Key Creation Error Occurred」になる、とAPIのエラー一覧は書いています。
- 設定を変えるには、新しい設定で新しいキーを作り、切り替えてから、旧いキーを消します。
- メニューの正確な場所やボタンの表記は、このガイドでは書かれていません。手元の画面と照らしてください。
渡るデータ(Leonardoからあなたのサーバーへ)
- 形式:POSTで、JSON。
- 認証:Leonardoは、あなたが決めたcallback用のキーを、
authorization: Bearer <callback用のキー>として送ります。受け側で、このヘッダーを受け取れるようにします。 - そのほかのヘッダーの例:
content-type: application/json、accept: application/json, text/plain, */*、user-agent: axios/1.4.0(ガイドのサンプルの表記)。 - 中身の構造(ガイドのサンプルを、構造だけに縮めた形。全文は公式ページで確認):
{
"type": "image_generation.complete",
"object": "generation",
"timestamp": 1699490546932,
"api_version": "v1",
"data": {
"object": {
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"status": "COMPLETE",
"images": [
{
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"url": "https://cdn.leonardo.ai/...",
"generationId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
]
}
}
}
- 実際には、
data.objectの中に、プロンプト、モデル、apiKeyのオブジェクトなども含まれます。ガイドのサンプルでは、apiKeyの中にid、key、name、type(PRODUCTION)、webhookCallbackUrl、webhookCallbackApiKeyが並んでおり、callback用のキーの値(サンプルでは「abcd」)も入っていました(要約経由で確認。原文で確かめてください)。受け側のログや保存先に、これらの値が残る可能性があります。 - イベントの種類:ガイドに載っているのは
image_generation.completeだけです。 - 再送(リトライ)の決まり:ガイドには書かれていません。
通信を許可する送信元(ガイドが挙げる6つのIPアドレス)
35.173.108.170
34.239.69.60
52.73.75.186
3.229.99.26
44.218.0.197
174.129.230.221
アドレスは変わる可能性があります。使う前に公式ページで最新を確認してください。
うまくいかないとき(ガイドの確認点)
| 確認すること | 内容 |
|---|---|
| ヘッダー | 受け側が、authorization: Bearer を受け付けるか |
| ファイアウォール | IPアドレス、場所、ヘッダーで、通信を止めていないか。上の6つのアドレスを許可する |
| 証明書 | SSL証明書の連鎖(中間証明書を含む)が正しいか。ガイドは、確認のコマンドとして openssl s_client -showcerts -connect YOUR_DOMAIN:443 -servername YOUR_DOMAIN を挙げている |
| URL | HTTPSか |
3. Get API Code:Webで作った設定から、コードを出す
公式ドキュメント「Guide to Get API Code」が書く手順です。
手順
- Webアプリで、画像か動画を作ります。モデルを選び、設定が合うまで調整します。
- 生成が終わったら、その作品の3点のメニュー(⋯)を押します。
- 「Get API Code」を選びます。
- 表示の中で、言語を選びます(cURL、Python、Node.js)。
- コピーのボタンで、コードをコピーします。生成の設定と、正しいAPIのエンドポイントが入っています。
- コードを自分のプロジェクトに貼り、
YOUR_API_KEYを、自分のProduction APIキーに置き換えます。
条件と注意
- 有効なProduction APIのアカウントが必要です。
- すべてのモデルが対応しているわけではありません。 対応しないモデルでは、使えない旨のメッセージが出ます。その場合は、ドキュメントの各モデルのガイド(Image Generation、Video Generation、Legacy Generationの各章)にあるサンプルを使います。
- ガイドは、規模を大きくする前に、数回、試すように書いています。
- 渡るデータ:このコードを動かすと、1の節と同じく、APIにリクエストが送られ、API用のクレジットが使われます。
4. BlueprintsをAPIから実行する
公式ドキュメント「Blueprints Guide」が書く手順です。公式の資料の間に、書き方の違いがあります。
| 資料 | 書かれていること |
|---|---|
| 開発者向けドキュメント「Blueprints Guide」 | APIに対応しているBlueprintを、APIから実行できる。自分でBlueprintを作る機能は「Coming Soon」(03で読んだ内容)。 |
| ヘルプ「Blueprints by Leonardo.Ai」 | APIでの利用は今後の予定(「Soon, you'll be able to ... access them through the Leonardo API」の趣旨)。自分のBlueprintの作成、共有、APIでの組み込みも、今後の予定 |
どちらが現在の状態かは、公式の資料では確認できていません。Blueprints Guideの手順は、次のとおりです(要約経由で取得)。
手順(Blueprints Guideの順番)
どのリクエストも、authorization: Bearer <YOUR_API_KEY> を付けます。
- (任意)Blueprintの一覧:
GET https://cloud.leonardo.ai/api/rest/v1/blueprints。ガイドの例は、first(件数、例は10)とplatforms: ["API"](APIに対応するものだけ)を渡しています。一覧の応答の形は、ガイドには載っていません。 - (任意)詳細を見る:
GET https://cloud.leonardo.ai/api/rest/v1/blueprints/<BlueprintのID> - (必須)バージョンを取る:
GET https://cloud.leonardo.ai/api/rest/v1/blueprints/<BlueprintのID>/versions。応答に、akUUID(実行に使うバージョンID)、cost(費用)、uiMetadata.inputs(必要な入力。nodeIdとsettingNameがある)が入ります。nodeIdとsettingNameは、この応答のとおりに使います。 - 入力を作る:1つの入力は、
value、nodeId、settingNameの3つです。画像の入力はsettingName: "imageUrl"、文字の変数はsettingName: "textVariables"で、値は{"name": ..., "value": ...}の配列です。 - (必須)実行する:
POST https://cloud.leonardo.ai/api/rest/v1/blueprint-executions。本文にblueprintVersionIdとinput(nodeInputs、public、collectionIds)を入れます。応答のakUUIDを控えます。 - (任意)状態を見る:
GET https://cloud.leonardo.ai/api/rest/v1/blueprint-executions/<akUUID> - (必須)生成のIDを取る:
GET .../blueprint-executions/<akUUID>/generations。各項目にstatus、generationId、failedReasonがあります。 - (必須)出力を取る:
GET https://cloud.leonardo.ai/api/rest/v1/generations/<generationId>。画像のアドレスはgenerations_by_pk.generated_images[].urlにあります。
条件と注意
- 画像の入力は、Leonardoのサーバー(CDN)にある画像でなければなりません。自分の画像は、先に「Upload Init Image」のAPI(署名つきURLを使う方式)でアップロードします。
- 費用は、Blueprintごとに違い、バージョンの応答の
costで、実行する前に分かります。 - ガイドの中に、複数の入力の例で
sourceImageという設定名が出てくる箇所があり、バージョンの応答のimageUrlと合っていません。ガイド自身は、バージョンの応答のほうが確かな基準、という趣旨で書いています(取得した要約の注記)。 - 状態の値は、ガイドが例に出しているのは
COMPLETEDで、ほかの値の一覧は載っていません。
5. 公式SDK(PythonとTypeScript)を使う
公式ドキュメント「Leonardo.Ai Official SDKs」は、PythonとTypeScriptの2つを挙げています。インストールは05のFにあります。ここでは、認証と呼び出しの形を、READMEに沿って書きます。READMEの例は、どちらも、Blueprintを実行する呼び出しです。
Python(READMEの例を短くしたもの。要約経由のため、原文で確認)
from leonardo_ai_sdk import LeonardoAiSDK
from leonardo_ai_sdk.models import shared
with LeonardoAiSDK(
bearer_auth="<YOUR_BEARER_TOKEN_HERE>",
) as las_client:
res = las_client.blueprints.execute_blueprint(request={
"blueprint_version_id": "550e8400-e29b-41d4-a716-446655440000",
"input": {
"collection_ids": [],
"node_inputs": [
{
"node_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"setting_name": shared.SettingName.TEXT,
"value": "A futuristic cityscape at sunset",
},
],
"public": False,
},
})
assert res.one_of is not None
print(res.one_of)
上の例は、READMEの例から、node_inputs の項目の一部(文字の変数、画像のURLの入力)を省いて、短くしたものです。全文は、GitHubのREADMEにあります。"<YOUR_BEARER_TOKEN_HERE>" の所に、自分のキーを直接書く形は、READMEの書き方ですが、キーをソースコードに書き込むことになります。環境変数を読む形にする方法の一例は、05のEにあります(この記事の案)。
TypeScript(READMEから、認証の部分だけの写し)
import { Leonardo } from "@leonardo-ai/sdk";
const leonardo = new Leonardo({
bearerAuth: "<YOUR_BEARER_TOKEN_HERE>",
});
呼び出しは、leonardo.blueprints.executeBlueprint({...}) の形です。全文はREADMEにあります。
SDKが扱える範囲(READMEの記述)
| 項目 | Python | TypeScript |
|---|---|---|
| 認証 | bearer_auth(HTTP Bearer) |
bearerAuth(HTTP Bearer) |
| 資源のグループ | 14のグループ、55のメソッド(READMEの数) | 同様のグループ。メソッド名はキャメルケース |
| 主な操作 | 画像の生成、動画(Motion)、Blueprints、Elements、Models、Dataset、Variation(アップスケールなど)、PricingCalculator、Prompt(改善、ランダム)、User(自分の情報)、3Dのアセット、Realtime Canvas、Texture | 同様。Mediaのグループもあり |
| エラー | 基底は LeonardoAiSDKError。status_code、body などを持つ。応答の検証の失敗は ResponseValidationError |
基底は LeonardoError。statusCode、body など。ネットワークのエラーも別の型 |
| 再試行(リトライ) | 一部のエンドポイントで対応。呼び出しごと、または初期化時に設定 | 同様。retries(呼び出しごと)、retryConfig(初期化時) |
| 注意 | ベータ。メジャーバージョンの変更なしに、壊れる変更がありうる。バージョンを固定するよう書かれている | READMEにベータの表示は、読んだ範囲では見つからなかった。ログ出力(debugLogger)は、キーなどの秘密が出る可能性があるので、手元の開発でだけ使うよう書かれている |
PythonとTypeScriptで、資源のグループに違いがあります(TypeScriptにはMediaがある、PythonにはTextureがある、など)。使う前に、READMEで、使いたい操作があるかを確かめてください。
渡るデータ・外し方
- 渡るデータは、1のREST APIと同じです。SDKは、同じAPIを呼ぶ部品です。
- 外すには、プロジェクトからパッケージを消し、使っていたキーをAPI Accessのタブで消します。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。公式の資料を読んだ範囲です。画面の表記は、手元の画面と照らしてください。
- 公式ページは、要約の形で取得しました。コード、アドレス、IPアドレスは、原文と違う可能性があります。 使う前に、公式ページの原文を見てください。
- 開発者向けドキュメントの「Guide to Concurrency, Queue and Rate Limit」は、サイトが機械の取得を許可せず(robots_disallowed)、読めていません。同時に動かせる数の細かい決まりや、レート制限の数字は、書いていません。
- 開発者向けドキュメントのQuick Startのページには、AIエージェント向けの案内文(ドキュメントの索引と、「.md」を付けるとMarkdown版が読める、という趣旨)が入っていました。この記事は、その案内に従って取得先を決めたものではありません。
- BlueprintsのAPIは、開発者向けドキュメントとヘルプで、書き方が違います(4の節)。
- コミュニティ製・第三者製の連携は、第三者の資料を根拠にしない方針のため、調べていません(存在しない、という意味ではありません)。
- APIキーは、人に見せないものです。共有する設定ファイル、公開のリポジトリ、スクリーンショットに入れないよう注意してください。この記事のキーの欄は、すべてプレースホルダです。
- 課金:API用のクレジットは、Webアプリのトークンとは別の課金です。金額は書いていません。公式で確認してください(04を参照)。
- 規約や仕様は変わります。使う前に、公式で最新を読んでください。この記事は法律の助言ではありません。
出典
- Quick Start Guide(Leonardo.Ai API Documentation、確認日 2026-10-25)
- Guide to the Webhook Callback Feature(Leonardo.Ai API Documentation、確認日 2026-10-25)
- Guide to Get API Code(Leonardo.Ai API Documentation、確認日 2026-10-25)
- Blueprints Guide(Leonardo.Ai API Documentation、確認日 2026-10-25)
- General FAQs(Leonardo.Ai API Documentation、確認日 2026-10-25)
- API Error Messages(Leonardo.Ai API Documentation、確認日 2026-10-25)
- Leonardo.Ai Official SDKs(Leonardo.Ai API Documentation、確認日 2026-10-25)
- Leonardo Python SDK(GitHub、Leonardo-Interactive、確認日 2026-10-25)
- Leonardo TypeScript SDK(GitHub、Leonardo-Interactive、確認日 2026-10-25)
- Developer API(Leonardo.Ai、確認日 2026-10-25)
- API Reference and Guides (For Developers)(Leonardo.Ai Help Center、確認日 2026-10-25)
- Blueprints by Leonardo.Ai(Leonardo.Ai Help Center、確認日 2026-10-25)
- Frequently Asked Questions(Leonardo.Ai Help Center、確認日 2026-10-25)