Black Forest Labs: FLUX.3 Image
FLUX 3 Image crée et retouche des images à partir d’un brief écrit et de dix références au maximum. Il ajoute des cadres de délimitation définis dans le prompt pour la composition et les changements locaux, un ancrage par recherche web et d’images, ainsi que cinq classes de résolution.
À propos du modèle
Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.
FLUX 3 Image est le modèle de génération et de retouche d’images de Black Forest Labs offrant un contrôle explicite de la composition. Une description textuelle peut créer une nouvelle scène ; des images fournies peuvent établir un sujet, une scène à réviser ou plusieurs éléments à combiner. Les cadres de délimitation permettent à un brief de préciser la place de chaque élément et les parties d’une image existante à modifier. Le résultat est une image dont la scène, le texte et la mise en page demandés sont à examiner.
Créer une scène ou donner une instruction de retouche
Pour une nouvelle image, décrivez le sujet, l’action ou la pose, le décor, la lumière et le cadrage. Mettez le texte exact à afficher dans l’image entre guillemets et indiquez où il apparaît. Un brief original de produit pourrait montrer une tasse de camping rouge sur une surface en pierre claire, avec un grand titre au-dessus et une douce lumière matinale révélant l’anse. Définissez le rapport entre le titre, le produit et le fond, au lieu de proposer des mots de style sans lien.
Pour la retouche, identifiez l’objet précis et le changement : recolorer la tasse, remplacer une étiquette, déplacer une silhouette ou changer le style de la scène. Une retouche unique ne nécessite pas de cadre dessiné manuellement. Le processus documenté enrichit l’instruction avant la génération et peut localiser l’élément nommé et ajouter automatiquement un cadre. Le prompt enrichi renvoyé consigne cette interprétation, ce qui est utile lorsqu’une instruction sélectionne le mauvais objet ou introduit un détail indésirable.
Combiner et préparer les images de référence
Le profil exact du producteur accepte une à dix références, fournies comme URL d’images ou données d’image encodées. Chacune doit mesurer au moins 256×256 pixels et ne pas dépasser 16 mégapixels. Nommez une référence par sa position ou son contenu visible, puis expliquez son rôle : la personne de la référence Image 1, la veste de la référence Image 2 et la pièce de la référence Image 3. Une image de référence est une source d’informations visuelles et non une instruction de copier tous ses détails sans rapport.
Le réglage du rapport de format vaut auto par défaut. Dans la spécification de requête, un rapport demandé dans le prompt est prioritaire ; sinon la première référence établit le cadrage, avec une sortie carrée en repli lorsque ni une référence ni un format demandé ne le définissent. Pour une composition, placez d’abord la référence de scène souhaitée ou choisissez explicitement le rapport. Conservez les images sources et leur ordre avec le résultat pour qu’une révision ultérieure utilise le même point de départ visuel.
Placer les éléments avec des cadres de délimitation
Un prompt de mise en page combine une description avec un tableau JSON de lignes d’éléments. La description nomme un élément au moyen d’un marqueur tel que <cup_1> ; la ligne contient id, bbox et desc. Les coordonnées sont des entiers de 0 à 1000 dans l’ordre [top, left, bottom, right], mesurés depuis le coin supérieur gauche. Par exemple, [0, 0, 500, 500] décrit le quart supérieur gauche, quelles que soient les dimensions en pixels de l’image. Utilisez le rapport de format pour lequel la mise en page a été conçue, car cette grille de coordonnées s’étire avec le cadre.
Une ligne de retouche utilise plutôt from, src_bbox et tgt_bbox à côté de l’identifiant et de la description. ref_image_0 désigne la première image fournie. Des cadres source et cible identiques ancrent un élément ; des cadres différents le déplacent ou le redimensionnent. Une nouvelle ligne sans source génère sa description à l’emplacement cible, permettant des ajouts, remplacements ou recolorations. Une ligne source sans cible supprime l’élément. Indiquez les ajouts et suppressions dans l’instruction écrite et dans les lignes, et conservez les lignes d’ancrage pour les détails qui doivent rester en place.
Attribuez au texte son propre cadre et citez son contenu exact dans desc. Les cadres guident le placement et l’échelle ; ce ne sont pas des masques de découpe, et un élément peut donc dépasser le rectangle. Le fabricant rapporte que les nouveaux objets dans des cadres d’environ 40×25 pixels ne sont souvent pas apparus dans ses exemples. Prévoyez assez d’espace visible et examinez les limites retouchées. Les pixels hors de la cible restent généralement stables, mais les ombres, les reflets et l’éclairage voisin peuvent encore changer.
Ancrage factuel, classes de sortie et dossiers utiles
Le profil documenté active l’ancrage par défaut, permettant à la recherche web et d’images de nourrir la génération. Il peut être désactivé pour un brief qui doit utiliser seulement sa description et ses références fournies. Pour un sujet réel, identifiez clairement le lieu, l’événement ou l’objet et séparez le contenu factuel du traitement artistique. Une image nourrie par la recherche doit toujours être comparée à des sources faisant autorité lorsqu’une étiquette, un objet ou un événement représenté doit être exact.
Les cinq classes de résolution sont 768sq, 1k, 1.5k, 2k et 4k, avec 1k par défaut. Elles représentent des paliers d’aire identique en pixels ; la largeur et la hauteur exactes dépendent donc du rapport sélectionné. Quinze rapports fixes vont du 21:9 aux formats carré et portrait jusqu’au 9:21. Le profil de ce modèle contrôle la taille par le rapport et la résolution ; il n’expose pas les champs seed, width ou height utilisés dans les profils de requête FLUX.2. Son sélecteur de version documenté nomme actuellement une version évolutive plutôt que d’établir une correspondance datée avec les poids du fournisseur.
Le processus du producteur renvoie une image après traitement asynchrone, avec le prompt enrichi. Son lien signé de téléchargement d’image est valide pendant une heure. Conservez l’image elle-même, le prompt final et les références au lieu de dépendre d’un lien temporaire. Pour une ressource vérifiée, comparez le texte demandé, le placement des objets, l’identité des références et la zone modifiée à la taille d’affichage prévue. Une génération terminée constitue le point de départ du contrôle de ces exigences visuelles.
Ailoot Ultra · Génération d’images POST /v1/images/generations black-forest-labs/flux-3-image
black-forest-labs/flux-3-image
black-forest-labs/flux-3-imagePremiers pas
FLUX 3 Image crée et retouche des images à partir d’un brief écrit et de dix références au maximum. Il ajoute des cadres de délimitation définis dans le prompt pour la composition et les changements locaux, un ancrage par recherche web et d’images, ainsi que cinq classes de résolution.
- Entrées acceptées
- Texte · Images
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Génération d’images POST /v1/images/generations
- Entrée
text,image- Sortie
image
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites black-forest-labs/flux-3-image | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 768, 1K, 1.5K, 2K, 4K | Par défaut— |
Champaspect_ratio | Typestring | ExigenceFacultatif | Valeurs et limites 21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, 1:2, 9:21, auto | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 1 | Par défaut— |
Champinput_references | Typearray | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 10 | Par défaut— |
Champprovider | Typeobject | ExigenceFacultatif | Valeurs et limites | Par défaut— |
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt |
Paramètrematerial_types | Contrattext, image |
Cycle de vie : synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id effectivement renvoyé ou enregistrement de la bibliothèque multimédia
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Coût |
|---|---|---|---|
| ConfigurationTarifs de base des jetons | Barème tarifaireTarif de base | Quantité prévisionnelle— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationCoût estimé de la génération | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.082 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot Ultra · Génération d’images
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'black-forest-labs/flux-3-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Recevoir et enregistrer les résultats
Ailoot Ultra · Génération d’images
Téléchargez chaque image renvoyée ou enregistrez son contenu Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Autres lectures de contenu
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Conserver tous les résultats terminés
Enregistrez chaque image terminée ; récupérez chaque URL renvoyée ou décodez son contenu Base64.
Conservez la réponse complète et les en-têtes, chaque sortie effective, les identifiants initialement renvoyés et tous les champs d’utilisation. Récupérez l’opération d’origine sans soumettre à nouveau sa création.
Si la réponse d’origine doit être vérifiée
Conservez le X-Client-Request-ID renvoyé pour le rapprochement. Consultez uniquement les valeurs task_id/asset_id effectivement renvoyées ou votre bibliothèque multimédia ; ne construisez jamais une URL de tâche à partir de l’identifiant de l’opération et ne soumettez jamais à nouveau la création.
Champs de la réponse
| Champ | Type |
|---|---|
Champcreated | Type |
Champdata[].url | Type |
Champdata[].b64_json | Type |
Champusage | Type |
Alias
Alias du modèle
Ailoot Ultra black-forest-labs/flux-3-image
Alias des chemins de méthode
/v1/images
ID d’appel associés
FAQ · Black Forest Labs: FLUX.3 Image
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/images/generations·black-forest-labs/flux-3-image:text,image→image- Quels champs la requête utilise-t-elle ?
POST /v1/images/generations·black-forest-labs/flux-3-image:model,prompt,resolution,aspect_ratio,n,input_references,provider- Quelles limites s’appliquent ?
POST /v1/images/generations·black-forest-labs/flux-3-image:n.minimum:1;n.maximum:1