Tutoriel
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
inputincorrect (promptmanquant,aspect_ratiohors 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
- Obtenir les détails d'une tâche — la référence complète du polling
- Authentification — les portées de la clé API et le format des en-têtes
- flux-2-klein-4b/image-to-image — même série, qui modifie une image d'entrée plutôt que de générer à partir de zéro
- flux-2-klein-9b/text-to-image — le modèle plus grand de la même série klein
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 →-
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