Tutoriel
Intégration de l'API de génération d'images texte-vers-image Seedream 5.0 Pro : curl, Python et l'art d'écrire du texte
1K à 0,05 $, 2K à 0,10 $, tous les paramètres, les erreurs courantes, comment faire écrire correctement le texte dans l'image, et la différence avec Lite.
Seedream 5.0 Pro texte-vers-image (seedream-5.0-pro/text-to-image) est la gamme la plus chère de la famille Seedream 5.0, et son point fort est le texte dans l'image : enseignes, emballages, titres d'affiches s'écrivent mot pour mot d'après le prompt. Cet article fournit des exemples curl et Python directement exécutables, tous les paramètres, les erreurs courantes, ainsi que quelques astuces pour que le texte soit écrit correctement.
D'abord, le prix
| Résolution | Par image | 100 images |
|---|---|---|
| 1K | $0.05 | $5 |
| 2K (par défaut) | $0.10 | $10 |
Tarif actuel de HiAPI, vérifié le 18 octobre 2026.
Le format n'affecte pas le prix, et les échecs ne sont pas facturés. Pro n'a pas de 4K ; pour du 4K, utilisez Seedream 5.0 Lite (2K/4K au même prix de $0.035). Voir la comparaison des trois gammes dans Prix de l'API Seedream 5.0.
Un exemple réel de génération
16:9, 1K, le texte de l'enseigne néon écrit mot pour mot :
A neon-lit night market street in a rainy cyberpunk city, a glowing storefront sign reads "SEEDREAM 5 PRO" in crisp lettering, cinematic composition, dramatic directional lighting, rich cohesive color grade, ultra-detailed, premium commercial finish, subtle film grain, shallow depth of field, high dynamic range

seedream-5.0-pro/text-to-image, 16:9, 1K, $0.05.
Réussir sa première génération
Préparation : créez une API Key dans la console et définissez-la comme variable d'environnement :
export HIAPI_KEY="votre clé"
curl : soumettre la tâche
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro/text-to-image",
"input": {
"prompt": "A cozy coffee shop storefront at dusk, warm window light, a hand-painted wooden sign that reads \"THE DAILY GRIND\" in serif letters",
"aspect_ratio": "16:9",
"resolution": "2K"
}
}'
Renvoie un taskId :
{"code": 200, "message": "success", "data": {"taskId": "tk-hiapi-..."}}
curl : récupérer le résultat
curl "https://api.hiapi.ai/v1/tasks/tk-hiapi-..." \
-H "Authorization: Bearer $HIAPI_KEY"
Quand data.status vaut success, l'URL de l'image se trouve dans data.output[0].url. Il s'agit d'un lien temporaire avec expiration ; téléchargez-le dès réception :
curl -o result.png "<l'url dans output>"
En 2K, la génération prend généralement environ une minute.
Python (bibliothèque standard uniquement)
import json, os, time, urllib.request
API = "https://api.hiapi.ai/v1/tasks"
KEY = os.environ["HIAPI_KEY"]
def api(url, payload=None):
req = urllib.request.Request(
url,
data=json.dumps(payload).encode() if payload else None,
headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json"},
method="POST" if payload else "GET",
)
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read())
task_id = api(API, {
"model": "seedream-5.0-pro/text-to-image",
"input": {
"prompt": 'A minimalist product poster on matte black, bold white headline that reads "SHIP FASTER", small caption "batch v2.1" bottom right',
"aspect_ratio": "3:4",
"resolution": "2K",
},
})["data"]["taskId"]
while True:
task = api(f"{API}/{task_id}")["data"]
if task["status"] == "success":
break
if task["status"] == "fail":
raise RuntimeError(task)
time.sleep(5)
urllib.request.urlretrieve(task["output"][0]["url"], "result.png")
Tous les paramètres
| Champ | Obligatoire | Valeurs |
|---|---|---|
prompt |
Oui | 3–4000 caractères, il est conseillé de rester sous environ 600 mots anglais |
aspect_ratio |
Oui | 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9 |
resolution |
Oui | 1K ($0.05) ou 2K ($0.10) |
output_format |
Non | png (par défaut) ou jpeg |
Les champs sont stricts : seed, n, size, image_urls ne sont pas acceptés, et en transmettre en trop renvoie un HTTP 400. Une requête produit une image ; pour en obtenir plusieurs, soumettez plusieurs tâches en parallèle.
Les résolutions diffèrent selon la gamme au sein de la même famille : Pro propose 1K/2K, Lite propose 2K/4K. Pensez à modifier resolution lors d'un changement de gamme.
Faire écrire le texte correctement
- Mettez le texte à écrire entre guillemets :
a sign that reads "OPEN 24 HOURS", bien plus fiable qu'une paraphrase. - Précisez la position et le style : le rendu de la police (serif, manuscrit, néon), la position (en bas à droite, centré), le support (panneau en bois, porte vitrée).
- Pas trop de texte : quelques courts textes par image sont très stables, un long paragraphe l'est beaucoup moins.
- Utilisez 2K si le texte est important : les petits caractères sont plus nets en haute résolution.
Erreurs courantes
| Symptôme | Réponse | Comment corriger |
|---|---|---|
| Champ obligatoire manquant | 400, missing required field "aspect_ratio" |
Les trois champs obligatoires doivent être transmis |
| Valeur d'énumération incorrecte | 400, resolution: value must be one of '1K', '2K' |
Respectez le tableau ci-dessus |
Envoi de seed, n, etc. en trop |
400, additional properties ... not allowed |
Supprimez les champs superflus |
| Clé invalide | 401, permission_denied |
Vérifiez la clé dans la console |
Si une tâche échoue après sa création, le résultat de la requête indique status: "fail", sans facturation.
À vérifier avant la mise en production
- Utilisez un callback plutôt que du polling : au niveau supérieur du corps de la requête (au même niveau que
modeletinput), ajoutez"callback": {"url": "https://votre-domaine/hooks/hiapi", "when": "final"}. Une fois la notification reçue, faites unGETde la tâche pour confirmer le résultat. - Évitez la double facturation : la tâche est facturée dès sa prise en charge. Avant de réessayer, vérifiez si vous avez déjà enregistré le
taskIdde cette tâche ; si oui, continuez à interroger au lieu de resoumettre ; vous pouvez aussi ajouter un en-têteIdempotency-Keylors de la soumission. - Copiez rapidement les résultats : les liens de sortie expirent, ne les utilisez pas directement en lien externe.
Questions fréquentes
Peut-on fixer le seed pour reproduire un résultat ?
Non, cette interface n'accepte pas seed. Pour obtenir une version proche à partir d'une image existante, utilisez seedream-5.0-pro/image-to-image, avec jusqu'à 10 images de référence.
Quelle différence avec Lite ?
Lite coûte $0.035 par image, avec des résolutions 2K/4K ; Pro propose 1K/2K, à $0.10 l'image en 2K. La méthode d'appel est identique. Voir la comparaison à prompt identique entre Flash et Lite dans Seedream 5.0 Flash vs Lite.
Faut-il obligatoirement utiliser un callback ?
Non. Pour les scripts et les tâches par lots, le polling direct suffit, en interrogeant toutes les 5 secondes.
Vous pouvez aussi copier directement le prompt de l'enseigne néon ci-dessus et générer une image pour $0.05.
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