HiAPI
Blog

Guía de uso

Flux-2-Klein-4b imagen a imagen para fotos de productos de comercio electrónico

Un flujo de trabajo práctico para editar fotos de productos existentes con flux-2-klein-4b/image-to-image en la API de hiapi — con prompts reales, resultados reales y código por lotes.

Aug 12, 2026
Flux-2-Klein-4b imagen a imagen para fotos de productos de comercio electrónico

Por qué editar fotos de productos en lugar de volver a fotografiarlos

Una imagen principal de producto rara vez cubre todo lo que necesita un listado de producto. La cuadrícula de una plataforma de comercio electrónico exige una imagen limpia sobre fondo blanco. Una entrada de blog o un anuncio necesita el mismo producto en un entorno cotidiano. Una campaña de temporada requiere una variante de color o material que quizá todavía no exista. Volver a fotografiar cada variante es lento y caro — y la mayoría de las veces la geometría del producto (forma, posición del logo, proporciones) no debería cambiar en absoluto; solo el fondo o un material concreto debe cambiar.

Esa es exactamente la tarea en la que destaca flux-2-klein-4b/image-to-image en la API de hiapi: recibe una foto de producto existente y una instrucción de edición, y produce una nueva imagen en la que todo lo que no pediste cambiar permanece igual. Es el nivel rápido y de bajo coste de la familia FLUX.2 [klein] — no es el modelo que elegirías para generar un producto desde cero, pero encaja perfectamente cuando ya tienes una foto base que te gusta.

A continuación se muestran dos ediciones reales realizadas sobre la misma foto inicial, con los prompts exactos utilizados y un script por lotes para ejecutar este flujo de trabajo en todo un catálogo de productos.

La foto inicial

Esta es la imagen base sobre la que se realiza cada una de las ediciones siguientes: auriculares de diadema negros mate, fotografiados sobre un fondo de estudio gris liso — una típica foto de listado de producto "antes" que necesita más variantes.

Edición 1: colocar el producto en un entorno cotidiano

Prompt utilizado:

Mantén los auriculares exactamente igual (forma, acabado negro mate, logo y proporciones sin cambios). Sustituye el fondo de estudio gris liso por un cálido entorno cotidiano: los auriculares sobre un escritorio de madera de roble claro, junto a un MacBook cerrado, una pequeña planta verde y una taza de café de cerámica, con luz natural suave de ventana entrando desde la izquierda, poca profundidad de campo, fotografía de producto editorial con estilo de oficina en casa acogedora.

La clave está en la primera frase: antes de describir el nuevo fondo, indica explícitamente al modelo qué partes deben permanecer exactamente iguales (forma, acabado, logo, proporciones). Sin ese anclaje, los modelos de imagen a imagen a veces alteran las proporciones o el acabado del producto junto con la escena. Con él, los auriculares se conservan tal cual y solo cambia el entorno.

Edición 2: sustituir el material sin alterar la forma

Prompt utilizado:

Mantén exactamente igual la forma, las proporciones, el logo y el ángulo de disparo de los auriculares. Cambia únicamente el material y el color de las almohadillas y del acolchado de la diadema, de negro mate a una textura de cuero marrón claro con costuras visibles, mientras que la carcasa y los brazos de la diadema permanecen en negro mate. Mantén el fondo de estudio gris liso y la iluminación sin cambios, fotografía de producto para catálogo de comercio electrónico.

Esta edición es más acotada que la del entorno cotidiano: mismo fondo, misma iluminación, mismo ángulo de disparo — solo el material de las almohadillas y del acolchado de la diadema cambia de negro mate a cuero marrón claro. Limitar la instrucción con tanta precisión (indicar las piezas exactas, indicar el material exacto) es lo que hace que el resto del producto — carcasa, logo, silueta — no cambie.

Por qué estas ediciones son fiables

  • Indica qué permanece igual, no solo qué cambia. Anteponer "mantén la forma, el logo y las proporciones sin cambios" a la instrucción de edición funciona mejor que cualquier descripción detallada del nuevo fondo o material.
  • Sé literal con el objetivo. "Textura de cuero marrón claro con costuras visibles" deja menos margen de interpretación al modelo que "haz que parezca premium".
  • Una sola edición por prompt. La sustitución de fondo y la de material funcionan bien por separado; acumular varios cambios no relacionados en un mismo prompt suele difuminar el anclaje y desplazar detalles no deseados.
  • Reutiliza la misma foto base entre variantes. Cada imagen de esta guía parte de la misma foto fuente, y eso es precisamente lo que permite usarlas juntas en un mismo listado de producto o campaña de marketing.

Edición por lotes de un catálogo de productos

Las dos ediciones anteriores usan la misma estructura de solicitud: una URL de imagen existente más un prompt de edición, enviados al endpoint de tareas asíncronas de hiapi. El fragmento de código siguiente recorre una lista de tuplas (base_image_url, prompt, output_name) — el mismo patrón que usarías para procesar todo un catálogo por lotes en un conjunto de variantes de fondo o de material.

import os
import time
import requests

API_BASE = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
MODEL = "flux-2-klein-4b/image-to-image"


def submit_edit(base_image_url: str, prompt: str) -> str:
    resp = requests.post(
        API_BASE,
        headers={"Authorization": f"Bearer {TOKEN}"},
        json={
            "model": MODEL,
            "input": {
                "prompt": prompt,
                "image_urls": [base_image_url],
                "resolution": "1 MP",
            },
        },
        timeout=60,
    )
    resp.raise_for_status()
    return resp.json()["data"]["taskId"]


def wait_and_download(task_id: str, out_path: str, poll_s: int = 5, timeout_s: int = 300) -> None:
    deadline = time.time() + timeout_s
    while time.time() < deadline:
        r = requests.get(
            f"{API_BASE}/{task_id}",
            headers={"Authorization": f"Bearer {TOKEN}"},
            timeout=30,
        )
        task = r.json().get("data", {})
        if task.get("status") == "success":
            url = task["output"][0]["url"]
            img = requests.get(url, timeout=120)
            with open(out_path, "wb") as f:
                f.write(img.content)
            return
        if task.get("status") == "fail":
            raise RuntimeError(task.get("error"))
        time.sleep(poll_s)
    raise TimeoutError(f"task {task_id} did not finish in {timeout_s}s")


# One entry per product / variant you need.
batch = [
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the product exactly as-is (shape, finish, logo, proportions). "
     "Replace the background with a warm lifestyle desk scene, soft natural "
     "light from the left.",
     "headphones-lifestyle.jpg"),
    ("https://cdn.example.com/products/headphones-black.jpg",
     "Keep the shape, proportions, logo, and camera angle exactly as they "
     "are. Change only the ear cushion and headband padding material to tan "
     "brown leather with visible stitching; background and lighting stay "
     "the same.",
     "headphones-tan-leather.jpg"),
]

for base_url, prompt, out_name in batch:
    task_id = submit_edit(base_url, prompt)
    wait_and_download(task_id, out_name)
    print(f"saved {out_name}")

Cada llamada es independiente, así que para catálogos grandes normalmente ejecutarás un pequeño grupo de estas tareas en paralelo (unos pocos workers suelen bastar — el cuello de botella es la propia API de tareas, no tu cliente), en lugar de recorrerlas estrictamente de una en una.

Precios

flux-2-klein-4b/image-to-image se factura por imagen y aumenta con la resolución de salida. A fecha de 2026-08, el nivel de 1MP usado en las dos ediciones de esta guía cuesta $0.00715 por imagen; consulta la página de precios para conocer todos los niveles de resolución (de 0.25MP a 4MP) y las tarifas actuales de otros modelos, ya que los precios pueden cambiar.

Preguntas frecuentes

¿La imagen a imagen cambia la forma o el logo del producto? Si le pides explícitamente que no lo haga, no. Indicar claramente al inicio del prompt qué debe permanecer fijo (forma, proporciones, logo) es precisamente lo que mantiene estables esos elementos — no especificarlo es la causa más común de desplazamientos no deseados.

¿Qué resolución debería usar para editar catálogos? 1MP es suficiente para la mayoría de listados web y contenido de entorno cotidiano, y mantiene el coste bajo; sube a 2MP o 4MP solo para imágenes que vayan a recortarse de cerca o imprimirse, ya que cada nivel cuesta más.

¿Puedo ejecutar este flujo de trabajo en todo un catálogo de una vez? Sí — el script por lotes anterior es ese patrón: recorre tuplas (image, prompt, output name) y envía cada una como una tarea independiente. Ejecuta unas pocas solicitudes en paralelo en lugar de un único bucle secuencial enorme.

¿En qué se diferencia esto de generar un producto desde cero con texto a imagen? Texto a imagen parte de cero, por lo que no puede garantizar que el resultado coincida con la geometría exacta de un producto existente. Imagen a imagen parte de tu foto real, así que la forma, el logo y las proporciones que no pediste cambiar se conservan por construcción — justo lo que necesita un catálogo de productos.

Pruébalo tú mismo

Una vez que el prompt está delimitado con precisión, cada una de las dos ediciones anteriores solo requiere una llamada a la API. Si ya tienes fotos de producto y quieres generar variantes de entorno cotidiano o de material sin volver a fotografiar, el inicio rápido de la documentación de hiapi te guía por la autenticación y tu primera solicitud en unos minutos.

Artículos relacionados

Ver todos los artículos →

Empieza a crear con artefactos de IA persistentes

Consigue tu API key y llama a modelos de imagen, vídeo y audio a través de una única API basada en tasks.

Leer la documentación de la API