Recraft: Recraft V4 Pro
Recraft V4 Pro génère des images raster 2K pour les compositions détaillées, le photoréalisme, l’illustration et les créations destinées à l’impression. C’est l’édition V4 de résolution supérieure, avec des briefs textuels, des entrées de style facultatives et un processus d’image à image séparé.
À 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 Pro est le modèle raster de résolution supérieure de la famille V4 de Recraft. V4 met l’accent sur le jugement visuel, la composition équilibrée, la cohérence des couleurs et l’interprétation attentive de la direction créative. Le producteur positionne Pro pour des détails plus fins, des scènes complexes plus réalistes et des visuels de production importants. Utilisez-le pour une illustration détaillée, une image éditoriale, un concept d’affiche ou une autre ressource bénéficiant d’un résultat raster plus grand. Il reste distinct du modèle V4.1 ultérieur et de la sortie SVG de V4 Pro Vector.
Le code exact du producteur est recraftv4_pro. La sortie documentée est du raster 2K en WebP sans perte ou PNG : 2048 × 2048 pixels pour un carré, 2688 × 1536 pour le 16:9 et 1664 × 2560 pour le 2:3. Les autres rapports pris en charge ont leurs propres dimensions. Choisissez un rapport de format pour la mise en page prévue ou une taille exacte autorisée ; une taille arbitraire en pixels ne fait pas partie du contrat de génération documenté. V4 standard a une sortie raster 1K plus petite, tandis que les modèles vectoriels n’ont pas de résolution fixe en pixels.
V4 peut interpréter un prompt court pour l’exploration ou un prompt structuré pour un résultat contrôlé. Pour une direction artistique précise, le guide du fabricant passe du sujet et de l’environnement au cadrage, aux attributs, aux relations spatiales, à l’éclairage, à la profondeur et à l’ambiance. Pour une image éditoriale de produit, demandez une photographie verticale spectaculaire d’une chaise sculpturale, des surfaces en métal brossé, une lumière latérale, un fond sombre discret et de l’espace au-dessus de l’objet pour un titre. Nommer ces relations rend la composition souhaitée plus claire qu’une demande générale d’image haut de gamme.
La gamme créative de la famille comprend l’illustration narrative, les scènes photoréalistes et les visuels en volume avec des indications de matières et d’éclairage. Un résultat d’apparence 3D reste une image, et non une scène 3D modifiable. Pour une affiche graphique, précisez les couches visuelles et leurs interactions : fond, illustration ou photographie, hiérarchie du titre et texte d’accompagnement. V4 est positionné pour des phrases lisibles, courtes ou de longueur moyenne, mais l’orthographe et la hiérarchie finales doivent être examinées plutôt que déduites du nom du modèle.
La référence actuelle de génération autorise des prompts jusqu’à 10’000 caractères, une à six sorties, une graine aléatoire et des commandes de couleurs préférées et de couleur de fond. Des styles personnalisés facultatifs ou des images de référence compatibles peuvent guider l’apparence avec correspondance souple ou précise. Le modèle n’accepte pas les anciennes commandes V3 negative_prompt, les styles prédéfinis, text_layout, artistic_level ou no_text. Décrivez l’image finale souhaitée dans le prompt positif et gardez explicites les exigences de sujet, de mise en page et de couleur. Pour la génération par références de style, utilisez une à dix images PNG, JPG ou WebP, sans dépasser 64 Mo au total et avec moins de 20 Mo chacune. Le côté le plus court de chaque référence doit mesurer au moins 256 pixels, son côté le plus long ne doit pas dépasser 4’096 pixels et sa résolution doit être de 16 mégapixels au maximum. Utilisez soit ces références, soit un style enregistré compatible, plutôt que les deux.
Recraft documente une opération séparée d’image à image pour V4. Elle combine une image existante et un prompt avec une force de 0 à 1 pour contrôler le degré de changement et n’accepte pas les commandes de style personnalisé V4 dans cette opération. Préparez la source dans les limites d’entrée image du producteur et indiquez les attributs qui doivent passer dans le nouveau résultat. Pour une ressource finale plus grande, vérifiez les détails fins, le recadrage et les caractères à la taille prévue. Le détail raster supplémentaire de Pro facilite cette inspection, tandis que l’image reste une interprétation générée du brief créatif fourni. Pour l’image à image, fournissez un PNG, JPG, WebP ou SVG de moins de 20 Mo, de 16 mégapixels au maximum, avec les deux côtés compris entre 256 et 4’096 pixels.
Ailoot Ultra · Images POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proPremiers pas
Recraft V4 Pro génère des images raster 2K pour les compositions détaillées, le photoréalisme, l’illustration et les créations destinées à l’impression. C’est l’édition V4 de résolution supérieure, avec des briefs textuels, des entrées de style facultatives et un processus d’image à image séparé.
- 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-v4-pro | 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 ; elles sont régies par les conditions du point de terminaison du fournisseur. |
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 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 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.5 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.5 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 de tarification 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.5 par image Les mentions équivalentes décrivent le même montant facturé ; 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-v4-pro', '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-v4-pro', '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-v4-pro", "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 effectivement renvoyées et enregistrez-les. Aucun lien ni 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-v4-pro
Alias des chemins de méthode
/v1/images
ID d’appel associés
FAQ · Recraft: Recraft V4 Pro
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- Quels champs la requête utilise-t-elle ?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- Quelles limites s’appliquent ?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6