models

Recraft: Recraft V4.1 Flash

Markdown · JSON

Recraft: Recraft V4.1 Flash

Recraft V4.1 Flash génère des images matricielles 1K à partir de texte pour l’itération visuelle rapide. Il prend en charge la photographie, les portraits, les scènes complexes et les concepts de logos, avec sortie PNG ou WebP sans perte et 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 de texte en image de Recraft pour l’itération rapide et le travail visuel à grand volume. Le fabricant identifie la photographie, les portraits, l’atmosphère, les scènes complexes, les techniques mixtes et les concepts de logos comme des usages forts. Un brief écrit devient une image matricielle qui peut être comparée à d’autres directions créatives avant le développement d’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 : une illustration horizontale pour un en-tête de page, un portrait vertical ou un 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 le médium. Pour un concept de produit, une instruction utile est : « Une petite radio crème sur un bureau en noyer, vue avant de trois quarts, douce lumière de fenêtre, photographie éditoriale calme, généreux espace vide à gauche. » Pour une illustration, identifiez le langage des formes, la palette et la relation entre les éléments. Gardez explicites les détails qui définissent l’idée au lieu d’ajouter des adjectifs sans lien. La limite documentée de prompt de Flash est de 10 000 caractères, ce qui permet de décrire une scène détaillée lorsque la tâche l’exige.

Les commandes du fabricant comprennent les couleurs préférées et une couleur d’arrière-plan souhaitée. Un seed peut être fourni pour des résultats reproductibles, et son interface de génération documente d’une à six images par requête. Ces commandes permettent une comparaison utile : gardez le sujet et la composition stables, faites varier une direction visuelle et vérifiez les images obtenues pour la mise en page voulue. Les préférences de couleur décrivent le résultat demandé; comparez les couleurs de marque importantes à la ressource terminée avant de la combiner à un système de design existant.

Flash produit des graphiques matriciels. Un concept de logo peut aider à choisir une silhouette, une ambiance ou un agencement, tandis que les tracés modifiables appartiennent aux 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 le montage vectoriel ou les détails à plus haute résolution sont centraux au livrable. Le fabricant décrit une étape d’affinement ultérieure pour faire évoluer une ébauche choisie vers une image plus détaillée; cette étape est une opération distincte plutôt qu’une autre taille de sortie native Flash.

Cette édition ne prend pas en charge l’entrée d’image en image, les styles personnalisés, les identifiants de style, la correspondance de style ou 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 de texte. Placez l’apparence et la composition demandées dans le brief positif. Lorsque des caractères font partie d’un concept, citez le texte voulu et inspectez les lettres rendues; utilisez une étape de mise en page distincte lorsque la typographie et le placement exacts sont essentiels.

Un résultat pratique de Flash est une direction visuelle sélectionnée avec un brief clair, un ratio approprié et un fichier matriciel utilisable. Comparez le sujet, le cadrage, l’arrière-plan et les détails importants à la taille d’affichage de l’image. Conservez le prompt réussi et le fichier choisi ensemble pour que l’étape créative suivante suive la direction sélectionnée. L’itération rapide aide à explorer le design; la sortie vectorielle native, la correspondance de style par références 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-flash

Recraft /recraft/recraft-v4.1-flash

Pour commencer

Recraft V4.1 Flash génère des images matricielles 1K à partir de texte pour l’itération visuelle rapide. Il prend en charge la photographie, les portraits, les scènes complexes et les concepts de logos, avec sortie PNG ou WebP sans perte et 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
Entrée
text
Sortie
image
Format de sortie
Fichier image
Nombre de sorties
1 sortie
ChampTypeExigenceValeurs et limitesPar défaut
ChampmodelTypestringExigenceObligatoireValeurs et limites
recraft/recraft-v4.1-flash
Par défaut—
ChamppromptTypestringExigenceObligatoireValeurs et limites
Longueur minimale: 1
Conditions: Invite UTF8 non vide. Aucune limite de caractères applicable à tout le fabricant n’est inventée.
Par défaut—
ChampnTypeintegerExigenceFacultatifValeurs et limites
1
Par défaut1
Champresponse_formatTypestringExigenceFacultatifValeurs et limites
url, b64_json
Par défaut—
ChampstreamTypebooleanExigenceFacultatifValeurs 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ètreContrat
Paramètrecontent_typeContratapplication/json
ParamètrerequiredContratmodel, prompt
Paramètrematerial_typesContrattext
ParamètreoptionalContratn, response_format, stream
ParamètrenContrat1
ParamètrestreamContratfalse
Paramètreresponse_formatContraturl, b64_json
Paramètrereference_imagesContratfalse
ParamètreeditContratfalse
Paramètreoutput_format_optionalContrat
Paramètreresolution_controlContratnull
Paramètreaspect_ratio_controlContratnull
Paramètreother_fieldsContratrejeté, sauf pour le routage interne exact du fournisseur tel qu’il est fixé

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 invite.

Enregistrez chaque élément de data; url/b64_json sont des encodages de 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.

ConfigurationBarème tarifaireQuantité prévisionnelleUnité de facturationCoût
ConfigurationTarifs de base des jetonsBarème tarifaireTarif de baseQuantité prévisionnelle—Unité de facturation—Coût
Entrée · Jetons en entrée · Estimation à des fins de comparaison uniquement — / 1K jetons
Sortie · Jetons en sortie · Estimation à des fins de comparaison uniquement — / 1K jetons
Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K jetons
Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K jetons
Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K jetons
ConfigurationUltraBarème tarifaire—Quantité prévisionnelle—Unité de facturationpar image en sortieCoû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érationUnité 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

ConfigurationConditions de facturationCoût
ConfigurationImage de sortieConditions de facturationAucune variante tarifaire n’est déclarée.Coût
Sortie · Image de sortie $0.014 par image

Les lignes équivalentes décrivent la même facturation; elles n’ajoutent pas une deuxième facturation.

Exemples de requêtes

Ailoot Ultra · Images

curlPython SDKNode.js SDK
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}/content
  • GET /v1/media/assets
  • GET /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
ChampType
ChampcreatedTypeinteger
Champdata[].urlTypestring
Champdata[].b64_jsonTypebase64 string
ChampusageTypeobject
Erreurs et étapes suivantes
RéponseConditionÉtape suivante
Réponse400 · invalid_request_errorConditionChamps obligatoires, représentation des éléments fournis ou valeur de paramètre invalidesÉtape suivanteCorrigez les champs indiqués avant une nouvelle requête de création.
Réponseserver_errorConditionLa 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

recraft/recraft-v4.1-flash

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

Plus de détails

Connectez Ailoot à Claude Code, OpenCode, Hermes ou à votre application.

L’entreprise et son portefeuille de projets

L’entreprise et son portefeuille de projets : des millions de clients ; des ventes qui se chiffrent en milliards chaque mois.

Achetez des tokens à prix réduit.

Une remise d’abonnement pour le travail régulier. Des codes promo jusqu’à 50% sur l’achat de tokens.

Abonnement
Choisissez une offre à tarif réduit pour vos requêtes régulières.
Code promo jusqu’à 50%
Saisissez le code à l’achat. Le prix est recalculé selon la promotion en cours.
Dépenses dans l’historique
Modèle, tokens et montant sont enregistrés pour chaque requête.

Choisir un abonnement · Voir les prix des modèles

Connectez l’API au produit que vous vendez.

SaaS, applications et bots selon l’offre officielle et le contrat de licence Ailoot. Pour la revente, demandez une licence revendeur.

Application commerciale
Intégrez la génération de texte, d’images, de vidéo et de son aux fonctions payantes de votre service.
Licence revendeur
Envoyez la description du projet et le mode d’accès. Demandez des conditions écrites d’utilisation et de revente.
Documents sur le site
L’offre officielle, le contrat de licence et la politique de traitement des données sont accessibles avant connexion.

Demander une licence revendeur · Offre officielle et contrat de licence