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 afbeeldingsgeneratiemodel voor grafisch ontwerp én fotografische en geïllustreerde scènes. Een geschreven briefing beschrijft onderwerp, omgeving en compositie; het resultaat is een afbeelding. V3 ontwikkelt Recrafts tekstweergave en fotorealisme verder en behoudt stijlconsistentie vanuit voorbeeldafbeeldingen zonder opnieuw te trainen.
Tekst als onderdeel van de compositie
V3 werkt met tekst in de afbeelding, waaronder langere tekst en middelgrote letters. Recraft beschrijft een lay-outfase die woorden en hun posities vóór de afbeeldingsgeneratie vastlegt. De lay-out kan automatisch vanuit de briefing worden gemaakt of handmatig in Recrafts ontwerpomgeving worden ingedeeld. Dit helpt een kop, illustratie en ondersteunende tekst in één compositie te verbinden. De fabrikant documenteert ook expliciete tekstlay-outcoördinaten, uitgedrukt ten opzichte van de afbeelding en niet als een 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, waarbij de vorm wordt afgesneden. Woorden in expliciete tekstlay-outs moeten de gedocumenteerde tekenbeperkingen volgen.
Lever voor een poster of cover de exacte tekst aan en beschrijf de hiërarchie: welke regel leidt, waar die staat en hoe het beeld die ondersteunt. Controleer weergegeven spelling en spatiëring bij de keuze van een resultaat.
Stijl, palet en artistieke richting
V3 bevat voorgeselecteerde stijlen voor fotografie, illustratie en emblemen, plus een afzonderlijke vectorstijlbibliotheek. Recraft V3 Raw is de standaardstijl van het rastermodel; Vector art is de standaard voor de vectorvariant. Photorealism beoogt een fotografisch uiterlijk, terwijl Illustration gestileerde texturen, schaduwwerking en complexere kleurovergangen omvat. Vectorstijlen geven de voorkeur aan vormen, beperkte paletten en vlakke vullingen of eenvoudige verlopen.
Aangepaste stijlen kunnen vanuit referentieafbeeldingen, bestaande compatibele stijlen of een combinatie worden opgebouwd. Ze geven een herbruikbare visuele richting over een afbeeldingsreeks heen. De gedocumenteerde menginstellingen laten referenties en bronstijlen afzonderlijke gewichten dragen; het aantal gewichten komt overeen met de bronnen. PaletteMatch en MaxWeight zijn de twee vermelde mengbeleidsopties. De fabrikant staat maximaal 10 stijlreferentieafbeeldingen toe en gebruikt de gewone style-match-modus voor V3. Een opgeslagen aangepaste stijl en directe stijlreferenties zijn alternatieve invoeren en een aangepaste stijl moet passen bij het model dat voor generatie wordt gebruikt.
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 hoger zijn dan 1. Artistic level loopt van 0 voor een statische, rustige behandeling tot 5 voor dynamischere, excentriekere composities. Een negatieve prompt beschrijft ongewenste elementen; een afzonderlijke instelling zonder tekst schakelt ingebedde tekstlay-outs uit. Een willekeurige seed is beschikbaar voor reproduceerbaarheid. Deze instellingen bieden verschillende aangrijpingspunten voor de scène, de stijl en de visuele lay-out.
Rasterafbeeldingen en een afzonderlijke SVG-variant
Recraft documenteert twee V3-varianten. Het rastermodel produceert verliesloos WebP of PNG en is geschikt voor fotografisch detail, schaduwwerking en illustraties met textuur. Recraft V3 Vector produceert SVG: paden en vormen die zonder vaste pixelresolutie kunnen schalen. Het past bij pictogrammen, logoconcepten, badges en gedetailleerd vectorwerk. Raster-naar-vectorconversie is een afzonderlijke operatie ten opzichte van het rechtstreeks genereren van vectorbeelden.
Beide varianten hebben hun eigen identiteit. Een afbeelding met een vectorachtig uiterlijk en daadwerkelijke SVG-uitvoer zijn verschillende keuzes. Kies de gewenste uitvoer bij het voorbereiden van een ontwerpprocedure, in plaats van de gedeelde V3-naam te behandelen als bewijs dat elke operatie hetzelfde bestandstype retourneert.
Bestaand beeldmateriaal bewerken en afwerken
Recrafts V3-documentatie vermeldt afbeelding-naar-afbeeldinggeneratie, inpainting, outpainting en achtergrondvervanging of -generatie. Afbeelding-naar-afbeeldingwerk combineert een bestaande afbeelding met een nieuwe briefing. Inpainting genereert het gekozen gebied opnieuw met een afbeelding en bijpassend masker; outpainting voegt inhoud buiten het oorspronkelijke kader toe. Achtergrondoperaties behandelen de omgeving van een onderwerp.
De bijbehorende gereedschapsset omvat ook wissen, achtergrondverwijdering, vectorisatie en twee vergrotingsmethoden. Creatieve vergroting kan nieuwe details toevoegen; scherpe vergroting beoogt een scherpere grotere weergave van bestaande inhoud. Dit zijn afzonderlijke operaties met eigen invoer en resultaten en geen aanvullende betekenissen van de raster- of vectormodelnaam.
Prompt-, formaat- en bronafbeeldingslimieten
De V3-generatiespecificatie van de fabrikant accepteert een prompt tot 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 omvatten 1024x1024, 1820x1024 en 1024x1820. Exacte rasterafmetingen moeten uit de ondersteunde lijst komen; SVG gebruikt beeldverhoudingen zonder vaste pixelafmeting. Als formaat wordt weggelaten, kiest het systeem van de fabrikant dit op basis van de prompt.
Voor operaties met afbeeldingsinvoer vermeldt de fabrikant PNG, JPG en WebP, met SVG waar de specifieke operatie dat toestaat. Bestanden moeten kleiner zijn dan 20 MB, maximaal 16 MP, met een langste zijde van maximaal 4096 pixels. De kortste zijde is minimaal 256 pixels, met een uitzondering van 32 pixels voor scherpe vergroting. Maskers komen overeen met het afbeeldingsformaat en gebruiken puur zwart en wit; stijlreferenties hebben een gezamenlijke limiet van 64 MB.
Zet voor een Ailoot API-project de taak om in een gerichte afbeeldingsbriefing: exacte tekst, objectindeling, visuele stijl en gewenste compositie. Een poster, productscène en iconenreeks vragen om verschillende briefings; behoud de relevante verschillen tussen V3-varianten en operaties wanneer je bepaalt hoe elk resultaat wordt gebruikt.
Ailoot Ultra · Afbeeldingen POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Aan 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
- Invoertypen
text,image- Uitvoertypen
image- Uitvoerformaat
- Afbeeldingsbestand
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten recraft/recraft-v3 | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldn | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 6 | Standaard— |
Veldaspect_ratio | Typestring | VereisteOptioneel | Waarden en limieten 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standaard— |
Veldinput_references | Typearray | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 1 | Standaard— |
Combinaties van invoermaterialen
Tekst naar afbeelding · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, prompt |
Parametermaterial_types | Contracttext, image |
Parameteroptional_controls | Contractaspect_ratio, n, input_references |
Parameterexact_supported_parameters | Contract{"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_rule | ContractUitsluitend daadwerkelijke afbeeldingsreferenties van de klant; de voorwaarden van het providerendpoint zijn hierop van toepassing. |
Methodealiasnamen: /v1/images
Levenscyclus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · de daadwerkelijk geretourneerde task_id of het 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 daadwerkelijke uitvoer en de oorspronkelijk geretourneerde IDs.
Tarieven
Zo worden de uiteindelijke kosten berekend
De weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn 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 is geselecteerd
- Flexmodus
- Niet opgegeven Wanneer de modus flex is geselecteerd
- Maximale redeneerinspanning
- Niet opgegeven Wanneer bij 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.
| Configuratie | Tariefstaffel | Verwachte hoeveelheid | Rekeneenheid | Kosten |
|---|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Verwachte 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 |
| ConfiguratieUltra | Tariefstaffel— | Verwachte hoeveelheid— | Rekeneenheidper uitvoerafbeelding | Kosten Uitvoer · afbeeldingsuitvoer · Schatting uitsluitend ter vergelijking $0.08 per uitvoerafbeelding |
| ConfiguratieGeschatte generatiekosten | Tariefstaffel— | Verwachte hoeveelheidschatting voor één generatie | Rekeneenheid— | Kosten Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking $0.08 schatting vóór generatie Deze schatting is geen extra bedrag 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
| Configuratie | Factureringsvoorwaarden | Kosten |
|---|---|---|
| ConfiguratieUitvoerafbeelding | FactureringsvoorwaardenEr is geen prijsvariant gedeclareerd. | Kosten Uitvoer · Uitvoerafbeelding $0.08 per afbeelding Gelijkwaardige vermeldingen beschrijven dezelfde kosten; ze voegen geen tweede vergoeding toe. |
Voorbeeldverzoeken
Ailoot Ultra · Afbeeldingen
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}/contentGET /v1/media/assetsGET /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 data-item en het volledige gebruik; neem alle daadwerkelijk geretourneerde afbeeldingen in eigendom en sla ze op. Geen verzonnen URLs of IDs.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Als het resultaat van een afbeeldingsgeneratie of -bewerking moet worden gecontroleerd, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task_id- of asset_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation_id.
Antwoordvelden
| Veld | Type |
|---|---|
Veldcreated | Typeinteger |
Velddata[].url | Typestring |
Velddata[].b64_json | Typebase64 string |
Veldusage | Typeobject |
Aliasnamen
Modelaliasnamen
Ailoot Ultra recraft/recraft-v3
Aliasnamen voor methodepaden
/v1/images
Gerelateerde aanroeper-ID’s
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