Recraft: Recraft V3
Recraft V3 crée des photographies, des illustrations et des mises en page graphiques avec une composition attentive au texte et des commandes de style. Ses variantes matricielle et SVG distinctes conviennent aux affiches, ensembles d’images de marque, icônes et designs où le texte et la 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 design graphique ainsi que 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 maintenant la cohérence du style à partir d’images d’exemple sans réentraînement.
Le texte comme partie de la composition
V3 travaille avec du texte dans l’image, y compris des textes plus longs et des caractères de taille moyenne. Recraft décrit une étape de mise en page qui établit les mots et leurs positions avant la génération d’image. La mise en page peut être produite automatiquement depuis le brief ou agencée manuellement dans l’environnement de design Recraft. Cela aide à relier un titre, une illustration et un texte d’accompagnement dans une même composition. Le fabricant documente aussi des coordonnées explicites de mise en page du texte, exprimées par rapport à l’image plutôt qu’en grille fixe de pixels. Chaque élément de texte contient un seul mot et quatre points de coin 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, auquel cas la forme est recadrée. Les mots explicites de mise en page doivent suivre les restrictions de caractères documentées.
Pour une affiche ou une couverture, fournissez le texte exact et décrivez sa hiérarchie : quelle ligne domine, où elle se situe et comment l’image la soutient. Vérifiez l’orthographe et les espacements rendus lors du choix d’un résultat.
Style, palette et direction artistique
V3 comprend des styles prédéfinis de photographie, d’illustration et d’emblème, 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 que Illustration accueille les textures stylisées, les ombrages et des transitions de couleurs 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 d’une combinaison des deux. Ils fournissent une direction visuelle réutilisable dans une série d’images. Les commandes documentées de mélange permettent aux références et aux styles sources de porter des poids distincts ; le nombre de poids correspond à celui des sources. PaletteMatch et MaxWeight sont les deux règles de mélange répertorié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é enregistré et des références de style directes sont des entrées alternatives, et un style personnalisé doit correspondre au modèle utilisé pour la génération.
Les couleurs préférées et une couleur de fond 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 total ne peut pas dépasser 1. Le niveau artistique va de 0 pour un traitement statique et épuré à 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 de texte 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 au détail photographique, aux ombrages et à l’illustration texturée. Recraft V3 Vector produit du SVG : des tracés et des formes qui se redimensionnent sans résolution fixe en pixels. Il convient aux pictogrammes, concepts de logos, badges et illustrations vectorielles détaillées. La conversion d’image matricielle en vectoriel est une opération distincte de la génération directe d’illustration vectorielle.
Les deux variantes ont leur propre identité. Une image d’apparence vectorielle et une véritable sortie SVG sont des choix différents. Sélectionnez la sortie prévue lors de la préparation du processus de design au lieu de traiter le nom V3 partagé comme une preuve que toute opération renvoie le même type de fichier.
Retoucher et finaliser des visuels existants
La documentation V3 de Recraft répertorie la génération image-vers-image, l’inpainting, l’outpainting ainsi que le remplacement ou la génération de fond. Le travail image-vers-image combine une image existante et un nouveau brief. L’inpainting régénère la zone choisie à partir d’une image et d’un masque correspondant ; l’outpainting ajoute du contenu au-delà du cadre original. Les opérations de fond concernent l’environnement du sujet.
Les outils associés comprennent aussi l’effacement, la suppression de fond, la vectorisation et deux approches d’agrandissement. L’agrandissement créatif peut introduire de nouveaux détails ; l’agrandissement crisp vise une version plus grande et plus nette du contenu existant. Ce sont des opérations distinctes avec leurs propres entrées et résultats, plutôt que des sens supplémentaires du nom de modèle matriciel ou vectoriel.
Limites du prompt, de taille et d’image source
La spécification de génération V3 du fabricant accepte un prompt jusqu’à 1000 caractères et 1–6 images par requête. Elle prend en charge 14 rapports : 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 ; SVG utilise des rapports sans taille fixe en pixels. Lorsque la taille est omise, le système du fabricant la choisit depuis le prompt.
Pour les opérations avec image en entrée, le fabricant répertorie PNG, JPG et WebP, avec SVG là où l’opération précise l’autorise. Les fichiers doivent faire moins de 20 Mo, au plus 16 MP, avec un côté long d’au plus 4096 pixels. Le côté court fait au moins 256 pixels, avec une exception de 32 pixels pour l’agrandissement crisp. 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 d’API Ailoot, transformez la tâche en un brief d’image ciblé : texte exact, disposition des objets, style visuel et composition souhaitée. Une affiche, une scène produit et une série d’icônes exigent des briefs différents ; préservez les distinctions pertinentes de variante et d’opération V3 lorsque vous décidez de l’utilisation de chaque résultat.
Ailoot Ultra · Images POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Premiers pas
Recraft V3 crée des photographies, des illustrations et des mises en page graphiques avec une composition attentive au texte et des commandes de style. Ses variantes matricielle et SVG distinctes conviennent aux affiches, ensembles d’images de marque, icônes et designs où le texte et la 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
- Entrée
text,image- 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’y 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 résultat réel et les ID 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 des jetons | 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 estimé de la génération | 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 de sortie | Conditions de facturationAucune variante tarifaire n’est déclarée. | Coût Sortie · Image de sortie $0.08 par image Les entrées équivalentes décrivent la même facturation ; elles n’ajoutent pas de frais supplémentaires. |
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 données et la consommation complète ; prenez possession de toutes les images réellement renvoyées et enregistrez-les. Aucune URL ni aucun ID 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