modellen

Recraft: Recraft V4

Markdown · JSON

Recraft: Recraft V4

Recraft V4 genereert 1K-rasterafbeeldingen met nadruk op compositie, kleurrelaties en gedetailleerde creatieve richting. Het omvat illustratie, fotorealistische scènes en grafische ontwerpconcepten, met optionele stijlinvoer en een afzonderlijke afbeelding-naar-afbeeldingprocedure.

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 V4 is het standaardrastermodel binnen Recrafts V4-generatie. De fabrikant benadrukt ontwerpoordeel: evenwichtige compositie, samenhangende kleurrelaties en details die het visuele doel ondersteunen. Het kan werken met gestileerde illustratie, fotografische scènes en grafische ontwerpconcepten. Gebruik het wanneer de briefing vraagt om een beeld dat esthetische keuzes met promptnauwkeurigheid combineert, zowel voor sfeerverkenning vanuit een korte aanwijzing als voor het gedetailleerd specificeren van een bewuste lay-out.

De specifieke modelcode is recraftv4. De producentreferentie vermeldt 1K-rasteruitvoer in verliesloos WebP of PNG. Een vierkante afbeelding is 1024 × 1024 pixels, 16:9 is 1344 × 768 en 2:3 is 832 × 1280; andere ondersteunde verhoudingen gebruiken eigen afmetingen. V4 Pro is de afzonderlijke 2K-rastereditie, terwijl V4 Vector en Pro Vector bewerkbare SVG retourneren. Kies de exacte V4-variant voor het gewenste resultaat in plaats van die verschillende uitvoereigenschappen te combineren.

De fabrikantgids onderscheidt korte interpretatieve prompts van gestructureerde creatieve richting. Een korte zin kan ruimte laten om vorm, sfeer en kadrering te verkennen. Een gestructureerde briefing kan onderwerp, omgeving, houding, materiaal, secundaire elementen, belichting en visuele hiërarchie benoemen. Beschrijf voor een verhalende illustratie een fietser die een kleine brug oversteekt, uitgesproken vereenvoudigde vormen, warme ingetogen kleuren en een duidelijke beweging van links naar rechts. Die inhouds- en compositiebeslissingen zijn uitvoerbaarder dan een lange lijst ongerelateerde bijvoeglijke naamwoorden over stijl.

Het bereik van V4 omvat illustratie, ruimtelijke beelden en fotorealistische visuals. De gids beveelt aan voor illustratie de tekenlogica te beschrijven en voor een 3D-ogend beeld materiaal, licht, camera en diepte. Dat laatste blijft een rasterbeeld en geen bewerkbare mesh. Geef voor een poster- of verpakkingsconcept aan welke woorden primair zijn, waar ze horen en hoe beeld en typografie op elkaar inwerken. De fabrikant benadrukt leesbare korte en middellange tekst; controleer de daadwerkelijke tekst en indeling in de geretourneerde afbeelding voordat je deze gebruikt.

Generatie ondersteunt prompts tot 10000 tekens, een willekeurige seed, één tot zes uitvoerafbeeldingen, voorkeurskleuren en een gewenste achtergrondkleur. Optionele compatibele aangepaste stijlen en referentieafbeeldingen kunnen de visuele behandeling sturen via flexible of precise matching. Kies een duidelijke referentie of een set uit één visuele wereld en laat de prompt daarna het nieuwe onderwerp en de scène beschrijven. Kleurovereenkomst tussen referentie en uitvoer is niet gegarandeerd; houd het vereiste palet daarom expliciet en vergelijk het resultaat ermee. Gebruik voor generatie met een referentiestijl één tot tien PNG-, JPG- of WebP-afbeeldingen, samen maximaal 64 MB en elk kleiner dan 20 MB. Elke referentie vereist een kortste zijde van minimaal 256 pixels, een langste zijde van maximaal 4096 pixels en een resolutie van maximaal 16 megapixels. Gebruik deze referenties óf een compatibele opgeslagen stijl, niet beide.

De gedocumenteerde afbeelding-naar-afbeeldingoperatie combineert een bestaande afbeelding en prompt, waarbij sterkte van 0 tot 1 bepaalt hoe ver de nieuwe uitvoer van de bron afwijkt. Deze accepteert in die operatie geen V4-stijlinstellingen. De huidige generatiereferentie sluit ook voorgeselecteerde stijlnamen, negative_prompt, text_layout, artistic_level en no_text uit. Bereid een positieve beschrijving van het gewenste resultaat voor en beoordeel het beeld binnen de doelcompositie. Standaard V4 biedt een gerichte rasterinterpretatie van het ontwerp, met een specifieke editie, formaat en uitvoergrootte. Lever voor afbeelding naar afbeelding PNG, JPG, WebP of SVG kleiner dan 20 MB aan, maximaal 16 megapixels, met beide zijden tussen 256 en 4096 pixels.

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

recraft/recraft-v4

Recraft /recraft/recraft-v4

Aan de slag

Recraft V4 genereert 1K-rasterafbeeldingen met nadruk op compositie, kleurrelaties en gedetailleerde creatieve richting. Het omvat illustratie, fotorealistische scènes en grafische ontwerpconcepten, met optionele stijlinvoer en een afzonderlijke afbeelding-naar-afbeeldingprocedure.

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
VeldTypeVereisteWaarden en limietenStandaard
VeldmodelTypestringVereisteVereistWaarden en limieten
recraft/recraft-v4
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

reference_guided_image · Vereist: prompt, actual image reference

Methodeparameters en levenscyclus
ParameterContract
Parametercontent_typeContractapplication/json
ParameterrequiredContractmodel, prompt
Parametermaterial_typesContracttext, image
Parameteroptional_controlsContractn, aspect_ratio, input_references
ParameternContract{"minimum":1,"maximum":6}
Parameterreference_imagesContract{"minimum":0,"maximum":1,"source":"daadwerkelijk door de klant aangeleverd materiaal"}
Parameterprovider_specific_optionsContractUitsluitend de opgeslagen exacte endpoint-toelatingslijst style/controls/text_layout; geen gegokte structuren.

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}

Het voorbeeld met uitsluitend een prompt behoudt de officiële ImageGenerationRequest-structuur.

Bewaar elke geretourneerde afbeelding en het volledige antwoord; de uitvoerhoeveelheid is de daadwerkelijke hoeveelheid, niet de gevraagde n.

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.

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 · uitvoerafbeelding · 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 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

ConfiguratieFactureringsvoorwaardenKosten
ConfiguratieUitvoerafbeeldingFactureringsvoorwaardenEr 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

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', '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', '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", "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 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
VeldType
VeldcreatedTypeinteger
Velddata[].urlTypestring
Velddata[].b64_jsonTypebase64 string
VeldusageTypeobject
Fouten en vervolgstappen
AntwoordVoorwaardeVolgende stap
Antwoord400 · invalid_request_errorVoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldigVolgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag.
Antwoordserver_errorVoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerdVolgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in.

Aliasnamen

Modelaliasnamen

Ailoot Ultra recraft/recraft-v4

Aliasnamen voor methodepaden

/v1/images

Gerelateerde aanroeper-ID’s

recraft/recraft-v4

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

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

Welke velden gebruikt het verzoek?

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

Welke limieten gelden?

POST /v1/images/generations · recraft/recraft-v4: 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