HiAPI
Blog

Tutoriel

Comment utiliser flux-2-klein-4b/text-to-image via l'API hiapi

Jul 30, 2026
Comment utiliser flux-2-klein-4b/text-to-image via l'API hiapi

slug: flux-2-klein-4b-text-to-image-api-guide locale: en title: Comment utiliser flux-2-klein-4b/text-to-image via l'API hiapi category: tutorial summary:

  • Les exemples curl et Python minimaux pour appeler flux-2-klein-4b/text-to-image via le point de terminaison unifié /v1/tasks de hiapi.
  • 'Tableau complet des paramètres : prompt, valeurs d'énumération de aspect_ratio et seed — le schéma strict rejette les champs inconnus.'
  • 'Considérations de production : choisir entre callback.url et le polling, l'en-tête de requête Idempotency-Key, ainsi que les deux structures de réponse d'erreur.' takeaways:
  • Créez une tâche avec POST /v1/tasks, puis interrogez GET /v1/tasks/{taskId}, ou utilisez callback.url pour recevoir le résultat.
  • aspect_ratio prend en charge 11 ratios nommés ; ce modèle ne possède pas de champs size ni n.
  • Renvoyer le même en-tête Idempotency-Key lors d'une nouvelle tentative renvoie le même taskId — réutilisation sûre en cas de timeout.
  • Les erreurs 400 utilisent error_code, les erreurs d'authentification 401 utilisent le error.code imbriqué — vérifiez d'abord le code de statut HTTP. meta_title: Guide de l'API de génération d'images à partir de texte flux-2-klein-4b meta_description: 'Appeler flux-2-klein-4b/text-to-image avec curl et Python : créer une tâche, interroger pour obtenir l'image, et gérer les callbacks, l'idempotence et les erreurs en production.' keywords:
  • api de génération d'images à partir de texte flux-2-klein-4b
  • exemple d'api flux-2-klein-4b
  • api de génération d'images hiapi
  • api flux curl python tags:
  • api-guide
  • image-generation
  • flux author_name: hiapi is_published: false cover_image: https://static.hiapi.ai/blog/_default/recipe-cover.jpg

Comment utiliser flux-2-klein-4b/text-to-image via l'API hiapi

Ce que vous allez construire

Un script qui envoie un prompt à flux-2-klein-4b/text-to-image, attend la génération de l'image, puis télécharge l'image — ainsi que les détails de production à connaître avant une exécution sans surveillance (callbacks, idempotence, structures d'erreur).

Prérequis : obtenez une clé API depuis la console hiapi. Chaque requête ci-dessous s'authentifie avec Authorization: Bearer sk-<your-api-key>.

Exemple minimal fonctionnel

Les modèles de génération de hiapi s'exécutent derrière un point de terminaison asynchrone unifié : POST /v1/tasks crée une tâche et renvoie immédiatement un taskId ; vous interrogez ensuite GET /v1/tasks/{taskId} jusqu'à ce qu'elle atteigne un état terminal.

curl -X POST https://api.hiapi.ai/v1/tasks \
  -H "Authorization: Bearer sk-<your-api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "flux-2-klein-4b/text-to-image",
    "input": {
      "prompt": "a red fox walking through fresh snow, golden hour light",
      "aspect_ratio": "16:9"
    }
  }'

Résultat renvoyé :

{"code": 200, "data": {"taskId": "tk-hiapi-01K..."}, "message": "success"}

Interrogez la même tâche jusqu'à ce que data.status passe de handling à success (en passant brièvement par archiving) :

curl https://api.hiapi.ai/v1/tasks/tk-hiapi-01K... \
  -H "Authorization: Bearer sk-<your-api-key>"
{
  "code": 200,
  "data": {
    "status": "success",
    "output": [
      {"type": "image", "url": "https://temp.hiapi.ai/.../01K...-0.jpg", "expireAt": 1785939579}
    ]
  },
  "message": "success"
}

data.output[0].url correspond à l'image générée. Il s'agit d'un lien temporaire — lors des tests, il expire environ 7 jours après la génération — téléchargez donc les octets de l'image et stockez-les vous-même, plutôt que de pointer directement vers cette adresse.

Le même flux en Python (avec polling)

import time
import requests

API_KEY = "sk-<your-api-key>"
BASE = "https://api.hiapi.ai/v1"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

resp = requests.post(f"{BASE}/tasks", headers=headers, json={
    "model": "flux-2-klein-4b/text-to-image",
    "input": {
        "prompt": "a red fox walking through fresh snow, golden hour light",
        "aspect_ratio": "16:9",
    },
})
resp.raise_for_status()
task_id = resp.json()["data"]["taskId"]

while True:
    task = requests.get(f"{BASE}/tasks/{task_id}", headers=headers).json()["data"]
    if task["status"] == "success":
        image_url = task["output"][0]["url"]
        break
    if task["status"] == "failed":
        raise RuntimeError(f"generation failed: {task}")
    time.sleep(3)

image_bytes = requests.get(image_url).content
open("fox.jpg", "wb").write(image_bytes)

Paramètres importants

flux-2-klein-4b/text-to-image applique un schéma d'entrée strict — l'envoi de champs qu'il ne reconnaît pas (size, n, negative_prompt, ou tout autre champ accepté par d'autres modèles d'image hiapi) est directement rejeté ; ne copiez donc pas de paramètres d'un modèle à l'autre sans consulter d'abord la page du modèle.

Champ Obligatoire Description
prompt Oui Chaîne décrivant l'image.
aspect_ratio Non L'une des valeurs suivantes : 1:1, 16:9, 9:16, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 21:9, 9:21. La valeur par défaut est 1:1 en cas d'omission.
seed Non Entier. Réutiliser le même seed permet de reproduire les résultats d'un appel à l'autre.

La référence complète des paramètres se trouve sur la page du modèle ; le prix actuel par image est indiqué sur la page de tarification — fiez-vous à celle-ci plutôt qu'à des chiffres codés en dur, car les tarifs à l'usage évoluent.

Considérations de production

Préférez les callbacks au polling. Au-delà des scripts rapides, évitez la boucle de polling et ajoutez callback.url (ainsi que "when": "final") dans le corps de la requête de création de tâche — une fois la tâche terminée, hiapi envoie le résultat en POST à votre point de terminaison, avec une structure de charge utile identique à celle renvoyée par GET /v1/tasks/{taskId}. Pour les détails sur les champs de callback et la vérification de signature, consultez Créer une tâche.

{
  "model": "flux-2-klein-4b/text-to-image",
  "callback": {"url": "https://yourapp.com/hooks/hiapi", "when": "final"},
  "input": {"prompt": "a red fox walking through fresh snow, golden hour light"}
}

Idempotence. Définissez l'en-tête Idempotency-Key dans vos appels POST /v1/tasks (255 octets maximum). Réessayer la même requête avec la même clé sous le même compte ne crée pas une seconde tâche — vous récupérez le taskId d'origine. C'est ce qui permet de réessayer en toute sécurité une requête qui a expiré de votre côté, sans double facturation.

Gestion des erreurs. En pratique, deux structures d'échec distinctes apparaissent ; vérifiez donc les deux :

  • Un input incorrect (prompt manquant, aspect_ratio hors plage, champ non pris en charge) renvoie un HTTP 400 avec le corps de réponse {"error_code": "INVALID_REQUEST", "message": "..."}.
  • Une clé API invalide ou non autorisée renvoie un HTTP 401 avec une structure de réponse différente : {"error": {"code": "permission_denied", "message": "...", "request_id": "..."}}.

Branchez d'abord sur le code de statut HTTP, puis lisez les champs d'erreur réellement présents — ne partez pas du principe que tous les échecs utilisent la même structure de réponse.

Ressources associées

Questions fréquentes

flux-2-klein-4b/text-to-image prend-il en charge l'image-vers-image ? Pas directement — c'est un autre modèle, flux-2-klein-4b/image-to-image, qui possède son propre schéma d'entrée.

Quelle est la différence entre flux-2-klein-4b et flux-2-klein-9b ? Les deux sont des points de terminaison de génération d'images à partir de texte de la même série FLUX.2 [klein] ; 9b est le plus grand des deux. Avant de changer, consultez la page du modèle 9b pour connaître son prix actuel et ses paramètres.

Peut-on demander plusieurs images en un seul appel ? Non — le schéma n'accepte pas de champ n ni de champ de quantité. Chaque image nécessite une requête.

Quelle est la durée de validité de l'URL d'image renvoyée ? output[0].url est un lien temporaire doté de son propre horodatage expireAt ; considérez-le comme de courte durée (environ une semaine lors des tests) et téléchargez les octets de l'image dès que la tâche réussit, plutôt que de stocker l'URL.

Pourquoi ai-je reçu une erreur 401 permission_denied ? Votre clé est absente, invalide, ou n'a pas accès à ce modèle. Vérifiez que vous envoyez bien Authorization: Bearer sk-... et que vous utilisez une clé provenant de la console, et non un espace réservé.

Faut-il exécuter son propre serveur pour utiliser cette API ? Uniquement si vous avez besoin de callbacks. Interroger GET /v1/tasks/{taskId} depuis un script, une tâche cron ou une fonction serverless fonctionne parfaitement à faible trafic ; passez à callback.url lorsque le volume de génération augmente.

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