Tutoriel
Comment utiliser l'API FIBO 1.5 ? Générez et éditez en 5 minutes
fibo-gen-1.5 texte-vers-image + fibo-edit-1.5 modification d'image en une phrase : exemples curl/Python, tableau des paramètres et messages d'erreur d'origine.
TL;DR
- FIBO 1.5 est une paire d'API « génération + édition » :
fibo-gen-1.5/text-to-imagepour la génération d'images photoréalistes (le texte dans l'image est aussi rendu fidèlement),fibo-edit-1.5/image-to-imagepour modifier une image en une phrase (jusqu'à 4 images de référence, édition locale possible avec masque). Ouvrez la page du modèle Gen pour essayer, 200 crédits offerts à l'inscription. - Même tarif des deux côtés : 0,0575 $ l'image, un pipeline génération puis édition à 0,115 $ (voir la page tarifs).
- Les appels passent par l'API HiAPI
/v1/tasks: soumettez la tâche pour obtenir untaskId, puis interrogez le résultat ; le champ d'instruction de l'API d'édition s'appelleinstruction, pasprompt.
Ce qu'il sait faire
- Rendu photoréaliste + texte exact : les textes dans l'image comme les étiquettes produit ou les enseignes sont écrits lettre par lettre (l'étiquette de l'exemple ci-dessous est NOIR 07).
- Édition en une phrase : Edit utilise
instructionpour décrire ce qu'il faut changer ; la pose, le visage, l'arrière-plan et les autres éléments non mentionnés restent inchangés. - Composition jusqu'à 4 images : changement de tenue, de décor, intégration de produit dans une scène, référencées dans l'ordre via
image_urls. - Masque pour l'édition locale : blanc = zone à modifier, noir = à conserver.
Voici un résultat réel 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
(Traduction : photo de produit de luxe : flacon en verre ambré sur marbre noir humide, bouchon doré, lumière de contour douce, gouttelettes sur le verre, l'étiquette indique NOIR 07. Ratio choisi 4:5.)

fibo-gen-1.5/text-to-image, 4:5, 768×960, 0,0575 $.
Quelle API choisir
fibo-gen-1.5/text-to-image |
fibo-edit-1.5/image-to-image |
|
|---|---|---|
| Rôle | Générer une image photoréaliste à partir de texte | Modifier une image existante en une phrase |
| Entrées obligatoires | prompt |
image_urls (1–4 images) + instruction |
| Prix | 0,0575 $/image | 0,0575 $/image |
| Paramètres spécifiques | aspect_ratio 9 valeurs, seed (5555 par défaut) |
mask_url masque, seed (5555 par défaut) |
| Idéal pour | Créer de nouvelles images, visuels avec texte | Changement de tenue/décor/composition, retouches locales |
Pipeline typique : Gen produit l'image de base → Edit la décline en série (changement de décor, de couleur, ajout d'éléments). Pour choisir un prompt selon le cas d'usage, voir le recueil de prompts.
Deux parcours pour démarrer
Navigateur en 3 étapes : ouvrez la page du modèle → collez le prompt, choisissez le ratio → cliquez sur générer, 0,0575 $ l'image.
API en 3 étapes : POST /v1/tasks pour soumettre → récupérez le taskId → GET /v1/tasks/<taskId> jusqu'au statut success, puis téléchargez.
curl : la première image
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
}
}'
API d'édition : remplacez model par fibo-edit-1.5/image-to-image, mettez l'instruction dans instruction et référencez les images dans l'ordre (essayage à partir de deux images) :
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"
}
}'
Édition locale avec masque : mask_url ne s'utilise qu'avec 1 seule image, blanc = zone à modifier (l'inverse d'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 : soumettre, interroger, télécharger
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"] # adresse temporaire, à télécharger rapidement
img = requests.get(image_url, timeout=60)
with open("output_image", "wb") as f:
f.write(img.content)
print("saved")
Tableau des paramètres
fibo-gen-1.5/text-to-image
| Champ | Obligatoire | Valeurs | Description |
|---|---|---|---|
prompt |
Oui | 1–10000 caractères | Description de la scène ; le texte à afficher se met entre guillemets (the label reads '…') |
aspect_ratio |
Non | 1:1 / 2:3 / 3:2 / 3:4 / 4:3 / 4:5 / 5:4 / 9:16 / 16:9, 1:1 par défaut | 9 ratios au même prix |
seed |
Non | Entier, 5555 par défaut | Fixe même si omis : même prompt, même résultat ; changez le seed pour varier |
fibo-edit-1.5/image-to-image
| Champ | Obligatoire | Valeurs | Description |
|---|---|---|---|
image_urls |
Oui | 1–4 images | L'ordre compte, l'instruction y fait référence dans l'ordre (image 1, image 2) |
instruction |
Oui | ≥1 caractère | Ce qu'il faut modifier ; tout élément non mentionné reste inchangé |
aspect_ratio |
Non | Les mêmes 9 valeurs | Effectif uniquement avec 2 images ou plus ; une seule image conserve son ratio d'origine |
mask_url |
Non | URL d'image | Édition mono-image uniquement ; blanc = modifier, noir = conserver ; les dimensions doivent correspondre à l'image d'origine |
seed |
Non | Entier, 5555 par défaut | Reproductibilité pour les mêmes entrées |
Tout champ hors tableau dans le corps de la requête renvoie directement un 400.
Les erreurs que vous rencontrerez (messages d'origine de l'API)
| Ce que vous avez fait | Réponse |
|---|---|
Gen sans prompt |
400 invalid input: prompt: missing required field "prompt" |
seed de Gen passé en chaîne |
400 invalid input: seed: got string, want integer |
aspect_ratio mal orthographié |
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 sans instruction |
400 invalid input: instruction: missing required field "instruction" |
| Edit avec 5 images | 400 invalid input: image_urls: maxItems: got 5, want 4 |
| Masque avec 2 images | 400 (image_urls limité à 1 image quand mask_url est présent) |
| Solde insuffisant | 402 insufficient account balance; top up and retry |
Une resoumission avec le même Idempotency-Key renvoie 409 ou 422 ; réessayez avec une nouvelle clé.
À vérifier avant la mise en production
- Callback : passez
"callback": {"url": "https://..."}au niveau racine du corps de requête pour être notifié automatiquement à l'état final, sans interrogation répétée. - Archivage rapide :
output[0].urlest une adresse temporaire, téléchargez dès réception. - Nommer les images dans l'instruction : pour la composition multi-images, référencez par image 1 / image 2, dans l'ordre de
image_urls. - Sémantique noir/blanc du masque : FIBO blanc = modifier, noir = conserver ; inversez le masque avant de migrer un script depuis un autre modèle d'édition.
Questions fréquentes
Comment s'appelle le champ d'instruction d'édition ?
Il s'appelle instruction, pas prompt ; un nom de champ erroné renvoie une erreur de champ manquant.
Combien d'images d'entrée au maximum ?
4 au maximum, la 5e renvoie directement un 400.
À quoi sert le seed ?
5555 par défaut et fixe — les mêmes entrées produisent le même résultat ; pour obtenir autre chose, changez explicitement le seed.
Les deux API ont-elles le même prix et le même mode d'appel ?
Oui. Seuls model et les champs d'input changent ; génération et édition sont à 0,0575 $ l'image.
Étape suivante : prenez le prompt du parfum et générez une image sur la page du modèle, puis transformez-la en la version voulue avec une phrase dans instruction ; pour des modèles de scénarios, voir le recueil de prompts.
Articles similaires
Voir tous les articles →-
Tutoriel
Comment appeler hailuo-2.3-fast/image-to-video via l'API HiAPI : curl et Python en pratique
La première requête exploitable du palier image-vers-vidéo rapide et économique — de l'ID du modèle au téléchargement du MP4
-
Tutoriel
Comment appeler hailuo-2.3/text-to-video via l'API HiAPI : curl, Python et exemples de requêtes exécutables
-
Tutoriel
Utiliser Kandinsky 6.0 Pro texte-vers-vidéo sur HiAPI : tutoriel curl et Python
Démonstration pratique axée sur la requête : construire l'appel du prompt au clip vidéo, soumettre la requête, interroger l'état d'achèvement et télécharger le résultat