HiAPI
Blog

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.

Oct 22, 2026
Comment utiliser l'API FIBO 1.5 ? Générez et éditez en 5 minutes

TL;DR

  • FIBO 1.5 est une paire d'API « génération + édition » : fibo-gen-1.5/text-to-image pour la génération d'images photoréalistes (le texte dans l'image est aussi rendu fidèlement), fibo-edit-1.5/image-to-image pour 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 un taskId, puis interrogez le résultat ; le champ d'instruction de l'API d'édition s'appelle instruction, pas prompt.

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 instruction pour 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 $.

Générer avec ce prompt →

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].url est 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 →

Commencez avec des artefacts IA persistants

Obtenez votre clé API et appelez des modèles d'image, de vidéo et d'audio via une API unique basée sur les tasks.

Lire la documentation de l'API