Preços da Gemini Batch API: limites, plano gratuito e tempo de resposta
A Gemini Batch API cobra 50% da tarifa padrão em troca de um prazo-alvo de 24 horas. Este artigo lista os preços em lote por modelo, as regras do plano gratuito, os limites de requisições e tokens por nível, os tempos de resposta reais e um exemplo de custo com código em Python.
Pagar preço cheio por respostas que ninguém precisa neste minuto é o desperdício mais comum em projetos com Gemini. A Gemini Batch API existe exatamente para essa situação: você entrega ao Google uma pilha de requisições, se afasta e recolhe os resultados depois, por 50% do custo padrão. A pegadinha é o tempo. O prazo-alvo do Google é de 24 horas, os jobs expiram após 48 horas, e alguns limites determinam o tamanho da pilha que você pode enviar.
Este artigo reúne os números em um só lugar: preços em lote por modelo, o que o plano gratuito realmente permite, limites de tamanho e de tokens por nível, quanto tempo levam os resultados e as chamadas exatas em Python para enviar um job. Todos os valores vêm das páginas públicas de preços, lotes e limites de taxa do Google, conferidas em outubro de 2026, então confirme-os antes de comprometer um orçamento grande.
💡 Resposta rápida: o lote custa metade do preço, tem prazo-alvo de 24 horas, aceita menos de 20 MB inline ou 2 GB por arquivo e permite 100 jobs simultâneos. O plano gratuito lista o lote como gratuito para apenas dois modelos Flash-Lite.
O que a Batch API realmente faz
Jobs assíncronos pela metade do preço
Uma chamada normal ao Gemini é síncrona: você envia um prompt, espera alguns segundos e paga a tarifa interativa. Um job em lote funciona como deixar uma caixa de envelopes em uma central de triagem. Você envia muitas requisições como um único job, o Google as coloca na fila, executa quando há capacidade e mantém a saída pronta para você baixar. Os modelos, o formato do prompt e as configurações continuam os mesmos. Só muda a entrega, e o Google cobra 50% do custo padrão por essa troca.
A Batch também aceita mais do que prompts de texto simples:
Context caching, cobrado pelas tarifas padrão de cache
Jobs de embeddings por meio de batches.create_embeddings
Geração de imagens com a família Nano Banana de modelos de imagem do Gemini
Saída estruturada com esquemas JSON
Google Search como ferramenta dentro de uma requisição
Onde o lote funciona melhor
O lote compensa quando ninguém está esperando a resposta. Bons casos são classificar um catálogo de produtos, resumir milhares de chamados de suporte, rotular um conjunto de dados, rodar uma suíte de avaliação durante a noite, escrever textos alternativos para uma biblioteca de imagens ou gerar embeddings para um índice de busca. Também combina com qualquer pipeline que já roda em agenda, como a atualização noturna das descrições de produtos que mudaram naquele dia. Casos ruins são chatbots, buscas ao vivo e qualquer tela em que uma pessoa fica olhando um carregamento.
💡 Regra prática: se um atraso de seis horas não incomodaria ninguém, o job pertence ao lote.
Preços da Gemini Batch API por modelo
Todas as tarifas abaixo já têm desconto. Os preços estão em dólares americanos por 1 milhão de tokens no plano pago, conforme a página de preços do Google em outubro de 2026.
Tarifas por milhão de tokens
Modelo
Entrada em lote
Saída em lote
Gemini 3.8, 3.7 e 3.6 Flash (até 31 de dez. de 2026)
$0,375
$1,875
Gemini 3.8, 3.7 e 3.6 Flash (a partir de 1º de jan. de 2027)
Dois detalhes importam aqui. Primeiro, as tarifas de lote do Gemini 3.8, 3.7 e 3.6 Flash são promocionais até 31 de dezembro de 2026 e dobram em 1º de janeiro de 2027, então um orçamento escrito agora precisa das duas linhas. Segundo, o Gemini 2.5 Pro é o único modelo da tabela em que o tamanho do prompt muda o preço unitário.
Um exemplo de custo calculado
Considere um job de 10.000 requisições, cada uma com 1.500 tokens de entrada e 300 tokens de saída. Isso soma 15 milhões de tokens de entrada e 3 milhões de tokens de saída.
O desconto é exatamente a metade, então a execução com Flash-Lite economiza $6,00 e a com Flash economiza $24,75. Com 1.000.000 de requisições, os mesmos jobs economizam $600 e $2.475. Se seus prompts provocam raciocínio longo, lembre que os tokens de pensamento são cobrados como saída, então a coluna de saída pode crescer mais rápido que a de entrada.
Não chute a contagem de tokens. Primeiro rode 50 requisições representativas pela API normal, leia os metadados de uso de cada resposta e calcule a média das entradas e saídas. Multiplique pelo número de requisições e pela tarifa de lote. Uma amostra de 50 leva alguns minutos e costuma revelar o formato de prompt que gasta três vezes mais que os outros.
Custos da geração de imagens
A saída de imagem é a parte cara dos jobs de imagem. O Gemini 3.1 Flash Image, o modelo conhecido como Nano Banana 2, tem tarifas de lote de $0,25 por milhão de tokens de entrada de texto ou imagem, $1,50 por milhão de tokens de saída de texto e pensamento, e $30,00 por milhão de tokens de saída de imagem. Para algumas poucas imagens você nem precisa de um job: o Nano Banana 2 no PicassoIA gera imagens sem limites de créditos, o que o torna um lugar mais barato para testar um prompt antes de enfileirar 5.000 deles.
Plano gratuito: o que você realmente recebe
Modelos com lote gratuito
A tabela de preços do Google tem uma linha de Lote para cada modelo, com as colunas separadas de Plano gratuito e Plano pago. No momento em que este texto foi escrito, a coluna do Plano gratuito diz gratuito para dois modelos: Gemini 3.5 Flash-Lite e Gemini 3.1 Flash-Lite. Diz não disponível para Gemini 3.8, 3.7, 3.6 e 3.5 Flash, Gemini 3.1 Flash Image, Gemini 2.5 Pro, Gemini 2.5 Flash e Gemini 2.5 Flash-Lite.
Onde a documentação fica em silêncio
A página de lotes não diz se contas do plano gratuito podem enviar jobs. A página de limites de taxa lista números de tokens em fila para os três níveis pagos e nenhum para o plano gratuito. Então leia "gratuito" como com preço zero para esses dois modelos, não como ilimitado.
💡 Teste antes de planejar: envie um job de dez requisições em um dos dois modelos Flash-Lite, acompanhe o estado dele e confira a página de limites de taxa do seu projeto no AI Studio. Não construa uma agenda de produção em cima de uma linha de lote gratuito até que esse job pequeno tenha dado certo.
Limites que você vai encontrar
Os limites de lote se dividem em dois grupos: quão grande pode ser um único job e quanto trabalho você pode ter esperando ao mesmo tempo.
Limites de requisições e tamanho de arquivo
Limite
Valor
Payload de requisição inline
Menos de 20 MB no total
Tamanho do arquivo de entrada
2 GB por arquivo
Armazenamento de arquivos
20 GB
Requisições de lote simultâneas
100
Expiração do job
48 horas se pendente ou em execução
Prazo-alvo de resposta
24 horas
Requisições inline servem para jobs pequenos. Quando o payload se aproximar de 20 MB, mude para um arquivo JSONL: uma requisição por linha, cada linha com um ID de requisição mais o corpo da requisição, enviado pela Files API.
Tokens em fila por nível
O limite mais rigoroso não é o tamanho do arquivo, e sim os tokens em fila: o total de tokens esperando em todos os jobs de lote ativos de um modelo. Ele cresce conforme o seu nível de faturamento.
Nível
Como se qualificar
Tokens em fila (exemplo)
Nível 1
Conta de faturamento vinculada
3.000.000 para Gemini 3.8 Flash
Nível 2
US$ 100 pagos e 3 dias desde o primeiro pagamento bem-sucedido
400.000.000 para Gemini 3.8 Flash
Nível 3
US$ 1.000 pagos e 30 dias desde o primeiro pagamento bem-sucedido
1.000.000.000 para a maioria dos modelos
Para um modelo com limite de 3.000.000 de tokens no Nível 1, nosso exemplo de 15 milhões de tokens de entrada precisaria de pelo menos cinco ondas separadas. No Nível 2, cabe em um único job com folga. A passagem do Nível 1 para o Nível 2 é a que muda a forma como você projeta um pipeline.
Tempo de resposta e estados do job
O que 24 horas realmente significa
O Google chama 24 horas de prazo-alvo de resposta e acrescenta que, na maioria dos casos, os resultados chegam bem antes. Trate isso como um teto para planejar, não como uma velocidade com a qual você pode contar. Jobs pequenos costumam voltar rápido, enquanto os grandes esperam por capacidade.
O limite rígido são 48 horas: um job ainda pendente ou em execução nesse ponto expira. Dividir uma carga grande em vários jobs faz com que uma expiração ou falha custe apenas uma fatia, e não a execução inteira.
Mais uma armadilha: enviar um job de lote não é idempotente. Se o seu script estourar o tempo limite depois da chamada de criação e você tentar de novo, cria um segundo job e paga pelos dois. Salve o nome do job da primeira resposta antes de fazer qualquer outra coisa.
Um ritmo prático é a execução noturna. Envie o job no fim do expediente, deixe-o rodar durante a noite e leia os resultados com o primeiro café. Se um job ainda estiver pendente depois de um dia inteiro, não espere a expiração de 48 horas para descobrir: verifique o estado, observe seu total de tokens em fila para aquele modelo e considere cancelar e reenviar em fatias menores.
Estados do job para acompanhar
Como em uma fornada de padaria, um job passa por etapas, e você só recolhe a saída no final.
Estado
O que significa
JOB_STATE_PENDING
Na fila, ainda não iniciado
JOB_STATE_RUNNING
As requisições estão sendo processadas
JOB_STATE_SUCCEEDED
Os resultados estão prontos para leitura
JOB_STATE_FAILED
O job falhou, verifique o campo de erro
JOB_STATE_CANCELLED
O job foi cancelado
JOB_STATE_EXPIRED
O job passou da janela de 48 horas
O código de exemplo do Google consulta o estado a cada 30 segundos. Para jobs que devem rodar por horas, um intervalo maior evita chamadas desnecessárias.
Envie um job de lote em Python
Requisições inline
Com o SDK google-genai, um job inline recebe uma lista de requisições, um nome de modelo e um nome de exibição opcional:
from google import genai
client = genai.Client()
inline_requests = [
{"contents": [{"parts": [{"text": "Tell me a one-sentence joke."}], "role": "user"}]},
{"contents": [{"parts": [{"text": "Why is the sky blue?"}], "role": "user"}]},
]
job = client.batches.create(
model="gemini-3.8-flash",
src=inline_requests,
config={"display_name": "inlined-requests-job-1"},
)
print(job.name)
Para um job com arquivo, envie o JSONL com client.files.upload, usando mime_type='jsonl', e depois passe uploaded_file.name como src.
Consultar e ler os resultados
import time
finished_states = {
"JOB_STATE_SUCCEEDED",
"JOB_STATE_FAILED",
"JOB_STATE_CANCELLED",
"JOB_STATE_EXPIRED",
}
job = client.batches.get(name=job.name)
while job.state.name not in finished_states:
time.sleep(30)
job = client.batches.get(name=job.name)
if job.state.name == "JOB_STATE_SUCCEEDED":
for i, item in enumerate(job.dest.inlined_responses):
if item.response:
print(i, item.response.text)
elif item.error:
print(i, item.error)
Jobs com arquivo devolvem um arquivo de resultados: leia job.dest.file_name e baixe-o com client.files.download.
Teste os prompts antes de enviar em lote
Um job de lote é um feedback lento. Um prompt ruim custa uma janela de resposta inteira e uma conta inteira. Teste o prompt de forma interativa primeiro, com uma dúzia de amostras variadas, e só então enfileire os milhares.
Use o Gemini 3.5 Flash no PicassoIA
O Gemini 3.5 Flash no PicassoIA roda prompts únicos no seu navegador, o que o torna uma bancada de testes rápida. Ele não envia jobs da Batch API, que continuam passando pelo SDK do Google. Esta é a rotina:
Abra a página do modelo e encontre o campo Prompt.
Cole o prompt exato que você pretende enviar no lote, incluindo os exemplos.
Adicione uma instrução de sistema que defina o papel e o formato de saída, como "Retorne um objeto JSON por produto".
Escolha um nível de pensamento: nenhum, baixo ou alto. Níveis mais altos custam mais tokens de saída no seu lote real, então use o mais baixo que funcione.
Reduza a temperatura para extração ou classificação. O padrão é 1 em uma escala de 0 a 2.
Anexe mídia se o job precisar. O modelo aceita até 10 imagens de 7 MB cada, áudio de até 8,4 horas e vídeo de até 45 minutos.
Rode dez amostras variadas e leia todas as respostas. Ajuste o prompt e rode de novo.
Copie o prompt final e a instrução de sistema para suas requisições em lote.
O limite padrão de saída é de 65.535 tokens, então defina um teto menor em tarefas curtas. Em um lote, cada token não usado que você deixa de gerar é dinheiro que você economiza.
Quer uma segunda opinião sobre a qualidade? Gemini 3.1 Pro, Gemini 3 Flash e Gemini 2.5 Flash estão na mesma coleção de modelos de linguagem (LLM), então você pode rodar um prompt em todos eles antes de escolher qual modelo vai para o job.
Gaste menos e depois crie imagens
Três formas de reduzir a conta
Coloque em cache a parte compartilhada. O context caching funciona dentro dos jobs de lote com as tarifas padrão de cache, então um prompt de sistema longo repetido em 10.000 requisições não deve ser pago 10.000 vezes.
Escolha o menor modelo que funcione. A entrada do Gemini 3.5 Flash-Lite custa $0,15 por milhão de tokens contra $0,75 do Gemini 3.5 Flash, cinco vezes menos, e sua tarifa de saída de $1,25 equivale a cerca de 28% de $4,50.
Limite a saída. Respostas curtas, um nível de pensamento baixo e um limite de saída apertado reduzem a coluna mais cara da sua conta.
Evite o lote quando uma pessoa estiver esperando, quando os resultados alimentarem uma tela ao vivo ou quando o job for tão pequeno que o custo de consultar o estado supera o desconto.
O mesmo hábito de testar barato antes de gastar alto vale para as imagens. Se o seu job em lote alimenta um blog, um catálogo ou um app, você provavelmente vai querer fotos para acompanhar o texto. Abra o Nano Banana 2 no PicassoIA e gere imagens sem um contador de créditos rodando, experimente o Seedream 5 Pro ou o FLUX 2 Pro para um visual diferente e itere até o resultado ficar certo. Veja todas as opções em picassoia.com/en/all-models e crie sua primeira imagem hoje.