画像

画像の作成

プロンプトを指定して画像を生成します

POST
/v1/images/generations

概要

GET /v1/models?recommended_for=image を使用して現在の画像モデルを取得し、選択した model を明示的に送信してください。

gpt-image-2 はトークン課金制の GPT Image モデルです。TokenLab は、テキスト入力、画像入力、報告されたキャッシュ入力、および画像出力トークンに関して OpenAI 公式の使用量内訳に従っており、画像ごとの固定料金モデルとしては請求されません。

gpt-image-2 の画像生成では、サポートされている公開パラメータは prompt、n、size、quality、response_format、async、background、output_format、output_compression または compression、moderation、および user です。background は auto または opaque を受け付け、transparent はサポートされていません。size または quality を省略すると TokenLab は auto を使用します。カスタムの size 値は、以下に記載されている柔軟な WIDTHxHEIGHT 規約に従う必要があります。

input_fidelity は、現在の TokenLab でサポートされている gpt-image-2 向けフィールドには含まれていません。省略しない場合、リクエストは 400 unsupported_parameter を返します。

モデル動作に関する注意事項

Google Gemini 画像ファミリーモデルは、同一のセレクター規約を共有していません。

  • gemini-3.1-flash-image、gemini-nano-banana-2.1、gemini-3-pro-image、nano-banana-2.1、および nano-banana-pro は、公開 Text-to-Image、Image-to-Image、および画像編集オペレーションにおいて aspect_ratio と resolution(1k、2k、4k)をサポートしています。
  • nano-banana-2 は、Text-to-Image および Image-to-Image 生成の両方で aspect_ratio と resolution(1k、2k、4k)をサポートしています。
  • gemini-3.1-flash-lite-image および nano-banana-2-lite は、1k 解像度でのみ Text-to-Image、Image-to-Image、および画像編集をサポートしています。
  • nano-banana は aspect_ratio をサポートしていますが、公開の resolution 選択は公開されていません。
  • gemini-3.1-flash-image、gemini-nano-banana-2.1、gemini-3.1-flash-lite-image、または gemini-3-pro-image での Image-to-Image には、このエンドポイントで operation: "image-to-image" と参照画像を使用してください。これらのモデルの画像編集リクエストは /v1/images/edits に送信してください。
  • Nano Banana の参照画像リクエストには、このエンドポイント(/v1/images/generations)で nano-banana-2、nano-banana-2.1、nano-banana-2-lite、または nano-banana-pro を使用し、operation: "image-to-image" と image_urls を指定してください。nano-banana-2、nano-banana-2.1、nano-banana-2-lite、および nano-banana-pro の画像編集リクエストも、このエンドポイントで operation: "image-edit" を指定して使用します。Nano Banana の参照画像リクエストを /v1/images/edits に送信しないでください。
  • このエンドポイントでの参照画像は、JSON の image_url / image_urls、またはマルチパートの image ファイルとして指定できます。/v1/images/generations では images[] および file_id は受け付けられません。/v1/files 参照は、images[].file_id が記載されている /v1/images/edits モデルに対してのみ作成してください。

Google 画像ファミリーでは aspect_ratio を優先し、モデルが明示的にサポートしている場合にのみ resolution を送信してください。

xAI Grok Imagine 画像モデル(grok-imagine-image、grok-imagine-image-quality、およびレガシーの grok-imagine-image-pro)は、aspect_ratio と resolution(1k、2k)をサポートしています。grok-imagine-image-pro は、grok-imagine-image-quality の互換性 ID として維持されています。

リクエストボディ

同期リクエストのタイムアウト: 一部の画像リクエストは最終画像をインラインで返し、生成が完了するまで待機します。高解像度または高品質のリクエストは1分近くまたはそれ以上かかる場合があるため、HTTP クライアントのタイムアウトを少なくとも 120s に設定してください。作成レスポンスに status: "pending"、task_id、または poll_url が含まれている場合は、代わりに返された poll_url に従ってください。

modelstring必須

使用するモデル(例: gpt-image-2、flux-pro-1.1、または nano-banana-pro)。現在の推奨リストを取得するには GET /v1/models?recommended_for=image をクエリしてください。

promptstring必須

希望する画像の説明テキスト。

image_urlstring

Image-to-Image 生成用の公開 HTTPS 参照画像 URL。Nano Banana の参照画像リクエストの場合は、operation を image-to-image に設定してください。nano-banana-pro には resolution を含めることができます。

image_urlsstring[]

公開 HTTPS 参照画像 URL の配列。JSON リクエストで1つ以上の参照画像を指定する場合に使用します。このエンドポイントでは file_id および images[] はサポートされていません。

reference_image_urlsstring[]

プライマリ入力と参照画像を区別するモデル向けの追加の参照画像 URL の配列。

imagefile

Image-to-Image 生成用のマルチパート参照画像ファイル。ソース画像が非公開またはヘッダーで保護されている場合に使用します。これは /v1/files の file_id とは異なり、このエンドポイントでは受け付けられません。

nintegerデフォルト: 1

生成する画像の枚数(1〜10、モデルに依存)。

sizestring

画像サイズ。OpenAI スタイルの画像ファミリーや、正確なピクセルサイズを受け付けるその他のモデルに使用します。

gpt-image-2 の場合、size は auto または WIDTHxHEIGHT を受け付けます。カスタム寸法は両方とも16の倍数である必要があり、長辺は最大 3840px、長辺/短辺の比率は最大 3:1、総ピクセル数は 655,360 から 8,294,400 の間である必要があります。aspect_ratio および resolution は、gpt-image-2 の現在の TokenLab モデル詳細には含まれていません。

解像度ティアを持つ Google 画像モデル(gemini-3.1-flash-image、gemini-nano-banana-2.1、gemini-3-pro-image、gemini-3.1-flash-lite-image、nano-banana-2、nano-banana-2.1、および nano-banana-pro)の場合、size は 1376x768(1K の 16:9)など、モデルのサイズ表の出力サイズ、または解像度ティア(1K、2K、4K)を受け付けます。TokenLab はティアを resolution として送信するため、リクエストとその料金は resolution を使用した場合と同じになります。モデルがサポートしていないティア(例えば gemini-3.1-flash-lite-image での 2K)、または resolution と異なるティアを指定すると、コード invalid_image_size_contract とモデルの allowed_resolutions を含む 400 エラーが返されます。これらのモデルでは、aspect_ratio と resolution を組み合わせた形式が推奨されます。

aspect_ratiostring

モデル依存のアスペクト比セレクター。

一般的な Google 画像ファミリーの値には、1:1、16:9、9:16、3:2、2:3 などがあります。

resolutionstring

モデル依存の出力解像度。gemini-3.1-flash-image、gemini-nano-banana-2.1、gemini-3-pro-image、nano-banana-2、nano-banana-2.1、および nano-banana-pro は 1k、2k、4k をサポートしています。Grok Imagine 画像モデルは 1k および 2k をサポートしています。選択したモデルとオペレーションが明示的にサポートしていない限り、このフィールドは省略してください。

qualitystring

画質。gpt-image-2 などの GPT Image モデルでは auto、low、medium、または high を使用します。他のモデルでは異なる値を使用する場合があります。デフォルト以外の値を送信する前にモデルの詳細を確認してください。

response_formatstring

画像の返却形式: url または b64_json。

  • 省略時: モデルが画像バイトを返す場合、各画像は data[].b64_json に含まれ、TokenLab が保存した場合は data[].url にも含まれます。モデルがリンクを返す場合、各画像は data[].url に含まれます。
  • url: 各画像は data[].url にのみ含まれます。
  • b64_json: 各画像は Base64 データとして data[].b64_json にのみ含まれます。

リンクは TokenLab のメディア結果 URL です。30日間有効です。データ保持 を参照してください。

asyncbooleanデフォルト: false

gpt-image-2 または公式の FLUX/BFL 画像モデルでタスクを最初に作成するには、true に設定します。完了した非同期画像タスクは、リクエストされた response_format に関わらず URL を返します。b64_json が必要な場合は同期リクエストを使用してください。

stylestring

オプションのスタイルセレクター。選択したモデルで明示的に記載されている場合にのみ送信してください。モデルのメタデータに記載がない限り、gpt-image-2 では省略してください。

userstring

エンドユーザーの一意の識別子。

レスポンス

インラインレスポンス

createdinteger

作成時の Unix タイムスタンプ。

dataarray

生成された画像の配列。

各オブジェクトの内容:

  • url (string): 画像の TokenLab メディア結果 URL(30日間有効)。response_format が b64_json の場合は存在しません。response_format が省略されている場合、TokenLab が画像を保存できなかったときは欠落します。
  • b64_json (string): Base64 画像データ。response_format が b64_json の場合、または省略されていてモデルが画像バイトを返す場合に存在します。
  • revised_prompt (string): 選択したモデルがプロンプト修正を返す場合の、オプションのプロンプト修正。

非同期タスクレスポンス

作成リクエストで最終画像を待機する代わりにタスクを作成するには、gpt-image-2 または公式の FLUX/BFL 画像モデルで async: true を設定します。レスポンスには status: "pending"、task_id、および poll_url が含まれます。タスクが completed または failed になるまで /v1/tasks/{task_id} をポーリングしてください。

非同期画像タスクは最終画像の URL のみを返します。生の b64_json 画像データが必要な場合は、同期リクエストを使用してください。

タスク作成時に見積もり額が請求枠として確保される場合があります。完了したタスクは実際のリソース使用量に基づいて請求され、失敗またはタイムアウトしたタスクは解放または返金されます。

createdinteger

作成時の Unix タイムスタンプ。

task_idstring

ポーリング用の一意のタスク識別子。

statusstring

初期ステータス: pending。

poll_urlstring

結果をポーリングするための相対 URL(例: /v1/tasks/{id})。

dataarray

タスクが保留中(pending)の間は空です。完了した画像タスクは、生成された画像の URL を data[].url に返します。

status: "pending" を受信した場合は、poll_url または GET /v1/tasks/{task_id} を使用して結果を取得してください。

リクエスト

cURL
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3-pro-image",
    "prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
    "aspect_ratio": "16:9",
    "resolution": "2k"
  }'
Python
from openai import OpenAI

client = OpenAI(
    api_key="sk-your-api-key",
    base_url="https://api.tokenlab.sh/v1"
)

response = client.images.generate(
    model="gemini-3-pro-image",
    prompt="A cinematic portrait of a white cat sitting on a rainy windowsill",
    extra_body={"aspect_ratio": "16:9", "resolution": "2k"}
)

print(response.data[0].url)
JavaScript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'sk-your-api-key',
  baseURL: 'https://api.tokenlab.sh/v1'
});

const response = await client.images.generate({
  model: 'gemini-3-pro-image',
  prompt: 'A cinematic portrait of a white cat sitting on a rainy windowsill',
  aspect_ratio: '16:9',
  resolution: '2k'
});

console.log(response.data[0].url);
PHP
<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/generations');

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer sk-your-api-key'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'model' => 'gemini-3-pro-image',
        'prompt' => 'A cinematic portrait of a white cat sitting on a rainy windowsill',
        'aspect_ratio' => '16:9',
        'resolution' => '2k'
    ])
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
echo $data['data'][0]['url'];

アスペクト比のみを指定する画像ファミリーの例: nano-banana の場合、aspect_ratio を送信し、resolution は省略します:

{
  "model": "nano-banana",
  "prompt": "A clean editorial product shot of a citrus soda can",
  "aspect_ratio": "16:9"
}

Nano Banana Pro 参照画像の例: リクエストは /v1/images/edits ではなく /v1/images/generations に送信してください。resolution はオプションで、1k、2k、または 4k に設定できます:

{
  "model": "nano-banana-pro",
  "prompt": "Create a clean cinematic character image based on the reference images",
  "operation": "image-to-image",
  "image_urls": ["https://example.com/reference-1.png"],
  "aspect_ratio": "1:1",
  "resolution": "2k"
}

非公開またはローカルのソース画像に対する直接マルチパートアップロードの例。/v1/images/generations に file_id を渡さないでください:

curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -F "model=nano-banana-pro" \
  -F "prompt=Create a clean cinematic character image based on this reference" \
  -F "operation=image-to-image" \
  -F "image=@reference.png" \
  -F "aspect_ratio=1:1" \
  -F "resolution=2k"

レスポンス

{
  "created": 1706000000,
  "data": [
    {
      "url": "https://...",
      "revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
    }
  ]
}

モデルの選択

現在の利用可能性、機能、および料金については、GET /v1/models?recommended_for=image をクエリするか、モデルページ を参照してください。

モデルを常に同期的または常に非同期的としてハードコーディングしないでください。作成レスポンスが status: "pending" を返した場合は、poll_url に従って完了するまでポーリングしてください。

タスクベースのレスポンスの処理

画像モデルの場合、レスポンスに status: "pending" / status: "processing" が含まれているかどうかを常に確認してください:

import requests
import time

def generate_image(prompt, model="gpt-image-2"):
    # Create image request
    response = requests.post(
        "https://api.tokenlab.sh/v1/images/generations",
        headers={"Authorization": "Bearer sk-your-api-key"},
        json={"model": model, "prompt": prompt, "async": True},
        timeout=120
    )
    response.raise_for_status()
    data = response.json()

    # Check if task-based
    if data.get("status") in ("pending", "processing"):
        task_id = data["task_id"]
        poll_url = data.get("poll_url")
        print(f"Image task started: {task_id}")

        # Poll for result
        while True:
            status_resp = requests.get(
                f"https://api.tokenlab.sh{poll_url}" if poll_url else f"https://api.tokenlab.sh/v1/tasks/{task_id}",
                headers={"Authorization": "Bearer sk-your-api-key"},
                timeout=30
            )
            status_resp.raise_for_status()
            status_data = status_resp.json()

            if status_data["status"] == "completed":
                return status_data["data"][0]["url"]
            elif status_data["status"] == "failed":
                raise Exception(status_data.get("error", "Generation failed"))

            time.sleep(3)
    else:
        # Inline response
        return data["data"][0]["url"]

# 使用例
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")

Hy Image 3.5 Preview は、テキストから1024ピクセルの正方形画像を生成し、記述された指示に従って参照画像を編集します。ビジュアルのドラフト作成や構図の推敲に役立ちます。

{
  "model": "hy-image-v3.5-preview",
  "prompt": "A yellow lemon on a white table",
  "size": "1024x1024",
  "n": 1,
  "response_format": "url"
}

認証

BearerAuth
AuthorizationBearer <token>

APIキー認証。Dashboard > API > API KeysでAPIキーを作成または管理します。

場所: header

ヘッダー

X-TokenLab-Delivery-Policy?string

リクエストごとの配信ポリシー。APIキーおよびWorkspaceのデフォルト設定を上書きします。自動的にまず TokenLab Verified を試行し、出力、リクエストの受け入れ、または永続的なリソース作成の前に、一度だけ Official に切り替える場合があります。

指定できる値

  • "auto"
  • "verified"
  • "official"

リクエストボディ

レスポンス

application/json

application/json

application/json

application/json

application/json

application/json

application/json