Imagens
Criar Imagem
Cria uma imagem a partir de um prompt
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.1enano-banana-prosuportamaspect_ratioalém deresolution(1k,2k,4k) para suas operações públicas de texto para imagem, imagem para imagem e edição de imagem.nano-banana-2suportaaspect_ratioeresolution(1k,2k,4k) tanto para geração de texto para imagem quanto de imagem para imagem.gemini-3.1-flash-lite-imageenano-banana-2-litesuportam texto para imagem, imagem para imagem e edição de imagem apenas na resolução1k.nano-bananasuportaaspect_ratio, mas não expõe a seleção pública deresolution.- Para imagem para imagem com
gemini-3.1-flash-image,gemini-nano-banana-2.1,gemini-3.1-flash-lite-imageougemini-3-pro-image, use este endpoint comoperation: "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-liteounano-banana-proneste endpoint (/v1/images/generations) comoperation: "image-to-image"eimage_urls. Requisições de edição de imagem paranano-banana-2,nano-banana-2.1,nano-banana-2-liteenano-banana-protambém usam este endpoint, comoperation: "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_urlsem JSON, ou como um arquivoimagemultipart.images[]efile_idnão são aceitos em/v1/images/generations; crie referências/v1/filesapenas para modelos de/v1/images/editsque documentamimages[].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.
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.
Descrição em texto da imagem desejada.
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.
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.
URLs adicionais de imagens de referência para modelos que distinguem entradas primárias de referências.
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.
1Número de imagens a serem geradas (1-10, dependendo do modelo).
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.
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.
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.
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.
Como as imagens são retornadas: url ou b64_json.
- Omitido: quando o modelo retorna bytes de imagem, cada imagem está em
data[].b64_jsone também emdata[].urlquando o TokenLab a armazena. Quando o modelo retorna um link, cada imagem está emdata[].url. url: cada imagem está apenas emdata[].url.b64_json: cada imagem está apenas emdata[].b64_jsoncomo 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.
falseDefina 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.
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.
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 de resultado de mídia do TokenLab da imagem, válida por 30 dias. Não presente quandoresponse_formatéb64_json. Quandoresponse_formaté omitido, ela estará ausente se o TokenLab não puder armazenar a imagem.b64_json(string): Dados da imagem em Base64. Presente quandoresponse_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.
Timestamp Unix da criação.
Identificador único da tarefa para consulta.
Status inicial: pending.
URL relativa para consultar resultados, por exemplo /v1/tasks/{id}.
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 -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 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 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