Recraft: Recraft V4
Recraft V4 genereert 1K-rasterafbeeldingen met focus op compositie, kleurrelaties en gedetailleerde creatieve richting. Het omvat illustratie, fotorealistische scènes en grafische ontwerpconcepten, met optionele stijlinvoer en een afzonderlijke afbeelding-naar-afbeeldingworkflow.
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 in de V4-generatie van Recraft. De fabrikant benadrukt ontwerpbeoordeling: evenwichtige compositie, samenhangende kleurrelaties en details die de visuele bedoeling ondersteunen. Het kan werken met gestileerde illustratie, fotografische scènes en grafische ontwerpconcepten. Gebruik het wanneer de briefing een beeld vraagt dat esthetische keuzes combineert met promptnauwkeurigheid, of je nu vanuit een korte aanwijzing een sfeer verkent of een bewuste lay-out in detail vastlegt.
De specifieke modelcode is recraftv4. De producentendocumentatie vermeldt 1K-rasteruitvoer in verliesvrije 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 teruggeven. Kies de exacte V4-variant voor de bedoelde levering in plaats van die verschillende uitvoereigenschappen te combineren.
De fabrikantengids 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, krachtige vereenvoudigde vormen, warme ingetogen kleuren en een duidelijke beweging van links naar rechts. Die inhouds- en compositiekeuzes zijn bruikbaarder dan een lange lijst losse stijlbijvoeglijke naamwoorden.
Het bereik van V4 omvat illustratie, ruimtelijke beelden en fotorealistische visuals. De gids beveelt aan tekenlogica te beschrijven voor illustratie en materiaal, licht, camera en diepte voor een 3D-ogend beeld. Dat laatste blijft een rasterbeeld, geen bewerkbare mesh. Geef voor een poster- of verpakkingsconcept aan welke woorden primair zijn, waar ze horen en hoe beeld en typografie samenwerken. De fabrikant benadrukt leesbare korte en middellange tekst; controleer de daadwerkelijke woorden en opstelling in het teruggestuurde beeld voordat je het gebruikt.
Generatie ondersteunt prompts tot 10.000 tekens, een willekeurige seed, één tot zes afbeeldingen, voorkeurskleuren en een gewenste achtergrondkleur. Optionele compatibele aangepaste stijlen en referentiebeelden kunnen de visuele uitwerking via flexibele of precieze matching sturen. Kies een duidelijke referentie of een set uit één visuele wereld en laat de prompt daarna het nieuwe onderwerp en de scène beschrijven. Kleurmatching tussen referentie en uitvoer is niet gegarandeerd, dus hou het vereiste palet expliciet en vergelijk het resultaat ermee. Gebruik voor generatie met stijlreferenties één tot tien PNG-, JPG- of WebP-afbeeldingen, samen maximaal 64 MB en elk kleiner dan 20 MB. Elke referentie moet een korte zijde van minstens 256 pixels, een lange zijde van maximaal 4.096 pixels en een resolutie van maximaal 16 megapixels hebben. Gebruik die referenties of een compatibele opgeslagen stijl, niet beide.
De gedocumenteerde afbeelding-naar-afbeeldingbewerking combineert een bestaand beeld en een prompt, met sterkte van 0 tot 1 die bepaalt hoe ver de nieuwe uitvoer van de bron afwijkt. Die bewerking accepteert geen V4-stijlinstellingen. De huidige generatiedocumentatie sluit ook namen van gecureerde stijlen, 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 aan, kleiner dan 20 MB, maximaal 16 megapixels, met beide zijden tussen 256 en 4.096 pixels.
Ailoot Ultra · Afbeeldingen POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Aan de slag
Recraft V4 genereert 1K-rasterafbeeldingen met focus op compositie, kleurrelaties en gedetailleerde creatieve richting. Het omvat illustratie, fotorealistische scènes en grafische ontwerpconcepten, met optionele stijlinvoer en een afzonderlijke afbeelding-naar-afbeeldingworkflow.
- 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
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten recraft/recraft-v4 | 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
reference_guided_image · Vereist: prompt, actual image reference
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, prompt |
Parametermaterial_types | Contracttext, image |
Parameteroptional_controls | Contractn, aspect_ratio, input_references |
Parametern | Contract{"minimum":1,"maximum":6} |
Parameterreference_images | Contract{"minimum":0,"maximum":1,"source":"werkelijk door de klant aangeleverd materiaal"} |
Parameterprovider_specific_options | ContractUitsluitend style/controls/text_layout uit de opgeslagen exacte lijst met toegelaten opties van het eindpunt; geen gegiste structuren. |
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}
Het voorbeeld met uitsluitend een prompt behoudt de officiële structuur van ImageGenerationRequest.
Bewaar elke teruggestuurde afbeelding en het volledige antwoord; de uitvoerhoeveelheid is de werkelijke hoeveelheid en niet de gevraagde n.
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.
| 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 · uitvoerafbeelding · 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 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
| Configuratie | Factureringsvoorwaarden | Kosten |
|---|---|---|
| ConfiguratieUitvoerafbeelding | FactureringsvoorwaardenEr 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
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}/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 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
| Veld | Type |
|---|---|
Veldcreated | Typeinteger |
Velddata[].url | Typestring |
Velddata[].b64_json | Typebase64 string |
Veldusage | Typeobject |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoordserver_error | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot Ultra recraft/recraft-v4
Aliasnamen voor methodepaden
/v1/images
Gerelateerde aanroeper-ID’s
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