GPT-6 Sol e Claude Opus 5.5 disponíveisGPT-6 Sol pela metade do preço do 5.6 Sol

Alternativa à API do FLUX Kontext: edite imagens com o GPT Image 2

Edição por instrução, sem máscara: o código da requisição, uma cadeia de três edições que rodamos em 28 de outubro de 2026 e o que cada passo preservou.

Kiki, OmniaKey COO7 min de leitura
Nesta página

A API do FLUX Kontext edita uma foto a partir de um prompt e uma imagem por requisição. A página da BFL chama o FLUX.1 Kontext de modelo de geração anterior e recomenda o FLUX.2 para projetos novos (verificado em 28 de outubro de 2026). O GPT-Image 2 recebe as mesmas duas entradas. Três edições encadeadas em 28 de outubro de 2026 mantiveram a mesa do café, a xícara, a planta e a janela, além de cada alteração feita antes.

O que é edição por instrução

Você envia uma foto e uma frase como "troque a bicicleta vermelha por uma preta fosca". O modelo devolve uma foto nova com essa mudança aplicada e o resto do quadro intacto. A BFL descreve o Kontext como edição de imagens com prompts de texto simples, sem fluxos de trabalho complexos nem ajuste fino (docs.bfl.ai/kontext/kontext_image_editing, verificado em 28 de outubro de 2026).

Três números da BFL definem como o código é escrito: entrada de até 20 MB ou 20 megapixels, saída de cerca de 1 MP e links assinados do resultado que duram 10 minutos. Baixe o resultado na hora.

A instrução carrega duas partes: a mudança e a lista do que fica.

O GPT-Image 2 na OmniaKey recebe uma tarefa de edição com os mesmos dois ingredientes, e a página do modelo lista texto para imagem e edição de imagem nas qualidades low, medium e high (omniakey.com/gpt-image-2, verificado em 28 de outubro de 2026). Não rodamos nenhum modelo FLUX, então o que vem a seguir são as nossas quatro edições e o código.

A requisição

Uma edição é um POST para https://api.omniakey.com/v1/media/tasks com model igual a gpt-image-2, type image, operation edit, a frase em input.prompt e a foto de origem em input.image como Base64 com o tipo mime (docs.omniakey.com/en/media/image, verificado em 2026-10-28). A chamada responde HTTP 202 com um id de tarefa. Consulte GET /v1/media/tasks/{task_id} enquanto o status for queued ou processing e depois pegue assets[0].url na tarefa concluída.

Dois detalhes custaram uma tentativa extra. Um POST com o User-Agent padrão do Python voltou HTTP 403 até definirmos um (28 de outubro de 2026), e o Base64 embutido conta para o limite de 1 MiB da requisição, então reduza a foto antes de codificar.

O resultado é um PNG opaco atrás de um link assinado que expira em cerca de uma hora; o arquivo fica disponível por 24 horas. Baixe e leia a largura e a altura reais, em vez de confiar no tamanho que você pediu.

python
import base64
import json
import os
import time
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]


def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)


def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
    with open(source_path, "rb") as f:
        image = base64.b64encode(f.read()).decode()
    body = {
        "model": "gpt-image-2",
        "type": "image",
        "operation": "edit",
        "input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
        "parameters": {"size": size, "quality": quality},
    }
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    for _ in range(150):
        time.sleep(4)
        state = request("GET", f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # signed link: valid for about an hour, so download now
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task
if __name__ == "__main__":
    task = edit_image(
        "cafe-base.jpg",
        "Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos.",
        "cafe-step1.png",
        size="1536x1024",
    )
    print("task", task)

Nossas execuções usaram size 1536x1024 e quality medium. A documentação diz que n precisa ser 1 no GPT Image; a função deixa o campo de fora. A chamada de exemplo no fim do arquivo é o passo 1 da cadeia.

Uma cadeia de três edições

Cada passo recebe o resultado anterior como entrada, então a cadeia são três tarefas e três downloads. A foto base é uma mesa de café junto à janela: uma xícara branca de café com pires, uma bicicleta vermelha na calçada, uma planta em vaso no parapeito, 1536x1024 em qualidade medium.

  • Passo 1: "Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos." Resultado: uma bicicleta preta fosca com cesto de vime na frente; mesa, xícara, planta e janela sem mudança.
  • Passo 2, a partir do passo 1: "Make it evening outside: the sky is dark blue and the street lamps are on. The cafe interior lights are warm yellow. Keep the table, the cup, the plant, the black bicycle and the window frame exactly the same. Photorealistic, no text, no logos." Resultado: céu de fim de tarde, postes acesos, luz interna amarelada e a bicicleta preta com o cesto preservados.
  • Passo 3, a partir do passo 2: "Replace the coffee in the white cup with a clear glass of iced tea with a lemon slice on the rim. Keep everything else exactly the same. Photorealistic, no text, no logos." Resultado: chá gelado com uma rodela de limão no lugar do café; a cena do fim de tarde continuou.
Grade 2x2 da mesma mesa de café: a original, a bicicleta preta, a versão de fim de tarde e o chá gelado no lugar do café
A mesma foto de café depois de três instruções, um passo por vez. Cada passo preservou a mesa, a xícara, a planta e a janela.

Os quatro quadros são cenas sintéticas feitas pelo gpt-image-2. Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1536x1024, quality medium.

Uma edição a partir da original

Nem toda edição precisa de cadeia. Esta começa da foto base e troca um objeto no parapeito: "Remove the potted plant from the windowsill and place a stack of three old hardcover books there. Keep everything else exactly the same: the table, the cup, the red bicycle and the daylight. Photorealistic, no text, no logos."

Três livros de capa dura ficaram no parapeito, a planta sumiu e a bicicleta vermelha continuou vermelha. Uma frase fez duas mudanças, e as duas apareceram no quadro.

A mesa de café com três livros antigos de capa dura no parapeito, onde antes estava a planta em vaso
Uma edição separada, a partir da foto original: livros no lugar da planta. A bicicleta vermelha não mudou.

O que se manteve e o que não

A mesa, a xícara, a planta e o batente da janela passaram pelos três passos, a bicicleta preta e o cesto sobreviveram à troca de luz do fim de tarde, e cada edição anterior continuava no quadro seguinte. A luz mudou uma vez, no passo 2, onde a frase pedia isso.

A rodela de limão ficou na borda do copo, como a frase pedia, e o chá gelado continuou sobre o pires. Cada instrução rodou uma vez, então cada quadro é uma amostra.

Instruções que funcionaram

Quatro instruções deram quatro edições utilizáveis, com um padrão em comum.

  • Uma mudança por frase e depois a lista do que fica. O passo 1 trocou a bicicleta e nomeou mesa, xícara, planta e janela como inalteradas.
  • Repita a lista do que fica a cada rodada, incluindo a mudança anterior: o passo 2 escreve "the black bicycle" e o passo 3 preserva o fim de tarde.
  • Diga onde a coisa nova entra na mesma frase que a coisa antiga: "place a stack of three old hardcover books there".
  • Use materiais e cores concretos: "matte black", "brown wicker basket", "warm yellow", "clear glass".
  • Feche com "Photorealistic, no text, no logos". Toda instrução da nossa cadeia terminou assim.

Para a ordem das frases e a escolha das palavras na edição, o nosso guia de prompts do GPT Image 2 mostra a estrutura. O guia de provador virtual cobre troca de roupa, e o guia de remoção de objetos cobre apagamentos.

Qual escolher

FLUX.1 KontextEdição no GPT-Image 2
Entrada por requisiçãoUm prompt, uma imagemUm prompt, uma imagem
Limite da origem20 MB ou 20 megapixelsRequisição de 1 MiB, Base64 incluído
Tamanho do resultadoCerca de 1 MPO tamanho que você pedir, em PNG
Link do resultado10 minutosCerca de uma hora
Situação do modeloGeração anterior, segundo a BFLDisponível na OmniaKey

Escolha o Kontext quando um pipeline FLUX já roda em produção e você quer manter esse formato de chamada por enquanto. Escolha o GPT-Image 2 quando quiser o tamanho que você define e uma hora para buscar o link. A BFL aponta trabalhos novos para o FLUX.2, então um projeto novo é um bom momento para rever a escolha.

Sobre custo, a página de preços da OpenAI (verificada em 2026-10-28) cobra o gpt-image-2 por milhão de tokens: $8.00 de entrada de imagem, $30.00 de saída de imagem, $2.00 de entrada de imagem em cache, e lote pela metade da tarifa padrão. Não há linha por imagem; o guia de geração de imagens tem uma calculadora para uma imagem.

Perguntas frequentes

O que a API do FLUX Kontext faz?

Edita uma foto a partir de uma instrução de texto, com um prompt e uma imagem de entrada por requisição (BFL, verificado em 2026-10-28). A página da BFL diz que ela "edits images using simple text prompts".

O FLUX Kontext ainda é atual?

A BFL chama o FLUX.1 Kontext de modelo de geração anterior e recomenda o FLUX.2 para projetos novos (verificado em 2026-10-28).

Dá para editar uma foto por API usando só texto?

Dá. Envie uma foto e uma instrução para o endpoint de edição do GPT-Image 2 e uma foto nova volta. Rodamos quatro edições assim em 28 de outubro de 2026.

Dá para encadear edições?

Dá, com uma tarefa por passo: cada resultado entra como a foto de origem do passo seguinte. Nossa cadeia de três passos manteve as mudanças anteriores durante a troca de luz do fim de tarde e a troca da bebida.

Cerca de uma hora na OmniaKey, com o arquivo guardado por 24 horas (docs.omniakey.com, verificado em 2026-10-28). Baixe o PNG assim que a tarefa terminar e leia as dimensões reais.

A OmniaKey entrega edições do GPT-Image 2 pelo fluxo de tarefas acima; os preços atuais estão na página de preços.

Modelos deste artigo

FLUX KontextGPT Image 2edição de imagensedição por instruçãoAPI

Artigos relacionados

Artigos recentes