models

Recraft: Recraft V3

Markdown · JSON

Recraft: Recraft V3

Recraft V3 maakt foto's, illustraties en grafische lay-outs met tekstbewuste compositie en stijlinstellingen. De afzonderlijke raster- en SVG-varianten passen bij posters, merkbeeldsets, iconen en ontwerpen waarin tekst en visuele structuur moeten samenwerken.

Over het model

Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.

Recraft V3 is een beeldgeneratiemodel voor zowel grafisch ontwerp als fotografische en geïllustreerde scènes. Een geschreven briefing beschrijft onderwerp, omgeving en compositie; het resultaat is een afbeelding. V3 ontwikkelt de tekstweergave en het fotorealisme van Recraft verder en behoudt tegelijk stijlconsistentie vanuit voorbeeldbeelden zonder hertraining.

Tekst als onderdeel van de compositie

V3 werkt met tekst in het beeld, inclusief langere teksten en middelgrote letters. Recraft beschrijft een lay-outfase die woorden en hun posities vóór beeldgeneratie vastlegt. De lay-out kan automatisch uit de briefing worden gemaakt of handmatig in de ontwerpomgeving van Recraft worden opgebouwd. Dat helpt kop, illustratie en ondersteunende tekst binnen één compositie te verbinden. De fabrikant documenteert ook expliciete tekstlay-outcoördinaten, relatief ten opzichte van het beeld in plaats van als vast pixelraster. Elk tekstelement bevat één woord en vier hoekpunten in genormaliseerde coördinaten: (0, 0) is linksboven en (1, 1) rechtsonder. Coördinaten mogen buiten dat bereik vallen; in dat geval wordt de vorm bijgesneden. Woorden in een expliciete tekstlay-out moeten de gedocumenteerde tekenbeperkingen volgen.

Geef voor een poster of cover de exacte tekst op en beschrijf de hiërarchie: welke regel leidt, waar die staat en hoe het beeld die ondersteunt. Controleer weergegeven spelling en afstand wanneer je een resultaat kiest.

Stijl, palet en artistieke richting

V3 bevat gecureerde fotografische, illustratie- en embleemstijlen plus een afzonderlijke bibliotheek met vectorstijlen. Recraft V3 Raw is de standaardstijl van het rastermodel; Vector art is de standaard voor de vectorvariant. Photorealism streeft naar een fotografisch uiterlijk, terwijl Illustration gestileerde texturen, schaduw en complexere kleurovergangen ondersteunt. Vectorstijlen geven de voorkeur aan vormen, beperkte paletten en vlakke vullingen of eenvoudige kleurverlopen.

Aangepaste stijlen kunnen worden opgebouwd uit referentiebeelden, bestaande compatibele stijlen of een combinatie. Ze leveren een herbruikbare visuele richting over een beeldreeks heen. De gedocumenteerde menginstellingen laten referenties en bronstijlen afzonderlijke gewichten dragen; het aantal gewichten komt overeen met het aantal bronnen. PaletteMatch en MaxWeight zijn de twee vermelde mengregels. De fabrikant staat maximaal 10 stijlreferentiebeelden toe en gebruikt de gewone stijlmatchmodus voor V3. Een opgeslagen aangepaste stijl en directe stijlreferenties zijn alternatieve invoeren en een aangepaste stijl moet overeenkomen met het generatiemodel.

Voorkeurskleuren en een achtergrondkleur sturen het palet. Maximaal 10 RGB-kleuren zijn gedocumenteerd, met elke component van 0 tot 255. Optionele relatieve gewichten lopen van 0 tot 1; ze moeten voor elke kleur of voor geen enkele worden opgegeven en hun totaal mag niet groter dan 1 zijn. Artistic level loopt van 0 voor een statische, strakke uitwerking tot 5 voor dynamischere, excentrieke composities. Een negatieve prompt beschrijft ongewenste elementen; een afzonderlijke no-text-instelling schakelt ingebedde tekstlay-outs uit. Een willekeurige seed is beschikbaar voor reproduceerbaarheid. Die instellingen bieden verschillende sturingsmogelijkheden voor scène, stijl en visuele lay-out.

Rasterbeelden en een afzonderlijke SVG-variant

Recraft documenteert twee V3-varianten. Het rastermodel produceert verliesvrije WebP of PNG en is geschikt voor fotografisch detail, schaduw en illustratie met textuur. Recraft V3 Vector produceert SVG: paden en vormen die kunnen schalen zonder vaste pixelresolutie. Het is geschikt voor pictogrammen, logoconcepten, badges en gedetailleerd vectorwerk. Raster-naar-vectorconversie is een afzonderlijke bewerking, los van rechtstreeks vectorbeelden genereren.

Beide varianten hebben een eigen identiteit. Een afbeelding met vectorachtige uitstraling en daadwerkelijke SVG-uitvoer zijn verschillende keuzes. Kies de gewenste uitvoer bij de voorbereiding van een ontwerpworkflow in plaats van de gedeelde V3-naam als bewijs te behandelen dat elke bewerking hetzelfde bestandstype teruggeeft.

Bestaand beeldmateriaal bewerken en afwerken

De V3-documentatie van Recraft vermeldt afbeelding-naar-afbeeldinggeneratie, inpainting, outpainting en achtergrondvervanging of -generatie. Afbeelding-naar-afbeeldingwerk combineert een bestaand beeld met een nieuwe briefing. Inpainting genereert het gekozen gebied opnieuw met een afbeelding en passend masker; outpainting voegt inhoud buiten het oorspronkelijke kader toe. Achtergrondbewerkingen behandelen de omgeving van een onderwerp.

De bijbehorende gereedschapsset omvat ook wissen, achtergrond verwijderen, vectorisatie en twee vergrotingsmethoden. Creatieve vergroting kan nieuwe details introduceren; scherpe vergroting richt zich op een scherpere, grotere weergave van bestaande inhoud. Dit zijn afzonderlijke bewerkingen met eigen invoer en resultaten, geen bijkomende betekenissen van de raster- of vectormodelnaam.

Prompt-, formaat- en bronbeeldlimieten

De V3-generatiespecificatie van de fabrikant accepteert een prompt van maximaal 1000 tekens en 1–6 afbeeldingen per aanvraag. Ze ondersteunt 14 beeldverhoudingen: 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 en 9:16. Gedocumenteerde rastervoorbeelden zijn 1024x1024, 1820x1024 en 1024x1820. Exacte rasterafmetingen moeten uit de ondersteunde lijst komen; SVG gebruikt beeldverhoudingen zonder vaste pixelgrootte. Wanneer formaat ontbreekt, kiest het systeem van de fabrikant dat vanuit de prompt.

Voor bewerkingen met beeldinvoer vermeldt de fabrikant PNG, JPG en WebP, met SVG waar de specifieke bewerking dat toestaat. Bestanden moeten kleiner dan 20 MB zijn, maximaal 16 MP, met een lange zijde van maximaal 4096 pixels. De korte zijde is minstens 256 pixels, met een uitzondering van 32 pixels voor scherpe vergroting. Maskers passen bij de afbeeldingsgrootte en gebruiken zuiver zwart en wit; stijlreferenties hebben een gezamenlijke limiet van 64 MB.

Zet voor een Ailoot API-project de taak om in een gerichte beeldbriefing: exacte tekst, objectopstelling, visuele stijl en gewenste compositie. Een poster, productscène en iconenreeks vragen verschillende briefings; behoud de relevante verschillen tussen V3-varianten en bewerkingen wanneer je bepaalt hoe elk resultaat zal worden gebruikt.

Ailoot Ultra · Afbeeldingen POST /v1/images/generations recraft/recraft-v3

recraft/recraft-v3

Recraft /recraft/recraft-v3

Aan de slag

Recraft V3 maakt foto's, illustraties en grafische lay-outs met tekstbewuste compositie en stijlinstellingen. De afzonderlijke raster- en SVG-varianten passen bij posters, merkbeeldsets, iconen en ontwerpen waarin tekst en visuele structuur moeten samenwerken.

Toegestane invoer
Tekst · Afbeeldingen
Resultaten
Afbeeldingen

Beschikbaar in Ailoot · invoer en methoden

Ailoot Ultra · Afbeeldingen POST /v1/images/generations
Invoer
text, image
Uitvoer
image
Uitvoerformaat
Afbeeldingsbestand
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
recraft/recraft-v3
Standaard—
VeldpromptTypestringVereisteVereistWaarden en limieten
Minimumlengte: 1
Standaard—
VeldnTypeintegerVereisteOptioneelWaarden en limieten
Minimum: 1
Maximum: 6
Standaard—
Veldaspect_ratioTypestringVereisteOptioneelWaarden en limieten
1:1, 4:3, 3:4, 16:9, 9:16, auto
Standaard—
Veldinput_referencesTypearrayVereisteOptioneelWaarden en limieten
Minimumaantal items: 0
Maximumaantal items: 1
Standaard—
Combinaties van invoermaterialen

Tekst naar afbeelding · Vereist: prompt

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, prompt
Parametermaterial_typesContracttext, image
Parameteroptional_controlsContractaspect_ratio, n, input_references
Parameterexact_supported_parametersContract{"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}}
Parameterreference_material_ruleContractAlleen werkelijke referentieafbeeldingen van de klant; de voorwaarden van het eindpunt van de aanbieder zijn hierop van toepassing.

Methodealiasnamen: /v1/images

Levenscyclus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · daadwerkelijk teruggegeven task_id of record in de mediabibliotheek

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Gebruik het exacte model en de gedocumenteerde invoervelden.

Bewaar het volledige antwoord, alle werkelijke uitvoer en de oorspronkelijke teruggestuurde ID's.

Tarieven

Zo worden de uiteindelijke kosten berekend

De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.

Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.

Snelle modus
Niet opgegeven Wanneer de snelle modus geselecteerd is
Flex-modus
Niet opgegeven Wanneer de flex-modus geselecteerd is
Maximale redeneerinspanning
Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt

Geschatte tarieven ter vergelijking

Prijzen per configuratie

Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.

ConfiguratieTariefstaffelVerwachte hoeveelheidRekeneenheidKosten
ConfiguratieBasistarieven voor tokensTariefstaffelBasistariefVerwachte hoeveelheid—Rekeneenheid—Kosten
Invoer · Invoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens
Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens
Invoer · Cache lezen · Schatting uitsluitend ter vergelijking — / 1K tokens
Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking — / 1K tokens
Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking — / 1K tokens
ConfiguratieUltraTariefstaffel—Verwachte hoeveelheid—Rekeneenheidper uitvoerafbeeldingKosten
Uitvoer · afbeeldingsuitvoer · Schatting uitsluitend ter vergelijking $0.08 per uitvoerafbeelding
ConfiguratieGeschatte generatiekostenTariefstaffel—Verwachte hoeveelheidschatting voor één generatieRekeneenheid—Kosten
Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking $0.08 schatting vóór generatie

Deze raming is geen extra kost of vast tarief voor de voltooide generatie.

Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →

Details van het referentietarief

Referentiestaffels op modelniveau veranderen de methodeselectie, kostenramingen of afschrijvingen niet. Voor de actieve kostenberekening gelden de tarieven van de geselecteerde Ailoot-methode.

Prijsconfiguraties voor afbeeldingen

Prijzen per configuratie

ConfiguratieFactureringsvoorwaardenKosten
ConfiguratieUitvoerafbeeldingFactureringsvoorwaardenEr is geen prijsvariant gedeclareerd.Kosten
Uitvoer · Uitvoerafbeelding $0.08 per afbeelding

Gelijkwaardige vermeldingen beschrijven dezelfde aanrekening; ze voegen geen tweede kost toe.

Voorbeeldverzoeken

Ailoot Ultra · Afbeeldingen

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-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");

Resultaten ophalen en opslaan

Ailoot Ultra · Afbeeldingen

Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren

Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.

Bewaar elk gegevensitem en het volledige verbruik; zorg dat alle werkelijk teruggestuurde afbeeldingen als eigen assets worden opgeslagen. Geen verzonnen URL's of ID's.

Als het oorspronkelijke antwoord moet worden gecontroleerd

Als het resultaat van een afbeeldingsgeneratie of -bewerking gecontroleerd moet worden, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de teruggegeven resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met daadwerkelijk teruggegeven task_id- of asset_id-waarden. Dien de generatie- of bewerkingsaanvraag niet opnieuw in en stel geen polling-URL samen op basis van operation_id.

Antwoordvelden
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject

Aliasnamen

Modelaliasnamen

Ailoot Ultra recraft/recraft-v3

Aliasnamen voor methodepaden

/v1/images

Gerelateerde aanroeper-ID’s

recraft/recraft-v3

FAQ · Recraft: Recraft V3
Welke invoer en resultaten zijn beschikbaar?

POST /v1/images/generations · recraft/recraft-v3: text, image → image

Welke velden gebruikt het verzoek?

POST /v1/images/generations · recraft/recraft-v3: model, prompt, n, aspect_ratio, input_references

Welke limieten gelden?

POST /v1/images/generations · recraft/recraft-v3: n.minimum: 1; n.maximum: 6

Meer details

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement
Kies een abonnement met korting voor je terugkerende verzoeken.
Promotiecode tot 50%
Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.
Kosten in de geschiedenis
Model, tokens en bedrag worden per verzoek bewaard.

Kies een abonnement · Bekijk modelprijzen

Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie
Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.
Resellerlicentie
Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.
Documenten op de site
Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

Vraag een resellerlicentie aan · Aanbodvoorwaarden en licentieovereenkomst