models

Recraft: Recraft V4 Pro

Markdown · JSON

Recraft: Recraft V4 Pro

Recraft V4 Pro génère des images matricielles 2K pour les compositions détaillées, le photoréalisme, l’illustration et le travail créatif destiné à l’impression. C’est l’édition V4 à plus haute résolution, avec des briefs textuels, des entrées de style facultatives et un processus distinct d’image en image.

À 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 matriciel à plus haute résolution de la famille V4 de Recraft. V4 se concentre sur le jugement visuel, la composition équilibrée, la couleur cohérente et l’interprétation soignée de la direction créative. Le producteur positionne Pro pour des détails plus fins, des scènes complexes plus réalistes et de grands visuels de production. Utilisez-le pour une illustration détaillée, une image éditoriale, un concept d’affiche ou une autre ressource qui bénéficie d’un résultat matriciel plus grand. Il reste distinct du modèle V4.1 plus récent et de la sortie SVG de V4 Pro Vector.

Le code exact du producteur est recraftv4_pro. La sortie documentée est matricielle 2K en WebP sans perte ou en PNG : 2048 × 2048 pixels pour un carré, 2688 × 1536 pour le 16:9 et 1664 × 2560 pour le 2:3. Les autres ratios pris en charge ont leurs propres dimensions. Choisissez un ratio pour la mise en page prévue ou une taille exacte permise; une taille arbitraire en pixels ne fait pas partie du contrat de génération documenté. V4 standard a une sortie matricielle 1K plus petite, tandis que les modèles vectoriels n’ont pas de résolution fixe en pixels.

V4 peut interpréter un court prompt 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 dramatique d’une chaise sculpturale, des surfaces en métal brossé, un éclairage latéral, un arrière-plan sombre calme et de l’espace au-dessus de l’objet pour un titre. Nommer ces relations clarifie davantage la composition voulue qu’une demande générale d’image haut de gamme.

La portée créative de la famille comprend l’illustration narrative, les scènes photoréalistes et les visuels en volume avec des indications de matière 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 leur interaction : arrière-plan, illustration ou photographie, hiérarchie du titre et texte complémentaire. V4 est positionné pour les phrases courtes et moyennes lisibles, mais l’orthographe et la hiérarchie finales doivent être inspectées plutôt que déduites du nom du modèle.

La référence de génération actuelle permet les prompts jusqu’à 10 000 caractères, d’une à six sorties, un seed aléatoire et les commandes de couleurs préférées et de couleur d’arrière-plan. Des styles personnalisés ou des images de référence compatibles facultatifs peuvent guider l’apparence avec une correspondance flexible 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 voulue dans le prompt positif et gardez les exigences de sujet, de mise en page et de couleur explicites. Pour la génération de style par références, utilisez d’une à dix images PNG, JPG ou WebP, au plus 64 Mo au total et moins de 20 Mo chacune. Chaque référence doit avoir un côté court d’au moins 256 pixels, un côté long d’au plus 4 096 pixels et une résolution d’au plus 16 mégapixels. Utilisez ces références ou un style enregistré compatible, plutôt que les deux.

Recraft documente une opération distincte d’image en 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 styles personnalisés V4 dans cette opération. Préparez la source dans les limites d’entrée d’image du producteur et précisez les attributs à reprendre 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. Les détails matriciels supplémentaires de Pro facilitent cette inspection, tandis que l’image reste une interprétation générée du brief créatif fourni. Pour l’image en image, fournissez PNG, JPG, WebP ou SVG de moins de 20 Mo, d’au plus 16 mégapixels, avec les deux côtés entre 256 et 4 096 pixels.

Ailoot Ultra · Images POST /v1/images/generations recraft/recraft-v4-pro

recraft/recraft-v4-pro

Recraft /recraft/recraft-v4-pro

Pour commencer

Recraft V4 Pro génère des images matricielles 2K pour les compositions détaillées, le photoréalisme, l’illustration et le travail créatif destiné à l’impression. C’est l’édition V4 à plus haute résolution, avec des briefs textuels, des entrées de style facultatives et un processus distinct d’image en image.

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
ChampTypeExigenceValeurs et limitesPar défaut
ChampmodelTypestringExigenceObligatoireValeurs et limites
recraft/recraft-v4-pro
Par défaut—
ChamppromptTypestringExigenceObligatoireValeurs et limites
Longueur minimale: 1
Par défaut—
ChampnTypeintegerExigenceFacultatifValeurs et limites
Minimum: 1
Maximum: 6
Par défaut—
Champaspect_ratioTypestringExigenceFacultatifValeurs et limites
1:1, 4:3, 3:4, 16:9, 9:16, auto
Par défaut—
Champinput_referencesTypearrayExigenceFacultatifValeurs 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ètreContrat
Paramètrecontent_typeContratapplication/json
ParamètrerequiredContratmodel, prompt
Paramètrematerial_typesContrattext, image
Paramètreoptional_controlsContrataspect_ratio, n, input_references
Paramètreexact_supported_parametersContrat{"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_ruleContratUniquement les références d’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 sortie réelle et les identifiants d’origine retourné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.

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.5 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.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 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.5 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={'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}/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.

Conservez chaque élément de données et l’utilisation complète; prenez possession de toutes les images réellement retournées et enregistrez-les. 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
ChampType
ChampcreatedTypeinteger
Champdata[].urlTypestring
Champdata[].b64_jsonTypebase64 string
ChampusageTypeobject

Alias

Alias du modèle

Ailoot Ultra recraft/recraft-v4-pro

Alias des chemins de méthode

/v1/images

ID d’appel associés

recraft/recraft-v4-pro

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

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