Imagens

Criar Imagem

Cria uma imagem a partir de um prompt

POST
/v1/images/generations

Visão Geral

Use GET /v1/models?recommended_for=image para obter os modelos de imagem atuais e, em seguida, envie o model selecionado explicitamente.

gpt-image-2 é um modelo GPT Image precificado por token. O TokenLab segue a divisão de uso oficial da OpenAI para tokens de entrada de texto, entrada de imagem, entrada em cache reportada e saída de imagem; ele não é cobrado como um modelo de preço fixo por imagem.

Para a geração de imagem com gpt-image-2, os parâmetros públicos suportados são prompt, n, size, quality, response_format, async, background, output_format, output_compression ou compression, moderation e user. background aceita auto ou opaque; transparent não é suportado. Omita size ou quality para permitir que o TokenLab use auto; valores personalizados de size devem usar o contrato flexível WIDTHxHEIGHT documentado abaixo.

input_fidelity não faz parte dos campos suportados atualmente pelo TokenLab para gpt-image-2; omita-o ou a requisição retornará 400 unsupported_parameter.

Notas sobre o comportamento do modelo

Os modelos da família de imagem Google Gemini não compartilham o mesmo contrato de seletor:

  • gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2.1 e nano-banana-pro suportam aspect_ratio além de resolution (1k, 2k, 4k) para suas operações públicas de texto para imagem, imagem para imagem e edição de imagem.
  • nano-banana-2 suporta aspect_ratio e resolution (1k, 2k, 4k) tanto para geração de texto para imagem quanto de imagem para imagem.
  • gemini-3.1-flash-lite-image e nano-banana-2-lite suportam texto para imagem, imagem para imagem e edição de imagem apenas na resolução 1k.
  • nano-banana suporta aspect_ratio, mas não expõe a seleção pública de resolution.
  • Para imagem para imagem com gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3.1-flash-lite-image ou gemini-3-pro-image, use este endpoint com operation: "image-to-image" e imagens de referência. Envie requisições de edição de imagem para esses modelos para /v1/images/edits.
  • Para requisições de imagem de referência do Nano Banana, use nano-banana-2, nano-banana-2.1, nano-banana-2-lite ou nano-banana-pro neste endpoint (/v1/images/generations) com operation: "image-to-image" e image_urls. Requisições de edição de imagem para nano-banana-2, nano-banana-2.1, nano-banana-2-lite e nano-banana-pro também usam este endpoint, com operation: "image-edit". Não envie requisições de imagem de referência do Nano Banana para /v1/images/edits.
  • Imagens de referência neste endpoint podem ser fornecidas como image_url / image_urls em JSON, ou como um arquivo image multipart. images[] e file_id não são aceitos em /v1/images/generations; crie referências /v1/files apenas para modelos de /v1/images/edits que documentam images[].file_id.

Para famílias de imagem do Google, prefira aspect_ratio e envie resolution apenas quando o modelo suportar explicitamente.

Os modelos de imagem xAI Grok Imagine (grok-imagine-image, grok-imagine-image-2.0 e o legado grok-imagine-image-pro) suportam aspect_ratio além de resolution (1k, 2k). grok-imagine-image-pro é mantido como um ID de compatibilidade para grok-imagine-image-2.0.

Corpo da Requisição

Timeout de requisição síncrona: Algumas requisições de imagem retornam a imagem final em linha e aguardam a conclusão da geração. Requisições de alta resolução ou alta qualidade podem levar quase um minuto ou mais, portanto, defina o timeout do seu cliente HTTP para pelo menos 120s. Se a resposta de criação incluir status: "pending", task_id ou poll_url, siga a poll_url retornada.

modelstringobrigatório

Modelo a ser utilizado (por exemplo, gpt-image-2, flux-pro-1.1 ou nano-banana-pro). Consulte GET /v1/models?recommended_for=image para obter a lista recomendada atual.

promptstringobrigatório

Descrição em texto da imagem desejada.

image_urlstring

URL pública HTTPS da imagem de referência para geração de imagem para imagem. Para requisições de imagem de referência do Nano Banana, defina operation como image-to-image; nano-banana-pro pode incluir resolution.

image_urlsstring[]

URLs públicas HTTPS de imagens de referência. Use isso para uma ou mais imagens de referência em requisições JSON. file_id e images[] não são suportados neste endpoint.

reference_image_urlsstring[]

URLs adicionais de imagens de referência para modelos que distinguem entradas primárias de referências.

imagefile

Arquivo de imagem de referência multipart para geração de imagem para imagem. Use isso quando a imagem de origem for privada ou protegida por cabeçalho. Isso é diferente de um file_id de /v1/files, que não é aceito neste endpoint.

nintegerpadrão: 1

Número de imagens a serem geradas (1-10, dependendo do modelo).

sizestring

Tamanho da imagem. Use isso para famílias de imagem estilo OpenAI e outros modelos que aceitam tamanhos exatos em pixels.

Para gpt-image-2, size aceita auto ou WIDTHxHEIGHT. As dimensões personalizadas devem ser múltiplos de 16, a borda mais longa deve ter no máximo 3840px, a proporção entre a borda longa e a curta deve ser de no máximo 3:1, e o total de pixels deve estar entre 655.360 e 8.294.400. aspect_ratio e resolution não fazem parte dos detalhes atuais do modelo TokenLab para gpt-image-2.

Para modelos de imagem do Google com níveis de resolução (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 e nano-banana-pro), size aceita um tamanho de saída da tabela de tamanhos do modelo, como 1376x768 (16:9 a 1K), ou um nível de resolução: 1K, 2K ou 4K. O TokenLab envia um nível como resolution, portanto, a requisição e seu preço são os mesmos que com resolution. Um nível que o modelo não suporta (por exemplo, 2K no gemini-3.1-flash-lite-image), ou um nível diferente de resolution, retorna 400 com o código invalid_image_size_contract e os allowed_resolutions do modelo. Para esses modelos, a forma recomendada é aspect_ratio com resolution.

aspect_ratiostring

Seletor de proporção (aspect ratio) dependente do modelo.

Valores comuns da família de imagem do Google incluem 1:1, 16:9, 9:16, 3:2 e 2:3.

resolutionstring

Resolução de saída dependente do modelo. gemini-3.1-flash-image, gemini-nano-banana-2.1, gemini-3-pro-image, nano-banana-2, nano-banana-2.1 e nano-banana-pro suportam 1k, 2k e 4k; os modelos de imagem Grok Imagine suportam 1k e 2k. Omita este campo a menos que o modelo e a operação selecionados suportem explicitamente.

qualitystring

Qualidade da imagem. Modelos GPT Image como gpt-image-2 usam auto, low, medium ou high. Outros modelos podem usar valores diferentes; verifique os detalhes do modelo antes de enviar um valor não padrão.

response_formatstring

Como as imagens são retornadas: url ou b64_json.

  • Omitido: quando o modelo retorna bytes de imagem, cada imagem está em data[].b64_json e também em data[].url quando o TokenLab a armazena. Quando o modelo retorna um link, cada imagem está em data[].url.
  • url: cada imagem está apenas em data[].url.
  • b64_json: cada imagem está apenas em data[].b64_json como dados Base64.

Os links são URLs de resultados de mídia do TokenLab. Eles permanecem válidos por 30 dias. Veja Retenção de dados.

asyncbooleanpadrão: false

Defina como true com gpt-image-2 ou modelos de imagem oficiais FLUX/BFL para criar uma tarefa primeiro. Tarefas de imagem assíncronas concluídas retornam URLs independentemente do response_format solicitado; use requisições síncronas quando precisar de b64_json.

stylestring

Seletor de estilo opcional. Envie isso apenas quando o modelo selecionado documentar explicitamente; omita para gpt-image-2 a menos que os metadados do modelo digam o contrário.

userstring

Um identificador único para o usuário final.

Resposta

Resposta em Linha

createdinteger

Timestamp Unix da criação.

dataarray

Array de imagens geradas.

Cada objeto contém:

  • url (string): URL de resultado de mídia do TokenLab da imagem, válida por 30 dias. Não presente quando response_format é b64_json. Quando response_format é omitido, ela estará ausente se o TokenLab não puder armazenar a imagem.
  • b64_json (string): Dados da imagem em Base64. Presente quando response_format é b64_json, ou quando é omitido e o modelo retorna bytes de imagem.
  • revised_prompt (string): Revisão opcional do prompt, quando o modelo selecionado retorna uma.

Resposta de Tarefa Assíncrona

Defina async: true com gpt-image-2 ou modelos de imagem oficiais FLUX/BFL para criar uma tarefa em vez de aguardar a imagem final na requisição de criação. A resposta inclui status: "pending", task_id e poll_url. Consulte /v1/tasks/{task_id} até que a tarefa atinja completed ou failed.

Tarefas de imagem assíncronas retornam apenas URLs de imagem final. Se você precisar de dados de imagem b64_json brutos, use uma requisição síncrona.

O faturamento pode reservar o valor estimado quando a tarefa é criada. Tarefas concluídas são cobradas pelo uso real, e tarefas com falha ou que excederam o tempo limite são liberadas ou reembolsadas.

createdinteger

Timestamp Unix da criação.

task_idstring

Identificador único da tarefa para consulta.

statusstring

Status inicial: pending.

poll_urlstring

URL relativa para consultar resultados, por exemplo /v1/tasks/{id}.

dataarray

Vazio enquanto a tarefa estiver pendente. Tarefas de imagem concluídas retornam URLs de imagem gerada em data[].url.

Quando você receber status: "pending", use poll_url ou GET /v1/tasks/{task_id} para recuperar o resultado.

Requisição

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'];

Exemplo de família de imagem apenas com proporção: para nano-banana, envie aspect_ratio mas omita resolution:

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

Exemplo de imagem de referência do Nano Banana Pro: envie a requisição para /v1/images/generations, não para /v1/images/edits. resolution é opcional e pode ser definida como 1k, 2k ou 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"
}

Exemplo de upload multipart direto para imagens de origem privadas ou locais. Não passe um file_id para /v1/images/generations:

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"

Resposta

{
  "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..."
    }
  ]
}

Escolha um Modelo

Consulte GET /v1/models?recommended_for=image ou use a página de Modelos para disponibilidade, capacidades e preços atuais.

Não codifique um modelo como sempre síncrono ou sempre assíncrono. Se a resposta de criação retornar status: "pending", siga a poll_url e consulte até a conclusão.

Lidando com Respostas Baseadas em Tarefas

Para modelos de imagem, verifique sempre se a resposta contém status: "pending" / status: "processing":

import requests
import time

def generate_image(prompt, model="gpt-image-2"):
    # Criar requisição de imagem
    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()

    # Verificar se é baseada em tarefa
    if data.get("status") in ("pending", "processing"):
        task_id = data["task_id"]
        poll_url = data.get("poll_url")
        print(f"Tarefa de imagem iniciada: {task_id}")

        # Consultar resultado
        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", "A geração falhou"))

            time.sleep(3)
    else:
        # Resposta em linha
        return data["data"][0]["url"]

# Uso
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Imagem gerada: {url}")

O Hy Image 3.5 Preview cria imagens quadradas de 1024 pixels a partir de texto e edita imagens de referência usando instruções escritas. É útil para esboçar visuais e refinar uma composição.

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

Autorização

BearerAuth
AuthorizationBearer <token>

Autenticação por Chave de API. Crie ou gerencie chaves de API em Dashboard > API > API Keys.

Local: header

Cabeçalhos

X-TokenLab-Delivery-Policy?string

Política de entrega por solicitação. Substitui os padrões da API key e do Workspace. Tenta automaticamente o TokenLab Verified primeiro e pode alternar uma vez para Official apenas antes da saída, aceitação da solicitação ou criação de recurso persistente.

Valores permitidos

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

Corpo da requisição

Resposta

application/json

application/json

application/json

application/json

application/json

application/json

application/json