Modelos de linguagem recentes podem processar e analisar entradas de imagem, uma capacidade conhecida como visão. Os modelos GPT Image podem usar entradas de texto e imagem para criar novas imagens ou editar imagens existentes.
Escolha um endpoint de acordo com seu objetivo: analisar ou gerar imagens.
Para saber mais sobre as modalidades de entrada e saída compatíveis com nossos modelos, consulte nossa página de modelos.
Gerar ou editar imagens
Na Images API, escolha gpt-image-2.5-sunburst para gerar imagens a partir de texto ou editar imagens existentes. Na Responses API, escolha um modelo da linha principal compatível com a ferramenta de geração de imagens; a ferramenta cuida da seleção do modelo GPT Image.
Gerar imagens com Responses
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import OpenAI from "openai";const openai = new OpenAI();const response = await openai.responses.create({ model: "gpt-6-astra", input: "Generate an image of gray tabby cat hugging an otter with an orange scarf", tools: [{ type: "image_generation" }],});// Save the image to a fileconst imageData = response.output .filter((output) => output.type === "image_generation_call") .map((output) => output.result);if (imageData.length > 0) { const imageBase64 = imageData[0]; const fs = await import("fs"); fs.writeFileSync("cat_and_otter.png", Buffer.from(imageBase64, "base64"));}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from openai import OpenAIimport base64client = OpenAI()response = client.responses.create(model="gpt-6-astra",input="Generate an image of gray tabby cat hugging an otter with an orange scarf",tools=[{"type": "image_generation"}],)# Save the image to a fileimage_data = [ output.resultfor output in response.outputif output.type =="image_generation_call"]if image_data: image_base64 = image_data[0]withopen("cat_and_otter.png", "wb") as f: f.write(base64.b64decode(image_base64))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43package mainimport ( "context" "encoding/base64" "os" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses")func main() { client := openai.NewClient() response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Input: responses.ResponseNewParamsInputUnion{ OfString: openai.String("Generate an image of a gray tabby cat hugging an otter with an orange scarf."), }, Tools: []responses.ToolUnionParam{{ OfImageGeneration: &responses.ToolImageGenerationParam{}, }}, }) if err != nil { panic(err) } for _, output := range response.Output { if output.Type != "image_generation_call" { continue } image, err := base64.StdEncoding.DecodeString(output.AsImageGenerationCall().Result) if err != nil { panic(err) } if err := os.WriteFile("cat_and_otter.png", image, 0o600); err != nil { panic(err) } return } panic("response did not include an image generation call")}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import com.openai.client.OpenAIClient;import com.openai.client.okhttp.OpenAIOkHttpClient;import com.openai.models.responses.ResponseCreateParams;import com.openai.models.responses.Tool;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.util.Base64;ResponseCreateParams params = ResponseCreateParams.builder() .model("gpt-6-astra") .input("Generate an image of a gray tabby cat hugging an otter with an orange scarf.") .addTool(Tool.ImageGeneration.builder().build()) .build();String imageResult = client.responses().create(params).output().stream() .flatMap(item -> item.imageGenerationCall().stream()) .flatMap(call -> call.result().stream()) .findFirst() .orElseThrow(() -> new IllegalStateException("No generated image returned"));Files.write(Path.of("cat_and_otter.png"), Base64.getDecoder().decode(imageResult));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;ResponsesClient client = new(key);CreateResponseOptions options = new(){ Model = "gpt-6-astra",};options.InputItems.Add( ResponseItem.CreateUserMessageItem( "Generate an image of a gray tabby cat hugging an otter with an orange scarf." ));options.Tools.Add( ResponseTool.CreateImageGenerationTool(model: "gpt-image-2"));ResponseResult response = await client.CreateResponseAsync(options);ImageGenerationCallResponseItem image = response .OutputItems.OfType<ImageGenerationCallResponseItem>() .FirstOrDefault() ?? throw new InvalidOperationException("No generated image was returned.");await File.WriteAllBytesAsync( "cat_and_otter.png", image.ImageResultBytes.ToArray());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21require "base64"require "openai"client = OpenAI::Client.newresponse = client.responses.create( model: "gpt-6-astra", input: "Generate an image of a gray tabby cat hugging an otter with an orange scarf.", tools: [{ type: :image_generation }])image_call = response.output.find do |item| item.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall)endunless image_call.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall) raise "No image generation call returned"endFile.binwrite( "cat_and_otter.png", Base64.strict_decode64(image_call.result))
1
2
3
4
5
6
7
8openai responses create \ --model gpt-6-astra \ --raw-output \ --transform 'output.#(type=="image_generation_call").result' <<'YAML' | base64 --decode > cat_and_otter.pngtools: - type: image_generationinput: Generate an image of a gray tabby cat hugging an otter with an orange scarf.YAML
Saiba mais sobre geração de imagens no nosso guia de Geração de
imagens.
Usar conhecimento de mundo para gerar imagens
Os modelos GPT Image podem recorrer ao conhecimento de mundo sem uma imagem de referência. Por exemplo, um prompt que pede um armário de pedras semipreciosas pode produzir uma cena com gemas reconhecíveis, como ametista, quartzo rosa e jade.
Analisar imagens
Use um modelo com capacidades de visão para descrever imagens, ler texto visível e responder a perguntas sobre objetos, formas, cores ou texturas. Leve em conta as limitações do modelo ao usar suas respostas.
Fornecer imagens como entrada para um modelo
Forneça uma imagem para análise usando uma URL totalmente qualificada da imagem ou uma URL de dados com codificação Base64.
Você pode fornecer várias imagens como entrada em uma única requisição, incluindo-as no array content, mas lembre-se de que as imagens são contabilizadas como tokens e cobradas de acordo com essa contagem.
Forneça uma imagem para análise de uma destas formas:
Fornecendo uma URL totalmente qualificada de um arquivo de imagem
Fornecendo uma imagem como uma URL de dados com codificação Base64
Fornecendo um ID de arquivo (criado com a Files API)
Você pode fornecer várias imagens como entrada em uma única requisição, incluindo-as no array content, mas lembre-se de que as imagens são contabilizadas como tokens e cobradas de acordo com essa contagem.
Use arquivos de imagem compatíveis e com nitidez suficiente para o modelo analisar.
Requisito
Entradas compatíveis
Tipos de arquivo
PNG (.png), JPEG (.jpeg ou .jpg), WEBP (.webp) e GIF não animado (.gif)
Tamanho da requisição
Até 512 MB de dados no total por requisição
Quantidade de imagens
Até 1.500 imagens por requisição
Para imagens de entrada baseadas em fragmentos, a API aceita até 30.000 fragmentos por imagem após aplicar as regras de redimensionamento do modelo e do nível de detail selecionados. Esse limite se aplica a todos os níveis de detalhe compatíveis e a cada imagem separadamente, não à contagem total de fragmentos da requisição.
Os limites menores de redimensionamento específicos de cada modelo e nível de detalhe continuam valendo. Imagens que excedem o limite de 30.000 fragmentos após o processamento são rejeitadas, e não redimensionadas automaticamente para se adequar a ele. Reduza as dimensões da imagem e tente novamente.
Os tokens de imagem e o restante do seu prompt também precisam respeitar os limites de entrada e de contexto do modelo. Uma estimativa de tokens não garante que uma requisição atenda a todos os limites de entrada. O uso de imagens deve seguir nossas políticas de uso.
Escolha um nível de detalhe da imagem
O parâmetro detail controla o pré-processamento da imagem. Os valores aceitos dependem do modelo: low, high, original ou auto. Se você omitir o parâmetro, o valor padrão será auto, tanto na Responses API quanto na Chat Completions API. A tabela de dimensionamento por modelo mostra o comportamento correspondente.
Use as orientações a seguir para escolher um nível de detalhe:
Nível de detalhe
Ideal para
low
Compreensão geral da imagem. O redimensionamento e o uso de tokens dependem do modelo; low nem sempre usa menos tokens que high.
high
Compreensão padrão de imagens com alta fidelidade, quando não são necessárias coordenadas precisas da imagem original.
original
Imagens grandes, com muitos detalhes, que exigem precisão espacial ou usadas em tarefas de uso do computador, quando o modelo oferece suporte.
auto
Usa o comportamento padrão de dimensionamento do modelo, mostrado na tabela de dimensionamento por modelo.
Para tarefas que exigem detalhes visuais finos ou coordenadas precisas, como reconhecimento óptico de caracteres (OCR), detecção de objetos pequenos ou uso do computador, use "detail": "original" quando houver suporte. O nível de detalhe original ainda pode redimensionar imagens para respeitar o limite de dimensões em pixels ou de fragmentos para redimensionamento do modelo, mas não para atender ao limite separado de rejeição de 30.000 fragmentos. Para tarefas que exigem precisão nas coordenadas, redimensione as imagens para respeitar esses limites antes de enviá-las e converta as coordenadas retornadas para as da imagem original. Consulte o guia de Uso do computador para saber como lidar com coordenadas.
Comportamento de dimensionamento por modelo
A tabela a seguir resume o comportamento de dimensionamento dos modelos de visão de uso geral. Outros modelos e variantes especializadas podem usar limites diferentes. Todo redimensionamento preserva a proporção da imagem, sem ampliar imagens menores.
Família de modelos
Níveis de detalhe compatíveis
Comportamento de fragmentação e redimensionamento
gpt-6-astra
low, high, original,
auto
low ajusta a imagem para caber em 512 × 512 pixels. high permite até
2.500 fragmentos e uma dimensão máxima de 65.535 pixels. Ambos os limites se aplicam.
original preserva as dimensões da imagem, exceto quando ela
excede 65.535 pixels em qualquer um dos lados; nesse caso, ela é reduzida para respeitar esse
limite. Se a imagem resultante exigir mais de
30.000 fragmentos, a API rejeita
a solicitação; a imagem não é redimensionada para respeitar o limite de fragmentos.
auto usa o mesmo comportamento de dimensionamento de original.
gpt-5.6-sol, gpt-5.6-terra,
gpt-5.6-luna
low, high, original,
auto
low limita a imagem a 512 × 512 pixels. high limita a imagem
a 2048 × 2048 pixels e 2.500 fragmentos. original
preserva as dimensões da imagem, exceto quando ultrapassam 65.535
pixels em qualquer lado; nesse caso, a imagem é reduzida para respeitar esse limite. Se a imagem
resultante precisar de mais de
30.000 fragmentos, a API rejeitará
a requisição; a imagem não será redimensionada para respeitar o limite de fragmentos.
auto usa o mesmo comportamento de dimensionamento de original.
gpt-5.5
low, high, original,
auto
low limita a imagem a 512 × 512 pixels. high permite até
2.500 fragmentos e uma dimensão máxima de 2048 pixels. original
permite até 10.000 fragmentos e uma dimensão máxima de 6000 pixels. Ambos os
limites se aplicam. auto usa o mesmo comportamento de dimensionamento de
original.
gpt-5.4, gpt-5.4-mini, gpt-5.4-nano
low, high, original,
auto
low usa uma dimensão máxima de 2048 pixels e um limite de 6.144 fragmentos
para redimensionamento, por isso pode usar mais tokens que high.
high permite até 2.500 fragmentos e uma dimensão
máxima de 2048 pixels. original permite até 10.000 fragmentos e uma
dimensão máxima de 6000 pixels. Ambos os limites se aplicam. auto usa
o mesmo comportamento de dimensionamento de high.
gpt-5.2, gpt-4.1-mini
low, high, auto
Esses níveis de detalhe usam os mesmos limites de dimensionamento: uma dimensão máxima de 2048 pixels
e um limite de 6.144 fragmentos para redimensionamento. original não é
compatível.
Os modelos de visão convertem imagens de entrada em tokens de entrada faturáveis. A calculadora de custos de imagens de entrada e as regras de fragmentos e blocos desta seção abrangem as entradas de modelos de visão, não a geração ou edição com GPT Image. Consulte Entradas dos modelos GPT Image para ver esses preços, que são separados.
Os tokens de imagem também contam para seus limites de tokens por minuto (TPM). A calculadora faz a estimativa para uma imagem com os preços padrão de entrada; ela não inclui o restante do seu prompt nem a saída do modelo.
Calculadora de custos de imagens de entrada
Use a calculadora de custos de imagens de entrada para estimar os tokens de entrada e o custo de uma imagem de acordo com o modelo, o tamanho da imagem e o nível de detalhe.
Tokenização de imagens baseada em fragmentos
Alguns modelos tokenizam imagens cobrindo-as com fragmentos de 32px x 32px. Muitas combinações de modelo e nível de detalhe definem um limite de fragmentos para redimensionamento. Primeiro, a API ajusta a imagem ao limite de dimensões em pixels do nível de detalhe selecionado, preservando a proporção e arredondando para valores inteiros de pixels, sem ampliar imagens menores. O custo em tokens é então determinado da seguinte forma:
A. Calcule quantos fragmentos de 32px x 32px são necessários para cobrir a imagem após aplicar o limite de dimensões em pixels. Um fragmento pode ultrapassar a borda da imagem.
patch_count = ceil(width/32)×ceil(height/32)
B. Quando o modelo e o nível de detalhe selecionados especificarem um limite de fragmentos para redimensionamento, reduza a imagem proporcionalmente se ela exceder esse limite. Caso contrário, pule esta etapa. Ajuste a escala para respeitar o limite após converter as dimensões para valores inteiros de pixels e calcular a cobertura dos fragmentos. Mantenha a precisão total até calcular as dimensões finais.
C. Se a etapa B tiver redimensionado a imagem, arredonde a largura e a altura finais para baixo, para valores inteiros de pixels. Calcule os fragmentos necessários para cobrir a imagem resultante. Essa é a contagem de tokens de imagem antes de aplicar o multiplicador do modelo. Quando há um limite de fragmentos, essa contagem fica dentro dele.
Se essa contagem exceder 30.000 fragmentos, a API rejeitará a requisição. Verifique esse limite antes de aplicar o multiplicador de tokens.
D. Multiplique a contagem de fragmentos pelo multiplicador do modelo e arredonde para cima para obter os tokens faturáveis de imagem de entrada. Aplique o preço de entrada do modelo a esses tokens uma única vez; o multiplicador não se aplica aos outros tokens do prompt nem deve ser aplicado novamente ao preço.
Modelo
Multiplicador
gpt-6-astra
1,2
gpt-5.6-sol
1,2
gpt-5.6-terra
1,2
gpt-5.6-luna
1,2
gpt-5.5
1,2
gpt-5.4
1,2
gpt-5.4-mini
1,2
gpt-5.4-nano
1,2
gpt-5.2
1,2
gpt-5-mini*
1,2
gpt-5-nano*
1,5
gpt-4.1-mini
1,62
gpt-4.1-nano* (versão de 2025-04-14)
2,46
o4-mini*
1,72
Para gpt-4.1-mini, isso se aplica à versão de 2025-04-14.
* Obsoletos e com desativação programada. Consulte o cronograma de descontinuação para ver datas e substitutos. Esses modelos não estão incluídos na calculadora nem na tabela de dimensionamento por modelo acima.
Exemplos de cálculo de tokens de imagem para gpt-6-astra com detail: high
Essa combinação usa uma dimensão máxima de 65.535 pixels, um limite de 2.500 fragmentos e um multiplicador de 1,2×.
Uma imagem de 1024 × 1024 precisa de 32 × 32 = 1024 fragmentos. Não é necessário redimensioná-la. A entrada de imagem faturável corresponde a ceil(1024 × 1.2) = 1229 tokens.
Uma imagem de 2048 × 2048 precisa inicialmente de 64 × 64 = 4096 fragmentos. O limite de fragmentos reduz a imagem para 1600 × 1600 pixels, ou 50 × 50 = 2500 fragmentos. A estimativa é de ceil(2500 × 1.2) = 3000 tokens.
Uma imagem de 4096 × 512 mantém seu tamanho original: 128 × 16 = 2048 fragmentos e ceil(2048 × 1.2) = 2458 tokens.
O arredondamento de ponto flutuante no faturamento pode fazer a contagem final diferir da estimativa em um token.
Tokenização de imagens baseada em blocos
Os modelos desta tabela usam uma contagem básica de tokens somada aos tokens dos blocos da imagem:
Modelo
Tokens básicos
Tokens por bloco
gpt-5.1
70
140
gpt-5*
70
140
gpt-4o, gpt-4.1
85
170
gpt-4o-mini
2833
5667
o1*, o1-pro*, o3*
75
150
* Obsoletos e com desativação programada. Consulte o cronograma de descontinuação para ver datas e substitutos. Esses modelos não estão incluídos na calculadora nem na tabela de dimensionamento por modelo acima.
Com "detail": "low", o custo de uma imagem corresponde apenas aos tokens básicos do modelo, independentemente das dimensões. Com "detail": "high" ou "detail": "auto":
Reduza a imagem para que caiba em um quadrado de 2048px x 2048px, mantendo a proporção. Imagens menores não são ampliadas.
Se o lado mais curto exceder 768px, reduza-o para 768px e arredonde a outra dimensão para baixo.
Conte os quadrados de 512px necessários para cobrir a imagem. Cada quadrado usa a quantidade de tokens por bloco do modelo.
Some os tokens básicos do modelo aos tokens dos blocos.
Entradas dos modelos GPT Image
Os modelos GPT Image têm preços específicos de tokens de imagem para geração e edição. A calculadora de visão não estima os custos de entrada ou saída desses modelos. Para consultar os valores atuais, veja os preços de geração de imagens; para fluxos de trabalho de geração e edição, consulte o guia de geração de imagens.
GPT Image 1
As regras de tokens de entrada a seguir se aplicam a gpt-image-1. Use o dimensionamento de imagens baseado em blocos, mas reduza o lado mais curto para 512px em vez de 768px. O uso de tokens depende das dimensões da imagem e do parâmetro input_fidelity na Images API.
Quando a fidelidade de entrada é definida como baixa, o custo básico é de 65 tokens de imagem, e cada bloco custa 129 tokens de imagem.
Ao usar alta fidelidade de entrada, adicionamos uma quantidade fixa de tokens com base na proporção da imagem, além dos tokens de imagem descritos acima.
Se a imagem for quadrada, adicionamos 4160 tokens de entrada de imagem extras.
Se ela se aproximar mais do formato retrato ou paisagem, adicionamos 6240 tokens extras.
Os modelos de visão podem cometer erros. Leve estas limitações em conta ao projetar seu aplicativo:
Imagens médicas: O modelo não é adequado para interpretar imagens médicas especializadas, como tomografias computadorizadas, e não deve ser usado para fornecer orientações médicas.
Idiomas além do inglês: O modelo pode não ter um desempenho ideal ao lidar com imagens que contêm texto em alfabetos não latinos, como japonês ou coreano.
Texto pequeno: Amplie o texto na imagem para melhorar a legibilidade. Quando disponível, usar "detail": "original" também pode ajudar a melhorar o desempenho.
Rotação: O modelo pode interpretar incorretamente textos e imagens girados ou de cabeça para baixo.
Elementos visuais: O modelo pode ter dificuldade para entender gráficos ou textos com variações de cores ou estilos, como linhas contínuas, tracejadas ou pontilhadas.
Raciocínio espacial: O modelo tem dificuldade com tarefas que exigem localização espacial precisa, como identificar posições no xadrez.
Precisão: O modelo pode gerar descrições ou legendas incorretas em determinadas situações.
Formato da imagem: O modelo tem dificuldade com imagens panorâmicas e de olho de peixe.
Metadados e redimensionamento: O modelo não processa os nomes originais dos arquivos nem os metadados. As imagens podem ser redimensionadas antes da análise, inclusive com o nível de detalhe original. Consulte Comportamento de dimensionamento dos modelos para ver os limites aplicáveis a cada modelo.
Contagem: O modelo pode fornecer contagens aproximadas de objetos em imagens.
CAPTCHAs: Por motivos de segurança, nosso sistema bloqueia o envio de CAPTCHAs.