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.
TL;DR
- FIBO 1.5 es un par de endpoints de «generación + edición»:
fibo-gen-1.5/text-to-imagepara generar imágenes realistas a partir de texto (el texto dentro de la imagen también se representa con precisión), yfibo-edit-1.5/image-to-imagepara 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/tasksde HiAPI: envías la tarea y obtienes untaskId, luego consultas el resultado; el campo de instrucción del endpoint de edición se llamainstruction, noprompt.
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
instructionpara 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_urlsse 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.
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].urles 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 →-
Tutorial
Cómo llamar a hailuo-2.3-fast/image-to-video a través de la API de HiAPI: práctica con curl y Python
La primera solicitud ejecutable del nivel rápido y de bajo coste de imagen a vídeo: del ID del modelo a la descarga del MP4
-
Tutorial
Cómo llamar a hailuo-2.3/text-to-video mediante la API de HiAPI: curl, Python y ejemplos de solicitud ejecutables
-
Tutorial
Uso de Kandinsky 6.0 Pro texto a video en HiAPI: tutorial con curl y Python
Demostración práctica centrada en la solicitud: construir la llamada de prompt a clip de video, enviar la solicitud, sondear el estado de finalización y descargar el resultado