메인 콘텐츠로 건너뛰기

개요

이 엔드포인트는 기존 OpenAI 호환 variation 클라이언트를 위해 유지됩니다. 현재 image-to-image 워크플로에는 권장 경로가 아닙니다. 가능하면 /v1/images/editsgpt-image-2를 사용하거나 /v1/images/generations에서 nano-banana-pro 같은 image-to-image 모델을 사용하세요. multipart/form-data가 필요합니다.

요청 본문

동기 요청 타임아웃: 일부 라우팅된 이미지 제공자는 생성이 완료될 때까지 기다린 뒤 최종 이미지를 inline 으로 반환합니다. 고해상도 또는 고품질 요청은 1분 안팎이거나 그 이상 걸릴 수 있으므로 HTTP 클라이언트 타임아웃을 최소 120s 로 설정하세요. 생성 응답에 status: "pending", task_id, 또는 poll_url 이 포함되어 있으면 반환된 poll_url 을 따라 폴링하세요.
image
file
필수
변형의 기반으로 사용할 이미지. 유효한 PNG 파일이어야 하며, 50MB 미만이고 정사각형이어야 합니다.
model
string
필수
기존 variation 호환 라우트용 필수 모델 ID입니다. 암시적 기본값은 없습니다. 현재 image-to-image 워크플로에서는 현재 모델과 함께 /v1/images/edits 또는 /v1/images/generations를 우선 사용하세요.
n
integer
기본값:"1"
생성할 이미지 수. 1에서 10 사이여야 합니다.
size
string
기존 variation 호환 라우트에서 생성되는 이미지 크기입니다. 지원 값은 선택한 모델에 따라 달라집니다.
response_format
string
기본값:"url"
생성된 이미지가 반환되는 형식. url 또는 b64_json이어야 합니다.
user
string
남용 모니터링을 위한 최종 사용자의 고유 식별자.

응답

created
integer
이미지가 생성된 시점의 Unix 타임스탬프.
data
array
생성된 이미지 변형 배열.각 객체에 포함된 항목:
  • 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/editsgpt-image-2를 사용하거나 /v1/images/generations에서 operation: "image-to-image" 및 현재 image-to-image 모델을 사용하세요.