modelos

OpenAI: GPT Image 2

Markdown · JSON

OpenAI: GPT Image 2

O GPT Image 2 gera e edita imagens a partir de texto e referências visuais. Suporta dimensões flexíveis de enquadramento e processa automaticamente as entradas de imagem com alta fidelidade, com controlos separados de qualidade, formato e fundo para a peça concluída.

Sobre o modelo

Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.

O GPT Image 2 é o modelo da OpenAI para geração e edição de imagens a partir de texto e entradas visuais. Cria uma nova imagem a partir de um briefing escrito e pode utilizar imagens de origem para edições ou trabalho orientado por referências. As tarefas práticas incluem ilustrações, conceitos de produto, composições visuais e alterações a uma peça existente. É uma edição separada dos modelos GPT Image 2.5 Sunburst e Flare, com a sua própria gama de qualidade e comportamento de fidelidade de entrada.

Para geração, descreva o tema, a cena, a composição, a luz e o estilo pretendido. Para uma edição, identifique o que deve mudar e o que deve manter a aparência. Um briefing de produto pode pedir um candeeiro de cerâmica sobre uma superfície clara, com silhueta centrada e espaço para uma legenda; uma edição seguinte pode alterar o fundo, mantendo a forma e o ângulo de observação do candeeiro. Os fluxos diretos documentados de geração e edição aceitam instruções com até 32 000 caracteres e podem devolver uma a dez imagens.

A edição com referências aceita até dezasseis imagens de entrada. Especifique a finalidade de cada referência, para não confundir um tema, um fundo e um tratamento visual. O GPT Image 2 processa automaticamente todas as entradas de imagem com alta fidelidade; input_fidelity deve ser omitido, porque não é ajustável nesta edição. Isto difere da escolha entre high e low no GPT Image 1 e do modo de fidelidade de entrada apenas low do GPT Image 1 Mini. O processamento de entrada com alta fidelidade apoia os pormenores de origem, sem garantir que todos sejam reproduzidos sem alterações.

Uma máscara pode identificar a região a editar. A imagem de origem e a máscara têm de ter o mesmo formato e dimensões e menos de 50 MB nos requisitos de preparação do guia; a máscara também precisa de um canal alfa. Se forem fornecidas várias imagens de entrada, a máscara aplica-se à primeira. O modelo trata a máscara como orientação baseada na instrução, e não como um limite geométrico estrito. Descreva a alteração local e os requisitos de preservação e examine depois a área envolvente quanto a diferenças indesejadas.

O GPT Image 2 suporta qualidade low, medium, high e auto, com auto como predefinição. As definições xhigh e max da família 2.5 não fazem parte da gama de qualidade desta edição. O tamanho pode ser quadrado, horizontal, vertical, automático ou uma largura e altura personalizadas válidas. Os exemplos do fabricante incluem 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 e 2160 × 3840 píxeis. Escolha a orientação e o nível de detalhe para a composição real, em vez de tratar qualidade e dimensões como o mesmo controlo.

As dimensões personalizadas têm de ser múltiplos de dezasseis píxeis, com um lado máximo de 3840 píxeis, proporção entre lado maior e menor não superior a 3:1 e área entre 655 360 e 8 294 400 píxeis. Estas condições aplicam-se simultaneamente. As resoluções acima de 2560 × 1440 estão assinaladas como experimentais. Um enquadramento que satisfaça uma regra pode falhar outra, por isso selecione um par de dimensões suportado e descreva no briefing os elementos sensíveis ao recorte.

A saída é PNG por predefinição, com JPEG ou WebP também disponíveis. É suportada compressão entre 0 e 100 para JPEG e WebP. O fundo pode ser opaco ou automático; a referência atual exata descreve a transparência para GPT Image 2 como uma capacidade em pré-visualização. Ao pedir transparência, utilize PNG ou WebP para permitir manter um canal alfa. O fluxo documentado de streaming permite até três imagens parciais antes da imagem concluída; guarde a peça final, em vez de uma pré-visualização de progresso. A interface do fabricante também suporta processamento em lote.

Avalie a clareza do texto, a posição dos objetos e a preservação dos pormenores de origem no resultado real. O GPT Image pode ter dificuldades com letras precisas, composições sensíveis à disposição e identidade visual recorrente entre gerações separadas. Para uma sequência de edições, utilize o resultado escolhido como origem seguinte e indique uma alteração concreta ligada a um problema visível. A saída útil do GPT Image 2 é uma imagem ligada a um briefing claro de geração ou edição, com entradas de alta fidelidade, dimensões e qualidade escolhidas para essa tarefa específica.

Ailoot · Imagens POST /v1/images/generations gpt-image-2

gpt-image-2

OpenAI /gpt-image-2

Introdução

O GPT Image 2 gera e edita imagens a partir de texto e referências visuais. Suporta dimensões flexíveis de enquadramento e processa automaticamente as entradas de imagem com alta fidelidade, com controlos separados de qualidade, formato e fundo para a peça concluída.

Entradas aceites
Texto
Resultados
Imagens

Disponível no Ailoot · entradas e métodos

Ailoot · Imagens POST /v1/images/generations
Entrada
text
Saída
image
Formato de saída
Ficheiro de imagem
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
gpt-image-2
Predefinição—
CampopromptTipostringRequisitoObrigatórioValores e limites
Comprimento mínimo: 1
Predefinição—
CamponTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Predefinição1
Camporesponse_formatTipostringRequisitoOpcionalValores e limites
url, b64_json
Predefinição—
CampostreamTipobooleanRequisitoOpcionalValores e limitesPredefiniçãofalse
CamposizeTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampoqualityTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampobackgroundTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campooutput_formatTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campooutput_compressionTipointegerRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampomoderationTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campoinput_fidelityTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampostyleTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campopartial_imagesTipointegerRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Combinações de materiais de entrada

Texto para imagem · Obrigatório: prompt

Parâmetros e ciclo de vida do método
ParâmetroContrato
Parâmetromaterial_typesContratotext
ParâmetrorequiredContratomodel, prompt
Parâmetrooptional_controlsContratonull
Parâmetrocontent_typeContratoapplication/json

Ciclo de vida: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

Tarifários

Tarifas dos métodos Ailoot

Ailoot ImagensPOST /v1/images/generations
Texto de entrada
0,0025 US$ / 1K
Entrada, imagem
0,004 US$ / 1K tokens
Saída, imagem
0,015 US$ / 1K tokens

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →

Exemplos de pedidos

Ailoot · Imagens

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-image-2", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Receber e guardar os resultados

Ailoot · Imagens

Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Guardar todos os resultados concluídos

Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.

Guarde todos os itens de dados. Descodifique cada b64_json ou obtenha todos os URL assinados devolvidos. Escolha a extensão do ficheiro a partir do MIME/dos bytes reais.

Se for necessário verificar a resposta original

Se o resultado de uma geração ou edição de imagem requerer verificação, guarde o operation_id/X-Client-Request-ID original e as informações do resultado devolvidas. Recupere os resultados existentes que lhe pertencem através da biblioteca de multimédia, usando valores task_id ou asset_id reais. Não volte a enviar o pedido de geração/edição nem construa um URL de consulta periódica a partir de operation_id.

Campos da resposta
CampoTipo
CampocreatedTipointeger
Campodata[].urlTipostring
Campodata[].b64_jsonTipobase64 string
CampousageTipoobject
Erros e passos seguintes
RespostaCondiçãoPasso seguinte
Resposta400 · invalid_request_errorCondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidosPasso seguinteCorrija os campos indicados antes de um novo pedido de criação.
Respostaserver_errorCondiçãoA resposta devolvida indica que a operação ou o resultado requer verificaçãoPasso seguinteGuarde o ID original da operação/tarefa devolvido, os cabeçalhos do pedido e a resposta; continue a consultar essa operação original através das consultas suportadas. Não volte a enviar o pedido de criação.

Aliases

Aliases do modelo

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Aliases dos caminhos dos métodos

/v1/images

IDs de chamada relacionados

openai/gpt-image-2, gpt-image-2, gpt-image-2

Ailoot Ultra · Imagens POST /v1/images/generations gpt-image-2

gpt-image-2

OpenAI /gpt-image-2
ID do modelo
  • gpt-image-2
  • openai/gpt-image-2

Introdução

O GPT Image 2 gera e edita imagens a partir de texto e referências visuais. Suporta dimensões flexíveis de enquadramento e processa automaticamente as entradas de imagem com alta fidelidade, com controlos separados de qualidade, formato e fundo para a peça concluída.

Entradas aceites
Texto
Resultados
Imagens

Disponível no Ailoot · entradas e métodos

Ailoot Ultra · Imagens POST /v1/images/generations
Entrada
text
Saída
image
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
gpt-image-2
Predefinição—
CampopromptTipostringRequisitoObrigatórioValores e limites
Comprimento máximo: 32 000
Predefinição—
CamposizeTipostringRequisitoOpcionalValores e limites
Condições: Utilize auto ou WIDTHxHEIGHT com ambas as dimensões divisíveis por 16. O lado maior tem, no máximo, 3,840 píxeis e o tamanho total, no máximo, 8,300,000 píxeis.
Predefiniçãoauto
CampobackgroundTipostringRequisitoOpcionalValores e limites
transparent, opaque, auto
Predefiniçãoauto
CampomoderationTipostringRequisitoOpcionalValores e limites
low, auto
Condições: Utilize auto para a moderação normal de conteúdo.
Predefinição—
CamponTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Máximo: 10
Predefinição1
CampoqualityTipostringRequisitoOpcionalValores e limites
auto, high, medium, low
Predefiniçãoauto
Campooutput_compressionTipointegerRequisitoOpcionalValores e limites
Mínimo: 0
Máximo: 100
Condições: Aplica-se à saída JPEG e WebP; envie o valor inteiro documentado.
Predefinição100
Campooutput_formatTipostringRequisitoOpcionalValores e limites
webp, png, jpeg
Predefiniçãopng
CampostreamTipobooleanRequisitoOpcionalValores e limites
false
Condições: Esta rota devolve uma única resposta JSON concluída.
Predefiniçãofalse
Parâmetros e ciclo de vida do método
ParâmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratoprompt, model
Parâmetromaterial_typesContratotext
ParâmetrooptionalContratosize, background, moderation, n, quality, output_compression, output_format, stream
ParâmetroconditionsContratoUm fundo transparente exige PNG ou WebP., A compressão de saída aplica-se a JPEG ou WebP., O método selecionado gera a partir de texto. Os controlos de edição e transmissão em fluxo descritos para o fabricante são capacidades separadas.

Ciclo de vida: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Tarifários

Cálculo do custo final

As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas estimadas para comparação

Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

ConfiguraçãoTabela de tarifasQuantidade previstaCusto
ConfiguraçãoTarifas base por tokenTabela de tarifasTarifa baseQuantidade prevista—Custo
Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens
Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens
Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens
ConfiguraçãoCusto estimado de geraçãoTabela de tarifas—Quantidade previstaestimativa para uma geraçãoCusto
Saída · Custo estimado de geração · Estimativa apenas para comparação $0.24576 estimativa antes da geração

Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →

Exemplos de pedidos

Ailoot Ultra · Imagens

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT

Receber e guardar os resultados

Ailoot Ultra · Imagens

Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Outras leituras de conteúdo
Ler os recursos existentes de que é titular
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Guardar todos os resultados concluídos

Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.

Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.

Se for necessário verificar a resposta original

Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação.

Campos da resposta
CampoTipo
CampocreatedTipo
Campodata[].urlTipo
Campodata[].b64_jsonTipo
CampousageTipo

Aliases

Aliases do modelo

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Aliases dos caminhos dos métodos

/v1/images

IDs de chamada relacionados

openai/gpt-image-2, gpt-image-2, gpt-image-2

Ailoot Ultra · Imagens POST /v1/images/generations openai/gpt-image-2

openai/gpt-image-2

OpenAI /openai/gpt-image-2
ID do modelo
  • gpt-image-2
  • openai/gpt-image-2

Introdução

O GPT Image 2 gera e edita imagens a partir de texto e referências visuais. Suporta dimensões flexíveis de enquadramento e processa automaticamente as entradas de imagem com alta fidelidade, com controlos separados de qualidade, formato e fundo para a peça concluída.

Entradas aceites
Texto · Imagens
Resultados
Imagens

Disponível no Ailoot · entradas e métodos

Ailoot Ultra · Imagens POST /v1/images/generations
Entrada
text, image
Saída
image
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
openai/gpt-image-2
Predefinição—
CampopromptTipostringRequisitoObrigatórioValores e limites
Comprimento mínimo: 1
Predefinição—
Campoaspect_ratioTipostringRequisitoOpcionalValores e limites
1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto
Predefinição—
CampoqualityTipostringRequisitoOpcionalValores e limites
auto, low, medium, high
Predefinição—
CampobackgroundTipostringRequisitoOpcionalValores e limites
auto, opaque
Predefinição—
CamponTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Máximo: 10
Predefinição—
Campoinput_referencesTipoarrayRequisitoOpcionalValores e limites
Número mínimo de elementos: 0
Número máximo de elementos: 16
Predefinição—
Campooutput_compressionTipointegerRequisitoOpcionalValores e limites
Mínimo: 0
Máximo: 100
Predefinição—
CampoproviderTipoobjectRequisitoOpcionalValores e limitesPredefinição—
Parâmetros e ciclo de vida do método
ParâmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratomodel, prompt
Parâmetromaterial_typesContratotext, image

Ciclo de vida: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Tarifários

Cálculo do custo final

As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas estimadas para comparação

Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

ConfiguraçãoTabela de tarifasQuantidade previstaCusto
ConfiguraçãoTarifas base por tokenTabela de tarifasTarifa baseQuantidade prevista—Custo
Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens
Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens
Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens
ConfiguraçãoCusto estimado de geraçãoTabela de tarifas—Quantidade previstaestimativa para uma geraçãoCusto
Saída · Custo estimado de geração · Estimativa apenas para comparação $0.24576 estimativa antes da geração

Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →

Exemplos de pedidos

Ailoot Ultra · Imagens

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT

Receber e guardar os resultados

Ailoot Ultra · Imagens

Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Outras leituras de conteúdo
Ler os recursos existentes de que é titular
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Guardar todos os resultados concluídos

Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.

Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.

Se for necessário verificar a resposta original

Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação.

Campos da resposta
CampoTipo
CampocreatedTipo
Campodata[].urlTipo
Campodata[].b64_jsonTipo
CampousageTipo

Aliases

Aliases do modelo

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Aliases dos caminhos dos métodos

/v1/images

IDs de chamada relacionados

openai/gpt-image-2, gpt-image-2, gpt-image-2

FAQ · OpenAI: GPT Image 2
Que entradas e resultados estão disponíveis?

POST /v1/images/generations · gpt-image-2: text → image

POST /v1/images/generations · gpt-image-2: text → image

POST /v1/images/generations · openai/gpt-image-2: text, image → image

Que campos utiliza o pedido?

POST /v1/images/generations · gpt-image-2: model, prompt, n, response_format, stream

POST /v1/images/generations · gpt-image-2: model, prompt, size, background, moderation, n, quality, output_compression, output_format, stream

POST /v1/images/generations · openai/gpt-image-2: model, prompt, aspect_ratio, quality, background, n, input_references, output_compression, provider

Que limites se aplicam?

POST /v1/images/generations · gpt-image-2: n.minimum: 1

POST /v1/images/generations · gpt-image-2: prompt.maximum_length: 32000; n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

POST /v1/images/generations · openai/gpt-image-2: n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

Mais detalhes

Ligue o Ailoot ao Claude Code, OpenCode, Hermes ou à sua aplicação.

A empresa e a sua carteira de projetos

A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.

Compre tokens com desconto.

Desconto por subscrição para trabalho regular. Códigos promocionais — até 50% na compra de tokens.

Subscrição
Escolha um plano com desconto para os pedidos regulares.
Código promocional até 50%
Introduza o código na compra. O preço é recalculado conforme a campanha em vigor.
Custos no histórico
O modelo, os tokens e o montante são guardados para cada pedido.

Escolher subscrição · Ver preços dos modelos

Ligue a API ao produto que vende.

SaaS, aplicações e bots — ao abrigo da oferta e do contrato de licença Ailoot. Para revenda, peça uma licença de revendedor.

Aplicação comercial
Integre geração de texto, imagens, vídeo e som nas funcionalidades pagas do seu serviço.
Licença de revendedor
Envie uma descrição do projeto e do modelo de acesso. Peça condições escritas de utilização e revenda.
Documentos no site
A oferta, o contrato de licença e a política de tratamento de dados estão disponíveis antes da ligação.

Pedir licença de revendedor · Oferta e contrato de licença