Recraft: Recraft V4
Recraft V4 generuje rastrové obrázky 1K so zameraním na kompozíciu, farebné vzťahy a podrobné tvorivé smerovanie. Pokrýva ilustráciu, fotorealistické scény a koncepty grafického dizajnu s voliteľnými štýlovými vstupmi a samostatným postupom image-to-image.
O modeli
Tento opis pokrýva možnosti modelu. Dostupné vstupy, výstupy a voľby v Ailoot sú uvedené nižšie pre vybranú metódu.
Recraft V4 je štandardný rastrový model generácie Recraft V4. Výrobca zdôrazňuje dizajnový úsudok: vyváženú kompozíciu, súdržné farebné vzťahy a detaily podporujúce vizuálny zámer. Môže pracovať so štylizovanou ilustráciou, fotografickými scénami a konceptmi grafického dizajnu. Použite ho, keď zadanie žiada obrázok spájajúci estetické voľby s presnosťou voči zadaniu, či už pri skúmaní nálady zo stručného smeru alebo pri podrobnom určovaní zámerného rozloženia.
Presný kód modelu je recraftv4. Referencia výrobcu uvádza rastrový výstup 1K v bezstratovom WebP alebo PNG. Štvorcový obrázok má 1024 × 1024 pixelov, 16:9 je 1344 × 768 a 2:3 je 832 × 1280; ďalšie podporované pomery používajú vlastné rozmery. V4 Pro je samostatná rastrová edícia 2K, kým V4 Vector a Pro Vector vracajú editovateľné SVG. Presný variant V4 vyberte podľa zamýšľaného výstupu namiesto kombinovania týchto odlišných výstupných vlastností.
Návod výrobcu rozlišuje stručné interpretačné zadania od štruktúrovaného tvorivého smerovania. Krátka fráza môže ponechať priestor na skúmanie formy, nálady a rámovania. Štruktúrované zadanie môže pomenovať subjekt, prostredie, pózu, materiál, druhotné prvky, osvetlenie a vizuálnu hierarchiu. Pri príbehovej ilustrácii opíšte cyklistu prechádzajúceho malým mostom, výrazné zjednodušené tvary, teplé tlmené farby a jasný pohyb zľava doprava. Tieto obsahové a kompozičné rozhodnutia sú vykonateľnejšie než dlhý zoznam nesúvisiacich štýlových prídavných mien.
Rozsah V4 zahŕňa ilustráciu, priestorové obrazy a fotorealistické vizuály. Návod odporúča opisovať logiku kresby pri ilustrácii a materiál, svetlo, kameru a hĺbku pri obrázku s 3D vzhľadom. Ten zostáva rastrovým vizuálom, nie editovateľnou sieťou geometrie. Pri plagáte alebo koncepte obalu určte hlavné slová, kam patria a ako obraz a typografia interagujú. Výrobca vyzdvihuje čitateľný krátky a stredne dlhý text; skutočné znenie a usporiadanie vo vrátenom obrázku pred použitím skontrolujte.
Generovanie podporuje zadania do 10 000 znakov, náhodný seed, jeden až šesť výstupov, preferované farby a požadovanú farbu pozadia. Voliteľné kompatibilné vlastné štýly a referenčné obrázky môžu usmerniť vizuálne spracovanie cez flexibilnú alebo presnú zhodu. Vyberte čistú referenciu alebo sadu patriacu do jedného vizuálneho sveta a nové subjekty a scénu nechajte opísať zadaniu. Farebná zhoda referencie s výstupom nie je zaručená, preto požadovanú paletu uveďte výslovne a porovnajte s ňou výsledok. Pri generovaní podľa referenčného štýlu použite jeden až desať obrázkov PNG, JPG alebo WebP, spolu najviac 64 MB a každý pod 20 MB. Každá referencia potrebuje kratšiu stranu aspoň 256 pixelov, dlhšiu najviac 4 096 pixelov a rozlíšenie najviac 16 megapixelov. Použite buď tieto referencie, alebo kompatibilný uložený štýl, nie obe možnosti.
Dokumentovaná operácia image-to-image spája existujúci obrázok a zadanie so silou od 0 do 1 určujúcou, ako ďaleko sa nový výstup odchýli od zdroja. V tejto operácii neprijíma štýlové ovládanie V4. Aktuálna referencia generovania vylučuje aj názvy kurátorovaných štýlov, negative_prompt, text_layout, artistic_level a no_text. Pripravte pozitívny opis požadovaného výsledku a vizuál vyhodnoťte v jeho cieľovej kompozícii. Štandardný V4 poskytuje sústredenú rastrovú interpretáciu dizajnu s konkrétnou edíciou, formátom a výstupnou veľkosťou. Pre image-to-image dodajte PNG, JPG, WebP alebo SVG pod 20 MB, najviac 16 megapixelov, s oboma stranami od 256 do 4 096 pixelov.
Ailoot Ultra · Obrázky POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Úvod
Recraft V4 generuje rastrové obrázky 1K so zameraním na kompozíciu, farebné vzťahy a podrobné tvorivé smerovanie. Pokrýva ilustráciu, fotorealistické scény a koncepty grafického dizajnu s voliteľnými štýlovými vstupmi a samostatným postupom image-to-image.
- Povolené vstupy
- Text · Obrázky
- Výsledky
- Obrázky
Dostupné v Ailoot · vstupy a metódy
Ailoot Ultra · Obrázky POST /v1/images/generations
- Vstup
text,image- Výstup
image- Výstupný formát
- Súbor obrázka
| Pole | Typ | Požiadavka | Hodnoty a limity | Predvolené |
|---|---|---|---|---|
Polemodel | Typstring | PožiadavkaPovinné | Hodnoty a limity recraft/recraft-v4 | Predvolené— |
Poleprompt | Typstring | PožiadavkaPovinné | Hodnoty a limity Minimálna dĺžka: 1 | Predvolené— |
Polen | Typinteger | PožiadavkaVoliteľné | Hodnoty a limity Minimum: 1 Maximum: 6 | Predvolené— |
Poleaspect_ratio | Typstring | PožiadavkaVoliteľné | Hodnoty a limity 1:1, 4:3, 3:4, 16:9, 9:16, auto | Predvolené— |
Poleinput_references | Typarray | PožiadavkaVoliteľné | Hodnoty a limity Minimálny počet položiek: 0 Maximálny počet položiek: 1 | Predvolené— |
Kombinácie vstupných podkladov
Z textu na obrázok · Povinné: prompt
reference_guided_image · Povinné: prompt, actual image reference
Parametre a životný cyklus metódy
| Parameter | Špecifikácia |
|---|---|
Parametercontent_type | Špecifikáciaapplication/json |
Parameterrequired | Špecifikáciamodel, prompt |
Parametermaterial_types | Špecifikáciatext, image |
Parameteroptional_controls | Špecifikácian, aspect_ratio, input_references |
Parametern | Špecifikácia{"minimum":1,"maximum":6} |
Parameterreference_images | Špecifikácia{"minimum":0,"maximum":1,"source":"skutočný materiál dodaný zákazníkom"} |
Parameterprovider_specific_options | ŠpecifikáciaIba presný uložený zoznam povolených hodnôt koncového bodu pre style/controls/text_layout; žiadne vymyslené štruktúry. |
Aliasy metódy: /v1/images
Životný cyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · skutočne vrátené task_id alebo záznam v knižnici médií
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Príklad obsahujúci iba zadanie zachováva oficiálnu štruktúru ImageGenerationRequest.
Zachovajte každý vrátený obrázok a úplnú odpoveď; počet výstupov zodpovedá výsledku, nie požadovanej hodnote n.
Cenník
Ako sa vypočíta konečný poplatok
Zobrazené sadzby slúžia na odhad nákladov pred generovaním. Konečný poplatok sa vypočíta z nákladov zaznamenaných pri pôvodnom generovaní. Namerané trvanie výstupu a predpokladané množstvá nepredstavujú konečné účtované množstvo.
Tarifné údaje nepridávajú možnosti požiadavky. Podporované parametre sú uvedené pri vybranej metóde.
- Rýchly režim
- Neuvedené Keď je zvolený rýchly režim
- Režim Flex
- Neuvedené Keď je zvolený režim flex
- Maximálna úroveň uvažovania
- Neuvedené Keď sa pri maximálnej úrovni uvažovania používa predvolená úprava (default)
Odhadované sadzby na porovnanie
Ceny podľa konfigurácie
Každý poplatok priraďte k zobrazeným podmienkam. Pre každú skupinu alternatívnych konfigurácií použite jednu sadzbu.
| Konfigurácia | Sadzobník | Odhadované množstvo | Účtovacia jednotka | Poplatok |
|---|---|---|---|---|
| KonfiguráciaZákladné sadzby za tokeny | SadzobníkZákladná sadzba | Odhadované množstvo— | Účtovacia jednotka— | Poplatok Vstup · Vstupné tokeny · Odhad iba na porovnanie — / 1K tokenov Výstup · Výstupné tokeny · Odhad iba na porovnanie — / 1K tokenov Vstup · Čítanie cache · Odhad iba na porovnanie — / 1K tokenov Vstup · Zápis do cache · Odhad iba na porovnanie — / 1K tokenov Vstup · Zápis do cache, 1 hod · Odhad iba na porovnanie — / 1K tokenov |
| KonfiguráciaUltra | Sadzobník— | Odhadované množstvo— | Účtovacia jednotkaza výstupný obrázok | Poplatok Výstup · výstupný obrázok · Odhad iba na porovnanie $0.08 za výstupný obrázok |
| KonfiguráciaOdhadované náklady na generovanie | Sadzobník— | Odhadované množstvoodhad pre jedno generovanie | Účtovacia jednotka— | Poplatok Výstup · Odhadované náklady na generovanie · Odhad iba na porovnanie $0.08 odhad pred generovaním Tento odhad nepredstavuje dodatočný poplatok ani pevnú sadzbu za dokončené generovanie. |
Ailoot pred požiadavkou rezervuje odhadovanú sumu. Po získaní výsledku vyúčtuje konečný poplatok podľa nameraného využitia. Pri streamovaní sa vyúčtovanie riadi konečným záznamom využitia. Ako funguje rezervácia a vyúčtovanie →
Podrobnosti referenčnej tarify
Referenčné sadzobníky modelu nemenia výber metódy, cenové odhady ani poplatky. Aktívne poplatky používajú sadzby vybranej metódy Ailoot.
Cenové konfigurácie obrázkov
Ceny podľa konfigurácie
| Konfigurácia | Podmienky účtovania | Poplatok |
|---|---|---|
| KonfiguráciaVýstupný obrázok | Podmienky účtovaniaNie je deklarovaný žiadny cenový variant. | Poplatok Výstup · Výstupný obrázok $0.08 za obrázok Ekvivalentné položky opisujú rovnaký poplatok; nepridávajú druhý poplatok. |
Príklady požiadaviek
Ailoot Ultra · Obrázky
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");
Prijať a uložiť výsledky
Ailoot Ultra · Obrázky
Stiahnite každý vrátený obrázok alebo uložte jeho obsah Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Uchovať všetky dokončené výsledky
Uložte každý dokončený obrázok; stiahnite obsah z každej vrátenej URL alebo dekódujte jeho obsah Base64.
Zachovajte každú dátovú položku a úplnú spotrebu; prevezmite do vlastníctva a uložte všetky skutočne vrátené obrázky. Žiadne vymyslené URL ani ID.
Ak treba overiť pôvodnú odpoveď
Ak je potrebné skontrolovať výsledok generovania alebo úpravy obrázka, uchovajte pôvodné operation_id/X-Client-Request-ID a vrátené informácie o výsledku. Existujúce vlastné výsledky obnovte cez knižnicu médií pomocou skutočných hodnôt task_id alebo asset_id. Požiadavku na generovanie/úpravu znova neodosielajte ani nevytvárajte URL na priebežné zisťovanie stavu z operation_id.
Polia odpovede
| Pole | Typ |
|---|---|
Polecreated | Typinteger |
Poledata[].url | Typstring |
Poledata[].b64_json | Typbase64 string |
Poleusage | Typobject |
Chyby a ďalšie kroky
| Odpoveď | Podmienka | Ďalší krok |
|---|---|---|
Odpoveď400 · invalid_request_error | PodmienkaNeplatné povinné polia, reprezentácia materiálu alebo hodnota parametra | Ďalší krokPred novou požiadavkou na vytvorenie opravte uvedené polia. |
Odpoveďserver_error | PodmienkaVrátená odpoveď uvádza, že operáciu alebo výsledok je potrebné skontrolovať | Ďalší krokUchovajte pôvodné vrátené ID operácie/úlohy, hlavičky požiadavky a odpoveď; naďalej čítajte údaje o tejto pôvodnej operácii podporovaným spôsobom. Požiadavku na vytvorenie znova neodosielajte. |
Aliasy
Aliasy modelov
Ailoot Ultra recraft/recraft-v4
Aliasy ciest metód
/v1/images
Súvisiace ID na volanie
FAQ · Recraft: Recraft V4
- Aké vstupy a výsledky sú dostupné?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Aké polia používa požiadavka?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Aké limity platia?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6