HiAPI
Blog

Tutorial

¿Cómo usar la API de FIBO 1.5? Genera y edita en 5 minutos

Generación de imágenes con fibo-gen-1.5 y edición con una frase con fibo-edit-1.5: ejemplos en curl/Python, tabla de parámetros y mensajes de error originales.

Oct 22, 2026
¿Cómo usar la API de FIBO 1.5? Genera y edita en 5 minutos

TL;DR

  • FIBO 1.5 es un par de endpoints de «generación + edición»: fibo-gen-1.5/text-to-image para generar imágenes realistas a partir de texto (el texto dentro de la imagen también se representa con precisión), y fibo-edit-1.5/image-to-image para editar una imagen con una sola frase (hasta 4 imágenes de referencia y también edición local con máscara). Abre la página del modelo Gen para probarlo; los nuevos usuarios reciben 200 créditos al registrarse.
  • Ambos tienen el mismo precio: $0.0575 por imagen; una canalización de generar y luego editar cuesta $0.115 (ver página de precios).
  • Las llamadas van a través de la API /v1/tasks de HiAPI: envías la tarea y obtienes un taskId, luego consultas el resultado; el campo de instrucción del endpoint de edición se llama instruction, no prompt.

Qué puede hacer

  • Imágenes realistas + texto preciso: textos dentro de la imagen como etiquetas de producto o letreros de tienda se escriben letra por letra correctamente (la etiqueta del ejemplo siguiente es NOIR 07).
  • Edición con una frase: Edit usa instruction para describir qué cambiar; lo que no se menciona, como la pose, el rostro o el fondo, se mantiene igual.
  • Composición con hasta 4 imágenes: cambio de ropa, cambio de fondo, producto dentro de una escena; image_urls se referencia en orden.
  • Edición local con máscara: blanco = zona a modificar, negro = mantener.

Este es un resultado real de Gen:

Luxury product photo of an amber glass perfume bottle on wet black marble, gold cap, soft rim light, droplets on the glass, the label reads 'NOIR 07' in elegant serif letters

(En español: fotografía de producto de lujo: botella de vidrio ámbar sobre mármol negro mojado, tapa dorada, luz de contorno suave, gotas de agua en el vidrio, la etiqueta dice NOIR 07. Relación de aspecto 4:5.)

fibo-gen-1.5/text-to-image, 4:5, 768×960, $0.0575.

Generar con este prompt →

Cómo elegir entre los dos endpoints

fibo-gen-1.5/text-to-image fibo-edit-1.5/image-to-image
Qué hace Generar imágenes realistas a partir de texto Modificar una imagen existente con una frase
Entrada obligatoria prompt image_urls (1–4 imágenes) + instruction
Precio $0.0575/imagen $0.0575/imagen
Parámetros destacados aspect_ratio con 9 opciones, seed (predeterminado 5555) mask_url máscara, seed (predeterminado 5555)
Ideal para Crear imágenes nuevas, materiales con texto Cambio de ropa/fondo/composición, ajustes locales

Canalización típica: Gen genera la imagen base → Edit la convierte en un conjunto (cambiar fondo, color, añadir elementos). Para elegir prompts según el caso, consulta la guía completa de prompts.

Dos rutas para empezar

3 pasos en el navegador: abre la página del modelo → pega el prompt, elige la relación de aspecto → pulsa generar; $0.0575 por imagen.

3 pasos con la API: POST /v1/tasks para enviar → obtén taskId → GET /v1/tasks/<taskId> hasta ver success y descarga.

curl: la primera imagen

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: your-unique-key-001" \
  -d '{
  "model": "fibo-gen-1.5/text-to-image",
  "input": {
    "prompt": "Luxury product photo of an amber glass perfume bottle on wet black marble, gold cap, soft rim light, droplets on the glass, the label reads '"'"'NOIR 07'"'"' in elegant serif letters",
    "aspect_ratio": "4:5",
    "seed": 2026
  }
}'

Endpoint de edición: cambia model a fibo-edit-1.5/image-to-image, escribe la instrucción en instruction y referencia las imágenes en orden (prueba de ropa con dos imágenes):

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "fibo-edit-1.5/image-to-image",
  "input": {
    "image_urls": [
      "https://static.hiapi.ai/gallery/2026/10/78f963cb21d0242c.jpg",
      "https://static.hiapi.ai/gallery/2026/10/36246b7cabde4a1a.jpg"
    ],
    "instruction": "Dress the woman in image 1 with the mustard corduroy jacket from image 2, worn open over her white t-shirt. Keep her pose, face and the studio background.",
    "aspect_ratio": "3:4"
  }
}'

Edición local con máscara: mask_url solo puede ir con 1 imagen; blanco = zona a modificar (justo al revés que Ideogram 4.5 Edit):

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "fibo-edit-1.5/image-to-image",
  "input": {
    "image_urls": ["https://static.hiapi.ai/gallery/2026/10/d9037da1559e78a6.jpg"],
    "mask_url": "https://static.hiapi.ai/gallery/2026/10/cae371f9e4689db5.png",
    "instruction": "Replace the floor under the sneaker with light wooden planks."
  }
}'

Python: enviar, consultar y descargar

import time, uuid, requests

BASE = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
}

payload = {
    "model": "fibo-gen-1.5/text-to-image",
    "input": {
        "prompt": "Luxury product photo of an amber glass perfume bottle on wet black marble, gold cap, soft rim light, droplets on the glass, the label reads 'NOIR 07' in elegant serif letters",
        "aspect_ratio": "4:5",
        "seed": 2026,
    },
}

resp = requests.post(
    BASE,
    headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
    json=payload,
    timeout=30,
)
resp.raise_for_status()
task_id = resp.json()["taskId"]

while True:
    task = requests.get(f"{BASE}/{task_id}", headers=HEADERS, timeout=30).json()
    print(task["status"])
    if task["status"] in ("success", "fail"):
        break
    time.sleep(3)

if task["status"] == "success":
    image_url = task["output"][0]["url"]   # dirección temporal, descárgala cuanto antes
    img = requests.get(image_url, timeout=60)
    with open("output_image", "wb") as f:
        f.write(img.content)
    print("saved")

Tabla de parámetros

fibo-gen-1.5/text-to-image

Campo Obligatorio Valores Descripción
prompt Sí 1–10000 caracteres Descripción de la imagen; el texto que debe aparecer va entre comillas (the label reads '…')
aspect_ratio No 1:1 / 2:3 / 3:2 / 3:4 / 4:3 / 4:5 / 5:4 / 9:16 / 16:9, predeterminado 1:1 Las 9 relaciones tienen el mismo precio
seed No Entero, predeterminado 5555 También fijo si no se envía: mismo prompt, mismo resultado; para variar, cambia el seed

fibo-edit-1.5/image-to-image

Campo Obligatorio Valores Descripción
image_urls Sí 1–4 imágenes El orden importa; instruction las referencia en orden (image 1, image 2)
instruction Sí ≥1 carácter Qué cambiar; lo no mencionado se mantiene igual
aspect_ratio No Las mismas 9 opciones Solo se aplica con 2 imágenes o más; con una sola imagen la salida mantiene la relación de la original
mask_url No URL de imagen Solo edición con una imagen; blanco = modificar, negro = mantener; el tamaño debe coincidir con la imagen original
seed No Entero, predeterminado 5555 Reproducir con la misma entrada

Si el cuerpo de la solicitud incluye campos fuera de la tabla, devuelve 400 directamente.

Errores que encontrarás (texto original de la API)

Qué hiciste Respuesta
Gen sin prompt 400 invalid input: prompt: missing required field "prompt"
seed de Gen enviado como cadena 400 invalid input: seed: got string, want integer
aspect_ratio mal escrito 400 invalid input: aspect_ratio: value must be one of '1:1', '2:3', '3:2', '3:4', '4:3', '4:5', '5:4', '9:16', '16:9'
Edit sin instruction 400 invalid input: instruction: missing required field "instruction"
Edit con 5 imágenes 400 invalid input: image_urls: maxItems: got 5, want 4
Máscara con 2 imágenes 400 (si existe mask_url, image_urls solo puede tener 1 imagen)
Saldo insuficiente 402 insufficient account balance; top up and retry

Si reenvías con el mismo Idempotency-Key, devuelve 409 o 422; prueba con una clave nueva.

Antes de producción

  • Callback: envía "callback": {"url": "https://..."} en el nivel superior del cuerpo; se notifica automáticamente el estado final y te ahorras el sondeo.
  • Guarda cuanto antes: output[0].url es una dirección temporal; descárgala en cuanto la recibas.
  • Nombra el orden de las imágenes en la instrucción: para composiciones con varias imágenes, usa image 1 / image 2; el orden es el de image_urls.
  • Semántica blanco/negro de la máscara: en FIBO blanco = modificar, negro = mantener; si migras scripts de otro modelo de edición, invierte primero la máscara.

Preguntas frecuentes

¿Cómo se llama el campo de instrucción de edición?

Se llama instruction, no prompt; si escribes mal el nombre del campo, se reporta como campo faltante.

¿Cuántas imágenes de entrada se pueden enviar como máximo?

Como máximo 4; la quinta devuelve 400 directamente.

¿Para qué sirve seed?

Por defecto es 5555 y es fijo: la misma entrada se reproduce; si quieres resultados distintos, cambia el seed explícitamente.

¿El precio y la forma de llamada de ambos endpoints son iguales?

Sí. Solo cambian los campos model e input; tanto generar como editar cuestan $0.0575 por imagen.

Siguiente paso: toma el prompt del perfume y genera una imagen en la página del modelo, luego cámbiala a la versión que quieras con una frase en instruction; para plantillas por caso, consulta la guía completa de prompts.

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