Un GIF de un personaje parpadeando puede hacer más visible una historia o una ficha de producto, pero un bucle que «salta» al volver al primer cuadro distrae más de lo que ayuda. OpenAI lanzó el 4 de noviembre de 2026 Images 2.6 y habilitó GIF animado en Image API. La novedad merece un experimento propio: preparar movimiento corto, comprobar cuadros y peso, y decidir si un GIF sirve mejor que un video o una imagen fija. Es una intención distinta de nuestra visión general del lanzamiento.
Qué permite la API
La guía oficial indica usar output_format="gif" en POST /v1/images/generations. No está disponible para el endpoint de edición de imágenes. Puedes pedir de 2 a 64 cuadros con frame_count y una duración de 20 a 2.000 milisegundos por cuadro con frame_duration_ms, redondeada a 10 ms. El tamaño de cada cuadro puede ser auto o dimensiones positivas múltiplos de 16, sujetas al presupuesto total de píxeles del modelo. Menos cuadros o menor tamaño ayudan si la solicitud excede el límite.
La API devuelve el GIF terminado como base64. No admite streaming, imágenes parciales, output_compression personalizado ni prompt_rewriter para este formato. Especifica estos parámetros solo cuando la salida sea GIF. No confundas un GIF de nueve cuadros con nueve archivos que debas ensamblar: el resultado ya es la animación.

Un experimento reproducible para una marca
Elige un sujeto simple sin derechos ajenos: por ejemplo, una linterna de papel que se ilumina suavemente sobre fondo fijo. Evita texto, logos y cambios de cámara. Define un estado inicial y final casi iguales para que el ciclo cierre. Instala el SDK openai, configura OPENAI_API_KEY como variable de entorno y ejecuta este ejemplo adaptado de los parámetros documentados:
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI()
result = client.images.generate(
model="gpt-image-2.6-flare",
output_format="gif",
frame_count=9,
frame_duration_ms=200,
size="auto",
quality="medium",
prompt=(
"A simple unbranded paper lantern on a fixed dark background. "
"It gradually glows brighter, then returns to the original dim glow. "
"Nine consistent frames, fixed camera, identical shape and background. "
"Make the final frame flow naturally into the first. No text or logo."
),
)
Path("lantern-loop.gif").write_bytes(
base64.b64decode(result.data[0].b64_json)
)
Ese prompt es un punto de partida, no una garantía de continuidad. Abre lantern-loop.gif y compara cuadro 9 contra cuadro 1. Comprueba que el objeto no cambie de forma, que la cámara permanezca fija y que no aparezcan artefactos. Si hay salto, ajusta el movimiento o reduce la distancia entre estados inicial y final. No intentes arreglarlo solo subiendo la calidad.
Una comprobación local antes de publicar
Con pillow instalado, este bloque lee propiedades objetivas del archivo generado. Te dirá cuántos cuadros contiene, su tamaño y duración aproximada, y el peso del archivo; no puede juzgar por sí solo si el movimiento parece natural.
from pathlib import Path
from PIL import Image
path = Path("lantern-loop.gif")
with Image.open(path) as gif:
durations = []
for frame in range(gif.n_frames):
gif.seek(frame)
durations.append(gif.info.get("duration", 0))
print("frames:", gif.n_frames)
print("size:", gif.size)
print("duration_ms:", sum(durations))
print("bytes:", path.stat().st_size)
Si se obtienen nueve cuadros de 200 ms, el ciclo nominal dura 1.800 ms. Luego míralo en móvil y en el sitio real: un GIF pesado puede retrasar carga y distraer de un CTA. Añade texto alternativo que describa la acción y evita poner información esencial solo en movimiento. Si necesitas voz, subtítulos o una secuencia larga, un formato de video suele ser más apropiado.
Estado de la prueba: parámetros y límites están verificados en la documentación oficial; los bloques Python pasaron revisión de sintaxis y el lector de GIF se probó con un archivo de ejemplo local. No ejecutamos la generación pagada de Images 2.6 ni afirmamos que este prompt produzca un bucle perfecto. Revisa el costo con tu tamaño y calidad antes de integrarlo en un flujo automático.
