Recraft: Recraft V4
Recraft V4 erzeugt 1K-Rasterbilder mit Schwerpunkt auf Komposition, Farbbeziehungen und detaillierten kreativen Vorgaben. Es deckt Illustrationen, fotorealistische Szenen und Grafikdesignkonzepte ab, mit optionalen Stileingaben und einem separaten Bild-zu-Bild-Ablauf.
Über das Modell
Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.
Recraft V4 ist das Standard-Rastermodell der V4-Generation von Recraft. Der Hersteller betont gestalterisches Urteilsvermögen: ausgewogene Kompositionen, stimmige Farbbeziehungen und Details, die die visuelle Absicht unterstützen. Das Modell kann mit stilisierten Illustrationen, fotografischen Szenen und Grafikdesignkonzepten arbeiten. Verwenden Sie es, wenn das Briefing ein Bild verlangt, das ästhetische Entscheidungen mit genauer Promptumsetzung verbindet, sei es beim Erkunden einer Stimmung anhand einer knappen Vorgabe oder beim detaillierten Festlegen eines bewusst gestalteten Layouts.
Der genaue Modellcode lautet recraftv4. Die Herstellerreferenz führt 1K-Rasterausgaben als verlustfreies WebP oder PNG an. Ein quadratisches Bild hat 1024 × 1024 Pixel, 16:9 hat 1344 × 768 und 2:3 hat 832 × 1280 Pixel; weitere unterstützte Seitenverhältnisse verwenden eigene Abmessungen. V4 Pro ist die separate 2K-Rasterausgabe, während V4 Vector und Pro Vector bearbeitbares SVG liefern. Wählen Sie die genaue V4-Variante für das geplante Ergebnis, statt diese unterschiedlichen Ausgabeeigenschaften zu vermischen.
Der Herstellerleitfaden unterscheidet kurze, interpretative Prompts von strukturierten kreativen Vorgaben. Eine kurze Formulierung kann Raum lassen, Form, Stimmung und Bildausschnitt zu erkunden. Ein strukturiertes Briefing kann Motiv, Umgebung, Pose, Material, Nebenelemente, Beleuchtung und visuelle Hierarchie benennen. Beschreiben Sie für eine erzählerische Illustration etwa einen Radfahrer, der eine kleine Brücke überquert, kräftige vereinfachte Formen, warme gedämpfte Farben und eine klare Bewegung von links nach rechts. Diese inhaltlichen und kompositorischen Entscheidungen sind besser umsetzbar als eine lange Liste unzusammenhängender Stiladjektive.
V4s Spektrum umfasst Illustrationen, räumlich wirkende Bilder und fotorealistische Motive. Der Leitfaden empfiehlt, für Illustrationen die zeichnerische Logik und für ein Bild in 3D-Optik Material, Licht, Kamera und Tiefe zu beschreiben. Letzteres bleibt ein Rasterbild und ist kein bearbeitbares Mesh. Geben Sie für ein Plakat- oder Verpackungskonzept an, welche Wörter vorrangig sind, wohin sie gehören und wie Bild und Typografie zusammenspielen. Der Hersteller hebt lesbare kurze und mittellange Texte hervor; prüfen Sie den tatsächlichen Wortlaut und die Anordnung im zurückgegebenen Bild, bevor Sie es verwenden.
Die Generierung unterstützt Prompts mit bis zu 10.000 Zeichen, einen Zufalls-Seed, eine bis sechs Ausgaben, bevorzugte Farben und eine gewünschte Hintergrundfarbe. Optionale kompatible benutzerdefinierte Stile und Referenzbilder können die visuelle Gestaltung durch flexible oder präzise Anpassung lenken. Wählen Sie eine saubere Referenz oder ein Set aus derselben visuellen Welt und lassen Sie den Prompt das neue Motiv und die Szene beschreiben. Eine exakte Farbübereinstimmung zwischen Referenz und Ausgabe ist nicht garantiert; geben Sie die erforderliche Palette daher ausdrücklich an und vergleichen Sie das Ergebnis damit. Verwenden Sie für die Generierung im Referenzstil ein bis zehn PNG-, JPG- oder WebP-Bilder mit insgesamt höchstens 64 MB und weniger als 20 MB pro Datei. Jede Referenz benötigt eine kürzeste Seite von mindestens 256 Pixeln, eine längste Seite von höchstens 4.096 Pixeln und eine Auflösung von höchstens 16 Megapixeln. Verwenden Sie entweder diese Referenzen oder einen kompatiblen gespeicherten Stil, nicht beides zugleich.
Der dokumentierte Bild-zu-Bild-Vorgang kombiniert ein vorhandenes Bild und einen Prompt; strength von 0 bis 1 bestimmt, wie weit sich die neue Ausgabe von der Vorlage entfernt. Dieser Vorgang akzeptiert keine V4-Stilsteuerung. Die aktuelle Generierungsreferenz schließt außerdem kuratierte Stilnamen, negative_prompt, text_layout, artistic_level und no_text aus. Formulieren Sie eine positive Beschreibung des gewünschten Ergebnisses und beurteilen Sie das Asset innerhalb seiner Zielkomposition. Standard V4 bietet eine fokussierte gestalterische Rasterinterpretation mit einer bestimmten Ausgabe, einem bestimmten Format und einer bestimmten Ausgabegröße. Stellen Sie für Bild-zu-Bild PNG, JPG, WebP oder SVG unter 20 MB mit höchstens 16 Megapixeln und beiden Seiten zwischen 256 und 4.096 Pixeln bereit.
Ailoot Ultra · Bilder POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Einstieg
Recraft V4 erzeugt 1K-Rasterbilder mit Schwerpunkt auf Komposition, Farbbeziehungen und detaillierten kreativen Vorgaben. Es deckt Illustrationen, fotorealistische Szenen und Grafikdesignkonzepte ab, mit optionalen Stileingaben und einem separaten Bild-zu-Bild-Ablauf.
- Zulässige Eingaben
- Text · Bilder
- Ergebnisse
- Bilder
In Ailoot verfügbar · Eingaben und Methoden
Ailoot Ultra · Bilder POST /v1/images/generations
- Eingabe
text,image- Ausgabe
image- Ausgabeformat
- Bilddatei
| Feld | Typ | Anforderung | Werte und Limits | Standard |
|---|---|---|---|---|
Feldmodel | Typstring | AnforderungErforderlich | Werte und Limits recraft/recraft-v4 | Standard— |
Feldprompt | Typstring | AnforderungErforderlich | Werte und Limits Mindestlänge: 1 | Standard— |
Feldn | Typinteger | AnforderungOptional | Werte und Limits Minimum: 1 Maximum: 6 | Standard— |
Feldaspect_ratio | Typstring | AnforderungOptional | Werte und Limits 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standard— |
Feldinput_references | Typarray | AnforderungOptional | Werte und Limits Mindestanzahl Elemente: 0 Maximale Anzahl Elemente: 1 | Standard— |
Kombinationen von Eingabematerialien
Text zu Bild · Erforderlich: prompt
reference_guided_image · Erforderlich: prompt, actual image reference
Methodenparameter und Lebenszyklus
| Parameter | Vertrag |
|---|---|
Parametercontent_type | Vertragapplication/json |
Parameterrequired | Vertragmodel, prompt |
Parametermaterial_types | Vertragtext, image |
Parameteroptional_controls | Vertragn, aspect_ratio, input_references |
Parametern | Vertrag{"minimum":1,"maximum":6} |
Parameterreference_images | Vertrag{"minimum":0,"maximum":1,"source":"tatsächliches, vom Kunden bereitgestelltes Material"} |
Parameterprovider_specific_options | VertragAusschließlich die gespeicherte exakte Endpunkt-Freigabeliste für style/controls/text_layout; keine geratenen Strukturen. |
Methodenaliasnamen: /v1/images
Lebenszyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · die tatsächlich zurückgegebene task_id oder ein Eintrag in der Medienbibliothek
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Das Beispiel mit ausschließlich einem Prompt behält die offizielle ImageGenerationRequest-Struktur bei.
Bewahren Sie jedes gelieferte Bild und die volle Antwort auf; die tatsächliche Ausgabezahl gilt, nicht der angeforderte Wert n.
Tarife
So wird die endgültige Gebühr berechnet
Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.
Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.
- Schnellmodus
- Nicht angegeben Wenn der Schnellmodus ausgewählt ist
- Flex-Modus
- Nicht angegeben Wenn der Modus flex ausgewählt ist
- Maximaler Denkaufwand
- Nicht angegeben Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird
Geschätzte Tarife zum Vergleich
Preise nach Konfiguration
Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.
| Konfiguration | Tarifstaffel | Prognostizierte Menge | Abrechnungseinheit | Gebühr |
|---|---|---|---|---|
| KonfigurationBasistarife für Tokens | TarifstaffelGrundtarif | Prognostizierte Menge— | Abrechnungseinheit— | Gebühr Eingabe · Eingabetoken · Schätzung nur zum Vergleich — / 1K Tokens Ausgabe · Ausgabetoken · Schätzung nur zum Vergleich — / 1K Tokens Eingabe · Cache lesen · Schätzung nur zum Vergleich — / 1K Tokens Eingabe · In Cache schreiben · Schätzung nur zum Vergleich — / 1K Tokens Eingabe · In Cache schreiben, 1 Stunde · Schätzung nur zum Vergleich — / 1K Tokens |
| KonfigurationUltra | Tarifstaffel— | Prognostizierte Menge— | Abrechnungseinheitpro Ausgabebild | Gebühr Ausgabe · Ausgabebild · Schätzung nur zum Vergleich $0.08 pro Ausgabebild |
| KonfigurationGeschätzte Generierungskosten | Tarifstaffel— | Prognostizierte MengeSchätzung für eine Generierung | Abrechnungseinheit— | Gebühr Ausgabe · Geschätzte Generierungskosten · Schätzung nur zum Vergleich $0.08 Schätzung vor der Generierung Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung. |
Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschließenden Verbrauchsdatensatzes. So funktionieren Reservierung und Abrechnung →
Details zum Referenztarif
Referenztarifstaffeln auf Modellebene ändern weder Methodenauswahl noch Kostenvoranschläge oder Gebühren. Für die aktive Abrechnung gelten die Tarife der ausgewählten Ailoot-Methode.
Preiskonfigurationen für Bilder
Preise nach Konfiguration
| Konfiguration | Abrechnungsbedingungen | Gebühr |
|---|---|---|
| KonfigurationAusgabebild | AbrechnungsbedingungenEs ist keine Preisvariante deklariert. | Gebühr Ausgabe · Ausgabebild $0.08 pro Bild Gleichwertige Einträge beschreiben denselben Betrag; sie verursachen keine zweite Gebühr. |
Beispielanfragen
Ailoot Ultra · Bilder
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");
Ergebnisse abrufen und speichern
Ailoot Ultra · Bilder
Laden Sie jedes zurückgegebene Bild herunter oder speichern Sie seinen Base64-Inhalt
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Alle fertiggestellten Ergebnisse aufbewahren
Speichern Sie jedes fertiggestellte Bild; rufen Sie jede zurückgegebene URL ab oder dekodieren Sie seinen Base64-Inhalt.
Bewahren Sie jedes Datenelement und die vollständigen Verbrauchsdaten auf; übernehmen und speichern Sie sämtliche tatsächlich zurückgegebenen Bilder als Ihnen zugeordnete Assets. Keine erfundenen URLs oder IDs.
Wenn die ursprüngliche Antwort geprüft werden muss
Wenn das Ergebnis einer Bildgenerierung oder -bearbeitung geprüft werden muss, die ursprüngliche operation_id/X-Client-Request-ID und die zurückgegebenen Ergebnisinformationen aufbewahren. Bereits vorhandene eigene Ergebnisse über die Medienbibliothek anhand tatsächlicher task_id- oder asset_id-Werte wiederherstellen. Die Generierungs-/Bearbeitungsanfrage nicht erneut senden und keine Abfrage-URL aus operation_id bilden.
Antwortfelder
| Feld | Typ |
|---|---|
Feldcreated | Typinteger |
Felddata[].url | Typstring |
Felddata[].b64_json | Typbase64 string |
Feldusage | Typobject |
Fehler und nächste Schritte
| Antwort | Bedingung | Nächster Schritt |
|---|---|---|
Antwort400 · invalid_request_error | BedingungPflichtfelder, Darstellung des Eingabematerials oder Parameterwert ungültig | Nächster SchrittDie angegebenen Felder vor einer neuen Erstellungsanfrage korrigieren. |
Antwortserver_error | BedingungDie zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert | Nächster SchrittDie ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden. |
Aliasnamen
Modellaliasnamen
Ailoot Ultra recraft/recraft-v4
Aliasnamen für Methodenpfade
/v1/images
Zugehörige Aufrufer-IDs
FAQ · Recraft: Recraft V4
- Welche Eingaben und Ergebnisse sind verfügbar?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Welche Felder verwendet die Anfrage?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Welche Grenzen gelten?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6