Recraft: Recraft V4.1 Flash
Recraft V4.1 Flash génère des images matricielles 1K à partir de texte pour des itérations visuelles rapides. Il couvre la photographie, les portraits, les scènes complexes et les concepts de logo, avec une sortie PNG ou WebP sans perte et des préférences de couleur explicites.
À 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.
Recraft V4.1 Flash est le modèle texte-vers-image de Recraft pour l’itération rapide et les travaux visuels en volume. Le fabricant cite la photographie, les portraits, l’atmosphère, les scènes complexes, les techniques mixtes et les concepts de logo parmi ses points forts. Un brief écrit devient une image matricielle à comparer à d’autres directions créatives avant de développer une ressource finale. Flash est un membre précis de la famille V4.1, avec sa propre taille de sortie et ses commandes prises en charge.
La sortie native appartient à la classe d’images matricielles 1K de Recraft. Choisissez le canevas selon l’emplacement prévu : illustration horizontale pour un en-tête de page, portrait vertical ou visuel carré pour une carte compacte. Les formats de sortie sont WebP sans perte et PNG.
Commencez le brief par le sujet principal et l’objectif visuel, puis décrivez le cadrage, le décor, l’éclairage et la technique. Pour un concept de produit, une instruction utile est : « Une radio compacte couleur crème sur un bureau en noyer, vue avant de trois quarts, douce lumière de fenêtre, photographie éditoriale calme, grand espace vide à gauche. » Pour une illustration, identifiez le langage des formes, la palette et les relations entre éléments. Explicitez les détails qui définissent l’idée plutôt que d’ajouter des adjectifs sans lien. L’allocation documentée de Flash atteint 10 000 caractères : une scène détaillée peut donc être décrite lorsque la tâche le demande.
Les commandes du fabricant comprennent les couleurs préférées et une couleur d’arrière-plan souhaitée. Une graine peut être fournie pour la reproductibilité, et son interface de génération documente une à six images par demande. Ces commandes permettent une comparaison utile : gardez le sujet et la composition stables, faites varier une direction visuelle et examinez les images selon la mise en page prévue. Les préférences de couleur décrivent le résultat demandé ; comparez les couleurs de marque importantes à la ressource terminée avant de l’associer à un système de design existant.
Flash produit des images matricielles. Un concept de logo peut aider à choisir une silhouette, une ambiance ou un agencement, tandis que les tracés modifiables relèvent des modèles Vector nommés séparément. Flash n’a pas non plus de variante Pro. La gamme V4.1 complète fournit ces choix distincts lorsque la retouche vectorielle ou les détails de plus haute résolution sont centraux pour le livrable. Le fabricant décrit une étape ultérieure d’affinage pour développer une ébauche choisie en image plus détaillée ; cette étape est une opération distincte plutôt qu’une autre taille de sortie native de Flash.
Cette édition ne prend pas en charge l’entrée image-vers-image, les styles personnalisés, les identifiants de style, la correspondance de style ni les images de référence de style. Son interface documentée exclut aussi les prompts négatifs et les commandes explicites de mise en page textuelle. Placez l’apparence et la composition demandées dans le brief positif. Si le lettrage fait partie d’un concept, mettez le texte voulu entre guillemets et inspectez les lettres rendues ; utilisez une étape de mise en page séparée lorsque typographie et placement exacts sont essentiels.
Un résultat pratique de Flash est une direction visuelle choisie avec un brief clair, un rapport d’aspect adapté et un fichier matriciel utilisable. Comparez le sujet, le cadrage, l’arrière-plan et les détails importants à la taille d’affichage prévue. Gardez ensemble le prompt réussi et le fichier retenu pour que l’étape créative suivante suive la direction choisie. L’itération rapide aide à explorer le design ; la sortie vectorielle native, la correspondance aux références de style et la résolution d’une autre édition V4.1 restent des choix de modèle distincts.
Ailoot Ultra · Images POST /v1/images/generations recraft/recraft-v4.1-flash
recraft/recraft-v4.1-flashPremiers pas
Recraft V4.1 Flash génère des images matricielles 1K à partir de texte pour des itérations visuelles rapides. Il couvre la photographie, les portraits, les scènes complexes et les concepts de logo, avec une sortie PNG ou WebP sans perte et des préférences de couleur explicites.
- Entrées acceptées
- Texte
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Images POST /v1/images/generations
- Types d’entrée
text- Types de sortie
image- Format de sortie
- Fichier image
- Nombre de sorties
- 1 sortie
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites recraft/recraft-v4.1-flash | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 Conditions: Consigne UTF8 non vide. Aucune limite de caractères générale du fabricant n’est inventée. | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites 1 | Par défaut1 |
Champresponse_format | Typestring | ExigenceFacultatif | Valeurs et limites url, b64_json | Par défaut— |
Champstream | Typeboolean | ExigenceFacultatif | Valeurs et limites false | Par défautfalse |
Combinaisons d’éléments d’entrée
Texte vers image · Obligatoire : prompt
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 |
Paramètreoptional | Contratn, response_format, stream |
Paramètren | Contrat1 |
Paramètrestream | Contratfalse |
Paramètreresponse_format | Contraturl, b64_json |
Paramètrereference_images | Contratfalse |
Paramètreedit | Contratfalse |
Paramètreoutput_format_optional | Contrat |
Paramètreresolution_control | Contratnull |
Paramètreaspect_ratio_control | Contratnull |
Paramètreother_fields | Contratrejeté sauf pour le routage interne exact du fournisseur fixé par la référence |
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}
Générez une image à partir d’une consigne.
Enregistrez chaque élément de data ; url/b64_json sont des encodages du résultat.
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 | Unité de facturation | Coût |
|---|---|---|---|---|
| ConfigurationTarifs de base par jeton | Barème tarifaireTarif de base | Quantité prévisionnelle— | Unité de facturation— | 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 |
| ConfigurationUltra | Barème tarifaire— | Quantité prévisionnelle— | Unité de facturationpar image en sortie | Coût Sortie · image en sortie · Estimation à des fins de comparaison uniquement $0.014 par image en sortie |
| ConfigurationCoût de génération estimé | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Unité de facturation— | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $0.014 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 →
Détails du tarif de référence
Les barèmes de référence du modèle ne modifient ni la sélection de méthode, ni les devis, ni les coûts. Les frais actifs utilisent les tarifs de la méthode Ailoot sélectionnée.
Configurations tarifaires des images
Prix par configuration
| Configuration | Conditions de facturation | Coût |
|---|---|---|
| ConfigurationImage en sortie | Conditions de facturationAucune variante tarifaire n’est déclarée. | Coût Sortie · Image en sortie $0.014 par image Les indications équivalentes décrivent le même montant facturé ; elles n’ajoutent pas une seconde facturation. |
Exemples de requêtes
Ailoot Ultra · 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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')
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
from openai import OpenAI
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")
request={'model': 'recraft/recraft-v4.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Recevoir et enregistrer les résultats
Ailoot Ultra · 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}
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.
Enregistrez chaque élément de données. Décodez chaque b64_json ou récupérez chaque URL signée renvoyée. Choisissez l’extension du fichier à partir du type MIME et des octets réels.
Si la réponse d’origine doit être vérifiée
Si le résultat d’une génération ou d’une retouche d’image nécessite une vérification, conservez l’operation_id/X-Client-Request-ID d’origine et les informations renvoyées sur le résultat. Récupérez les résultats existants qui vous appartiennent via la bibliothèque multimédia, à l’aide des valeurs task_id ou asset_id réelles. Ne soumettez pas à nouveau la requête de génération/retouche et ne construisez pas d’URL d’interrogation du statut à partir d’operation_id.
Champs de la réponse
| Champ | Type |
|---|---|
Champcreated | Typeinteger |
Champdata[].url | Typestring |
Champdata[].b64_json | Typebase64 string |
Champusage | Typeobject |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionChamps obligatoires, représentation des contenus ou valeur de paramètre non valides | Étape suivanteCorrigez les champs indiqués avant une nouvelle requête de création. |
Réponseserver_error | ConditionLa réponse renvoyée indique que l’opération ou le résultat nécessite une vérification | Étape suivanteConservez l’identifiant d’opération/de tâche initialement renvoyé, les en-têtes de la requête et la réponse ; poursuivez les lectures prises en charge de cette opération d’origine. Ne soumettez pas à nouveau la requête de création. |
Alias
Alias du modèle
Ailoot Ultra recraft/recraft-v4.1-flash
Alias des chemins de méthode
Utilisez les chemins de méthode indiqués ci-dessus.
ID d’appel associés
FAQ · Recraft: Recraft V4.1 Flash
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/images/generations·recraft/recraft-v4.1-flash:text→image- Quels champs la requête utilise-t-elle ?
POST /v1/images/generations·recraft/recraft-v4.1-flash:model,prompt,n,response_format,stream