Imagens
Criar imagem
Cria uma imagem a partir de um prompt
Visão geral
Para agentes de código, descubra primeiro a lista de imagens recomendadas atuais com GET /v1/models?recommended_for=image e, em seguida, envie o model selecionado explicitamente para este endpoint.
gpt-image-2 é um modelo GPT Image com cobrança por token. A TokenLab segue o detalhamento oficial de usage da OpenAI para liquidar tokens de entrada de texto, entrada de imagem, entrada em cache quando informada, e saída de imagem; ele não é cobrado como preço fixo por imagem.
Para geração de imagens com gpt-image-2, os parâmetros públicos aceitos 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. Se size ou quality for omitido, a TokenLab usa auto; valores personalizados de size devem seguir o contrato flexível WIDTHxHEIGHT documentado abaixo.
input_fidelity não faz parte dos campos admitidos atual da TokenLab para gpt-image-2; omita esse campo ou a solicitação retornará 400 unsupported_parameter.
Observações sobre comportamento dos modelos
Google Gemini não usam exatamente o mesmo contrato de seleção:
gemini-3.1-flash-image,gemini-3-pro-imageenano-banana-proaceitamaspect_ratiomaisresolution(1k,2k,4k) para suas operações públicas text-to-image e image-edit/image-to-image.nano-banana-2aceitaaspect_ratioeresolution(1k,2k,4k) para text-to-image e image-to-image.gemini-2.5-flash-image,nano-bananaenano-banana-editaceitamaspect_ratio, mas não expõem seleção pública deresolution.- Para solicitações Nano Banana com imagem de referência, use
nano-banana-editounano-banana-proneste endpoint (/v1/images/generations) comoperation: "image-to-image"eimage_urls. Não envie solicitações de referência Nano Banana para/v1/images/edits. - Imagens de referência neste endpoint podem ser enviadas como JSON
image_url/image_urlsou como arquivo multipartimage./v1/images/generationsnão aceitaimages[]nemfile_id; referências de/v1/filessó valem para modelos de/v1/images/editsque documentamimages[].file_id.
Para as 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-quality e o legacy grok-imagine-image-pro) aceitam aspect_ratio mais resolution (1k, 2k). grok-imagine-image-pro é mantido como ID de compatibilidade para grok-imagine-image-quality.
Corpo da requisição
Timeout de solicitações síncronas: algumas solicitações de imagem retornam a imagem final inline e aguardam a geração terminar. Solicitações de alta resolução ou alta qualidade podem levar perto de um minuto ou mais, então configure 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 o poll_url retornado.
Modelo a usar (por exemplo, gpt-image-2, flux-pro ou nano-banana-pro). Consulte GET /v1/models?recommended_for=image para a lista recomendada atual.
Descrição em texto da imagem desejada.
URL HTTPS pública de imagem de referência para geração image-to-image. Em solicitações Nano Banana com imagem de referência, defina operation como image-to-image; nano-banana-pro pode incluir resolution, enquanto nano-banana-edit deve omiti-lo.
URLs HTTPS públicas de imagens de referência. Use para uma ou mais imagens de referência em requests JSON. file_id e images[] não são suportados neste endpoint.
URLs adicionais de imagens de referência específicas do modelo para provedores que distinguem imagens principais de referências.
Arquivo multipart de imagem de referência para geração image-to-image. Use quando a imagem de origem for privada ou exigir headers. Isso não é um file_id de /v1/files; este endpoint não aceita file_id.
1Número de imagens a gerar (1-10, dependendo do modelo).
Tamanho da imagem. Use isto para famílias de imagem no estilo OpenAI e outros modelos que aceitam tamanhos exatos em pixels.
Para gpt-image-2, size aceita auto ou WIDTHxHEIGHT. Dimensões personalizadas devem ter ambos os lados como múltiplos de 16, a maior aresta deve ter no máximo 3840px, a razão maior/menor lado deve ser no máximo 3:1, e o total de pixels deve ficar entre 655,360 e 8,294,400. aspect_ratio e resolution não fazem parte dos detalhes atuais do modelo da TokenLab para gpt-image-2.
Para famílias de imagem Google Gemini, size é tratado como um alias de compatibilidade que mapeia para o aspect_ratio nos detalhes do modelo e, quando suportado, para resolution. Para esses modelos, prefira enviar aspect_ratio diretamente.
Seletor de proporção dependente do modelo.
Valores comuns para as famílias de imagem do Google incluem 1:1, 16:9, 9:16, 3:2 e 2:3.
A resolução depende do modelo. gemini-3.1-flash-image, gemini-3-pro-image, nano-banana-2 e nano-banana-pro aceitam 1k, 2k e 4k; os modelos de imagem Grok Imagine aceitam 1k e 2k. Envie este campo somente se o modelo e a operação o aceitarem explicitamente.
Qualidade da imagem. Modelos GPT Image como gpt-image-2 usam auto, low, medium ou high. Outras famílias de imagem podem usar valores específicos do provedor; verifique os metadados do modelo antes de enviar valores não padrão.
urlFormato da resposta: url ou b64_json. O padrão é url.
url retorna as URLs em data[].url; b64_json retorna os dados de imagem Base64 em data[].b64_json.
falseDefina como true com gpt-image-2 ou modelos de imagem oficiais FLUX/BFL para criar uma tarefa primeiro. Tarefas assíncronas concluídas retornam URLs independentemente do response_format solicitado; use solicitações síncronas se precisar de b64_json.
Seletor de estilo opcional. Envie apenas quando o modelo selecionado documentar explicitamente esse parâmetro; omita para gpt-image-2 a menos que os metadados do modelo indiquem o contrário.
Um identificador único para o usuário final.
Resposta
Resposta em linha
Timestamp Unix da criação.
Array de imagens geradas.
Cada objeto contém:
url(string): URL da imagem geradab64_json(string): Imagem codificada em Base64 (se solicitada)revised_prompt(string): Revisão opcional do prompt quando o modelo selecionado a retorna
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 esperar pela imagem final na solicitação de criação. A resposta inclui status: "pending", task_id e poll_url. Consulte /v1/tasks/{task_id} até a tarefa chegar a completed ou failed.
Tarefas assíncronas de imagem retornam apenas URLs das imagens finais. Se precisar dos dados brutos b64_json, use uma solicitação síncrona.
A criação da tarefa pode reservar o valor estimado. Tarefas concluídas são cobradas pelo uso real; tarefas com falha ou timeout liberam ou reembolsam a reserva.
Timestamp Unix de criação.
Identificador único da tarefa para polling.
Status inicial: pending.
URL relativa para fazer polling dos resultados, por exemplo /v1/tasks/{id}.
Vazio enquanto a tarefa estiver pendente. Tarefas de imagem concluídas retornam URLs de imagens geradas em data[].url.
Quando você receber status: "pending", use poll_url ou GET /v1/tasks/{task_id} para recuperar o resultado.
Requisição
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"
}'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)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
$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 que só aceita proporção: para gemini-2.5-flash-image, nano-banana ou nano-banana-edit, envie aspect_ratio mas omita resolution:
{
"model": "gemini-2.5-flash-image",
"prompt": "A clean editorial product shot of a citrus soda can",
"aspect_ratio": "16:9"
}Exemplo Nano Banana Pro com imagem de referência: envie a solicitação para /v1/images/generations, não para /v1/images/edits. resolution é opcional e pode ser 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"
}Para imagens de origem privadas ou locais, faça upload multipart direto. Não envie 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..."
}
]
}Modelos disponíveis
Consulte GET /v1/models?recommended_for=image para ver os modelos de imagem, capacidades e preços atuais.
Não assuma que um modelo é sempre síncrono ou sempre assíncrono. Se a resposta de criação retornar status: "pending", siga poll_url e faça polling até a conclusão.
Lidando com respostas baseadas em tarefa
Para modelos de imagem, sempre verifique se a resposta contém status: "pending" / status: "processing":
import requests
import time
def generate_image(prompt, model="gpt-image-2"):
# Criar solicitaçã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()
# Verifica 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}")
# Fazer polling do 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", "Falha na geração"))
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}")Hy Image 3.5 Preview cria imagens quadradas de 1024 pixels a partir de texto e edita imagens de referência com instruções escritas. É útil para criar rascunhos 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 Autenticação por Chave de API. Crie ou gerencie chaves de API em Dashboard > API > API Keys.
Local: header
Cabeçalhos
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"
Resposta
application/json
application/json
application/json
application/json
application/json
application/json
application/json