Recraft: Recraft V3
Recraft V3 crée des photographies, illustrations et mises en page graphiques avec une composition attentive au texte et des commandes de style. Ses variantes matricielles et SVG distinctes conviennent aux affiches, ensembles d’images de marque, icônes et designs où texte et structure visuelle doivent fonctionner ensemble.
À 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 V3 est un modèle de génération d’images conçu pour le graphisme ainsi que pour les scènes photographiques et illustrées. Un brief écrit décrit le sujet, le décor et la composition ; le résultat est une image. V3 développe le rendu du texte et le photoréalisme de Recraft tout en conservant la cohérence de style à partir d’exemples d’images sans réentraînement.
Le texte comme partie de la composition
V3 travaille avec le texte dans l’image, y compris les textes plus longs et les lettres de taille moyenne. Recraft décrit une étape de mise en page qui établit les mots et leurs positions avant la génération de l’image. La mise en page peut être produite automatiquement depuis le brief ou organisée manuellement dans l’environnement de design de Recraft. Cela aide à relier titre, illustration et texte d’accompagnement dans une même composition. Le fabricant documente aussi des coordonnées explicites de mise en page textuelle, exprimées relativement à l’image plutôt que sur une grille fixe de pixels. Chaque élément textuel contient un seul mot et quatre points d’angle en coordonnées normalisées : (0, 0) est le coin supérieur gauche et (1, 1) le coin inférieur droit. Les coordonnées peuvent dépasser cette plage ; la forme est alors recadrée. Les mots d’une mise en page explicite doivent respecter les restrictions de caractères documentées.
Pour une affiche ou une couverture, fournissez le texte exact et décrivez sa hiérarchie : la ligne principale, sa position et la manière dont l’image la soutient. Vérifiez l’orthographe et l’espacement rendus lorsque vous choisissez un résultat.
Style, palette et direction artistique
V3 comprend des styles prédéfinis de photographie, d’illustration et d’emblèmes, ainsi qu’une bibliothèque distincte de styles vectoriels. Recraft V3 Raw est le style par défaut du modèle matriciel ; Vector art est celui de la variante vectorielle. Photorealism vise une apparence photographique, tandis qu’Illustration accueille les textures stylisées, l’ombrage et les transitions colorées plus complexes. Les styles vectoriels privilégient les formes, les palettes limitées et les aplats ou dégradés simples.
Les styles personnalisés peuvent être construits à partir d’images de référence, de styles compatibles existants ou des deux. Ils fournissent une direction visuelle réutilisable dans une série d’images. Les commandes de mélange documentées permettent d’attribuer des poids distincts aux références et aux styles sources ; le nombre de poids correspond au nombre de sources. PaletteMatch et MaxWeight sont les deux politiques de mélange indiquées. Le fabricant autorise jusqu’à 10 images de référence de style et utilise le mode regular de correspondance de style pour V3. Un style personnalisé stocké et des références directes sont des entrées alternatives, et le style personnalisé doit correspondre au modèle utilisé pour la génération.
Les couleurs préférées et une couleur d’arrière-plan guident la palette. Jusqu’à 10 couleurs RGB sont documentées, chaque composante allant de 0 à 255. Les poids relatifs facultatifs vont de 0 à 1 ; ils doivent être fournis pour toutes les couleurs ou pour aucune, et leur somme ne peut dépasser 1. Le niveau artistique va de 0 pour un traitement statique et propre à 5 pour des compositions plus dynamiques et excentriques. Un prompt négatif décrit les éléments indésirables ; une commande distincte sans texte désactive les mises en page textuelles intégrées. Une graine aléatoire est disponible pour la reproductibilité. Ces commandes offrent des leviers différents sur la scène, son style et sa mise en page visuelle.
Images matricielles et variante SVG distincte
Recraft documente deux variantes V3. Le modèle matriciel produit du WebP sans perte ou du PNG et convient aux détails photographiques, à l’ombrage et aux illustrations texturées. Recraft V3 Vector produit du SVG : des tracés et des formes redimensionnables sans résolution fixe en pixels. Il convient aux pictogrammes, concepts de logo, écussons et créations vectorielles détaillées. La conversion du matriciel au vectoriel est une opération distincte de la génération directe d’une création vectorielle.
Les deux variantes ont leur identité propre. Une image d’apparence vectorielle et une véritable sortie SVG sont des choix différents. Choisissez la sortie souhaitée lors de la préparation d’un processus de design plutôt que de considérer le nom V3 commun comme la preuve que toutes les opérations renvoient le même type de fichier.
Retoucher et finaliser une création existante
La documentation V3 de Recraft prévoit la génération image-vers-image, l’inpainting, l’outpainting et le remplacement ou la génération d’arrière-plan. Le travail image-vers-image associe une image existante à un nouveau brief. L’inpainting régénère la zone sélectionnée à l’aide d’une image et d’un masque correspondant ; l’outpainting ajoute du contenu hors du cadre original. Les opérations d’arrière-plan concernent l’environnement du sujet.
L’ensemble d’outils associé comprend aussi l’effacement, la suppression d’arrière-plan, la vectorisation et deux approches d’agrandissement. L’agrandissement créatif peut introduire de nouveaux détails ; l’agrandissement net vise une version plus grande et plus précise du contenu existant. Ce sont des opérations distinctes avec leurs propres entrées et résultats, plutôt que des significations supplémentaires du nom du modèle matriciel ou vectoriel.
Limites du prompt, de la taille et des images sources
La spécification de génération V3 du fabricant accepte un prompt jusqu’à 1000 caractères et 1–6 images par demande. Elle prend en charge 14 rapports d’aspect : 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 et 9:16. Les exemples matriciels documentés comprennent 1024x1024, 1820x1024 et 1024x1820. Les dimensions matricielles exactes doivent appartenir à la liste prise en charge ; le SVG utilise des rapports d’aspect sans taille fixe en pixels. Lorsque la taille est omise, le système du fabricant la choisit à partir du prompt.
Pour les opérations à entrée image, le fabricant prévoit PNG, JPG et WebP, ainsi que SVG lorsque l’opération précise l’autorise. Les fichiers doivent rester sous 20 Mo, ne pas dépasser 16 MP et avoir un côté long d’au plus 4096 pixels. Le côté court doit atteindre au moins 256 pixels, avec une exception de 32 pixels pour l’agrandissement net. Les masques correspondent à la taille de l’image et utilisent du noir et blanc purs ; les références de style ont une limite combinée de 64 Mo.
Pour un projet Ailoot API, transformez la tâche en brief d’image ciblé : texte exact, agencement des objets, style visuel et composition souhaitée. Une affiche, une scène de produit et une série d’icônes demandent des briefs différents ; préservez les distinctions pertinentes de variante et d’opération V3 pour décider de l’usage de chaque résultat.
Ailoot Ultra · Images POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Premiers pas
Recraft V3 crée des photographies, illustrations et mises en page graphiques avec une composition attentive au texte et des commandes de style. Ses variantes matricielles et SVG distinctes conviennent aux affiches, ensembles d’images de marque, icônes et designs où texte et structure visuelle doivent fonctionner ensemble.
- Entrées acceptées
- Texte · Images
- Résultats
- Images
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Images POST /v1/images/generations
- Types d’entrée
text,image- Types de sortie
image- Format de sortie
- Fichier image
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites recraft/recraft-v3 | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Longueur minimale: 1 | Par défaut— |
Champn | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 6 | Par défaut— |
Champaspect_ratio | Typestring | ExigenceFacultatif | Valeurs et limites 1:1, 4:3, 3:4, 16:9, 9:16, auto | Par défaut— |
Champinput_references | Typearray | ExigenceFacultatif | Valeurs et limites Nombre minimal d’éléments: 0 Nombre maximal d’éléments: 1 | Par défaut— |
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, image |
Paramètreoptional_controls | Contrataspect_ratio, n, input_references |
Paramètreexact_supported_parameters | Contrat{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}} |
Paramètrereference_material_rule | ContratUniquement les références image réelles du client ; les conditions du point de terminaison du fournisseur s’appliquent. |
Alias de méthode : /v1/images
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}
Utilisez le modèle exact et les champs d’entrée documentés.
Conservez la réponse complète, chaque sortie réelle et les identifiants d’origine renvoyés.
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.08 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.08 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.08 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={'model': 'recraft/recraft-v3', '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
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-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
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-v3", "prompt": "a red panda astronaut floating in space, studio lighting"};
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.
Conservez chaque élément de data et l’utilisation complète ; assurez la propriété et l’enregistrement de toutes les images réellement renvoyées. Aucune URL ni aucun identifiant inventé.
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 |
Alias
Alias du modèle
Ailoot Ultra recraft/recraft-v3
Alias des chemins de méthode
/v1/images
ID d’appel associés
FAQ · Recraft: Recraft V3
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/images/generations·recraft/recraft-v3:text,image→image- Quels champs la requête utilise-t-elle ?
POST /v1/images/generations·recraft/recraft-v3:model,prompt,n,aspect_ratio,input_references- Quelles limites s’appliquent ?
POST /v1/images/generations·recraft/recraft-v3:n.minimum:1;n.maximum:6