このエンドポイントは、従来の OpenAI 互換 variation クライアント向けに保持されています。現在の image-to-image ワークフローでは推奨パスではありません。可能な場合は /v1/images/edits と gpt-image-2、または /v1/images/generations で nano-banana-pro などの image-to-image モデルを使用してください。multipart/form-data が必要です。
リクエストボディ
同期リクエストのタイムアウト: ルーティング先の画像プロバイダーによっては、生成完了まで待って最終画像をインラインで返します。高解像度または高品質のリクエストは 1 分前後、またはそれ以上かかることがあるため、HTTP クライアントのタイムアウトは少なくとも 120s に設定してください。作成レスポンスに status: "pending"、task_id、または poll_url が含まれる場合は、返された poll_url をポーリングしてください。
バリエーションの基となる画像。有効な PNG ファイルで、50MB 未満、正方形である必要があります。
従来の variation 互換ルート向けの必須モデル ID。暗黙のデフォルトはありません。現在の image-to-image ワークフローでは、現在のモデルを使って /v1/images/edits または /v1/images/generations を優先してください。
生成する画像の数。1 から 10 の間である必要があります。
従来の variation 互換ルートで生成される画像サイズ。サポートされる値は選択したモデルによって異なります。
生成された画像の返却形式。url または b64_json である必要があります。
レスポンス
生成された画像バリエーションの配列。各オブジェクトには以下が含まれます:
url (string): バリエーション画像の URL(response_format が url の場合)
b64_json (string): Base64 エンコードされた画像(response_format が b64_json の場合)
curl -X POST "https://api.tokenlab.sh/v1/images/variations" \
-H "Authorization: Bearer sk-your-api-key" \
-F "model=your-legacy-variation-model" \
-F "image=@cat.png" \
-F "n=2" \
-F "size=1024x1024"
from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.tokenlab.sh/v1"
)
response = client.images.create_variation(
model="your-legacy-variation-model",
image=open("cat.png", "rb"),
n=2,
size="1024x1024"
)
for image in response.data:
print(image.url)
import OpenAI from 'openai';
import fs from 'fs';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.tokenlab.sh/v1'
});
const response = await client.images.createVariation({
model: 'your-legacy-variation-model',
image: fs.createReadStream('cat.png'),
n: 2,
size: '1024x1024'
});
response.data.forEach(image => console.log(image.url));
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
)
func main() {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
writer.WriteField("model", "your-legacy-variation-model")
file, _ := os.Open("cat.png")
defer file.Close()
part, _ := writer.CreateFormFile("image", "cat.png")
io.Copy(part, file)
writer.WriteField("n", "2")
writer.WriteField("size", "1024x1024")
writer.Close()
req, _ := http.NewRequest("POST", "https://api.tokenlab.sh/v1/images/variations", body)
req.Header.Set("Authorization", "Bearer sk-your-api-key")
req.Header.Set("Content-Type", writer.FormDataContentType())
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
result, _ := io.ReadAll(resp.Body)
fmt.Println(string(result))
}
<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/variations');
$image = new CURLFile('cat.png', 'image/png', 'cat.png');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => [
'model' => 'your-legacy-variation-model',
'image' => $image,
'n' => 2,
'size' => '1024x1024'
]
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
foreach ($data['data'] as $image) {
echo $image['url'] . "\n";
}
{
"created": 1706000000,
"data": [
{
"url": "https://..."
},
{
"url": "https://..."
}
]
}
注意事項
これは従来互換のエンドポイントであり、現在の推奨画像モデルカタログには含まれません。新規連携では /v1/images/edits と gpt-image-2、または /v1/images/generations で operation: "image-to-image" と現在の image-to-image モデルを使用してください。