Skip to main content
Use o mesmo endpoint Gemini nativo para texto, referências e edições seguintes. Os exemplos usam nano-banana-2.1; substitua o modelo na URL ou no SDK para usar os outros dois.
A BetterToken API não oferece geração com pesquisa, incluindo Google Web Search e Image Search grounding. Não adicione ferramentas de pesquisa.

Dados de conexão

Criar uma BetterToken API Key · catálogo de modelos · Apresentação dos modelos Nano Banana
Estes três modelos não aceitam POST /v1/images/generations nem POST /v1/images/edits: retornam 400 unsupported_endpoint. Não reutilize exemplos GPT Image com multipart, image[] ou data[].b64_json.

Gere a primeira imagem

Defina BETTERTOKEN_API_KEY no terminal e execute. A chamada aguarda a geração e salva o JSON completo em response.json.
Mude imageSize para 2K ou 4K para maior resolução. Comece com 1K, 1:1 e uma imagem. Não ative novas tentativas automáticas com --retry.

Parâmetros comuns

Para fotos de produto, descreva objeto, material, iluminação e fundo. Para cartazes, indique o texto exato e a disposição. Ao editar, diga o que deve mudar e o que deve ser preservado. HTTP nativo usa os campos abaixo; Python SDK usa snake_case. Coloque as opções dentro de generationConfig.imageConfig.

Proporções aceitas pelo Google

Nano Banana 2 e 2.1 aceitam 14 proporções; Pro aceita 10. Comece com 1:1 na primeira requisição. Referência de proporções e tamanhos do Google Esse máximo não garante a quantidade. O modelo pode retornar uma imagem mesmo se pedir várias. Para quantidade fixa, envie requisições separadas.

Leia e salve a imagem

As imagens estão em candidates[].content.parts[].inlineData. A estrutura abaixo usa o marcador BASE64_IMAGE_DATA. Percorra todas as partes finais e ignore thought: true.
Este Python salva o resultado de curl. Escolha a extensão pelo mimeType; a imagem pode ser JPEG, não sempre .png.

Exemplo completo com Python SDK

Use Python 3.10 ou mais recente e google-genai==2.30.1. Instale no ambiente virtual do projeto; versões antigas podem omitir image_size.
O Base URL do SDK é a raiz do domínio, sem /v1 ou /v1beta. timeout usa milissegundos e attempts=1 desativa tentativas automáticas. save_images salva todas as imagens finais.

Envie uma referência

Execute depois do exemplo Python para enviar uma nova edição. Troque reference.jpg pelo arquivo local. Para PNG use mime_type="image/png". Adicione outras referências em parts da mesma mensagem.
No JSON nativo use inlineData: {"mimeType": "image/jpeg", "data": "BASE64_IMAGE_DATA"}. Codifique os bytes originais sem o prefixo data:image/...;base64,. Não use multipart, Files ou fileData.

Continue editando

Execute após uma geração ou edição bem-sucedida. Preserve todo o content da resposta, a ordem das partes e thoughtSignature. Não recrie o histórico apenas pela imagem nem invente ou altere assinaturas.
Cada etapa é uma nova geração. Preserve history, acrescente a instrução e depois o content recebido. Não use previous_interaction_id de Interactions aqui.

Suporte da API

  • Use generateContent sem streaming. Esta integração não aceita Files / fileData, Batch, Interactions nem streaming.
  • responseMimeType, responseSchema e formatos de compressão personalizados não são aceitos. Em imageConfig, use apenas os dois campos listados acima.
  • Omita cachedContent, chamadas de funções, execução de código, busca de arquivos, Maps, URL context e configurações de entrada ou geração de áudio.

Se já usa um cliente OpenAI Chat

Você pode chamar POST /v1/chat/completions com Base URL https://bettertoken.ai/v1. Para novas integrações, referências e edição em várias etapas, use a API nativa Gemini acima. Em Chat, omita n ou use o inteiro 1. Em HTTP, google.image_config fica na raiz JSON. No Python OpenAI SDK, use extra_body, que é mesclado na raiz. Não use generationConfig aqui.
Para o exemplo Python OpenAI SDK, instale openai==1.66.2 no mesmo ambiente virtual:
Chat retorna Markdown Data URL em choices[0].message.content, não o data[] de Images API. Não reconstrua assinaturas desse texto; use a edição nativa.

Erros comuns

As imagens chegam na resposta atual. Não há recuperação em segundo plano ou consulta de tarefa neste fluxo. Salve os resultados, reserve tempo no SDK e proxy e desative tentativas automáticas.

Fontes oficiais