Recraft: Recraft V4
Recraft V4 ustvarja rastrske slike 1K s poudarkom na kompoziciji, barvnih razmerjih in podrobni ustvarjalni usmeritvi. Pokriva ilustracijo, fotorealistične prizore in koncepte grafičnega oblikovanja, z izbirnimi slogovnimi vhodi ter ločenim postopkom pretvorbe slike v sliko.
O modelu
Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.
Recraft V4 je standardni rastrski model v Recraftovi generaciji V4. Proizvajalec poudarja oblikovalsko presojo: uravnoteženo kompozicijo, skladna barvna razmerja in podrobnosti, ki podpirajo vizualni namen. Uporablja se lahko za stilizirano ilustracijo, fotografske prizore in koncepte grafičnega oblikovanja. Izberite ga, kadar opis zahteva sliko, ki združuje estetske odločitve z natančnim upoštevanjem poziva, bodisi pri raziskovanju vzdušja iz kratke usmeritve bodisi pri podrobni opredelitvi premišljene postavitve.
Natančna oznaka modela je recraftv4. Proizvajalčeva dokumentacija navaja rastrski izhod 1K v formatu WebP brez izgub ali PNG. Kvadratna slika meri 1024 × 1024 slikovnih pik, 16:9 meri 1344 × 768, 2:3 pa 832 × 1280; druga podprta razmerja uporabljajo svoje dimenzije. V4 Pro je ločena rastrska izdaja 2K, V4 Vector in Pro Vector pa vračata SVG, ki ga je mogoče urejati. Za predvideni končni izdelek izberite natančno različico V4, namesto da združujete te različne izhodne lastnosti.
Proizvajalčev vodnik razlikuje med kratkimi pozivi, ki dopuščajo interpretacijo, in strukturirano ustvarjalno usmeritvijo. Kratka fraza lahko pusti prostor za raziskovanje oblike, vzdušja in kadriranja. Strukturiran opis lahko določi motiv, okolje, pozo, material, sekundarne elemente, osvetlitev in vizualno hierarhijo. Za pripovedno ilustracijo opišite kolesarja, ki prečka majhen most, izrazite poenostavljene oblike, tople umirjene barve in jasno gibanje od leve proti desni. Te odločitve o vsebini in kompoziciji so uporabnejše od dolgega seznama nepovezanih slogovnih pridevnikov.
Razpon modela V4 vključuje ilustracijo, prostorske podobe in fotorealistične vizualizacije. Vodnik pri ilustraciji priporoča opis risarske logike, pri sliki z videzom 3D pa materialov, svetlobe, kamere in globine. Slednja ostaja rastrska podoba, ne mreža, ki bi jo bilo mogoče urejati. Za koncept plakata ali embalaže navedite, katere besede so glavne, kam sodijo in kako sodelujeta slika in tipografija. Proizvajalec izpostavlja berljivo kratko in srednje dolgo besedilo; pred uporabo v vrnjeni sliki preverite dejansko besedilo in razporeditev.
Ustvarjanje podpira pozive do 10.000 znakov, naključno seme, od enega do šest izhodov, želene barve in želeno barvo ozadja. Izbirni združljivi slogi po meri in referenčne slike lahko vizualno obdelavo usmerjajo s prilagodljivim ali natančnim ujemanjem. Izberite jasno referenco ali zbirko, ki pripada enemu vizualnemu svetu, nato pa s pozivom opišite novi motiv in prizor. Barvno ujemanje med referenco in izhodom ni zagotovljeno, zato zahtevano paleto jasno navedite in rezultat primerjajte z njo. Za ustvarjanje po referenčnem slogu uporabite od ene do deset slik PNG, JPG ali WebP, skupaj največ 64 MB in vsako manjšo od 20 MB. Najkrajša stranica vsake reference mora meriti vsaj 256 slikovnih pik, najdaljša največ 4.096 slikovnih pik, ločljivost pa največ 16 milijonov slikovnih pik. Uporabite bodisi te reference bodisi združljiv shranjeni slog, ne obojega.
Dokumentirani postopek pretvorbe slike v sliko združuje obstoječo sliko in poziv, pri čemer moč od 0 do 1 določa, kako daleč se novi izhod odmakne od izvirnika. V tem postopku ne sprejema nastavitev slogov za V4. Trenutna dokumentacija za ustvarjanje izključuje tudi imena predpripravljenih slogov, negative_prompt, text_layout, artistic_level in no_text. Pripravite pozitiven opis želenega rezultata ter gradivo ocenite v njegovi ciljni kompoziciji. Standardni V4 zagotavlja namensko rastrsko oblikovalsko interpretacijo z določeno izdajo, formatom in izhodno velikostjo. Za pretvorbo slike v sliko pošljite PNG, JPG, WebP ali SVG, manjši od 20 MB, z največ 16 milijoni slikovnih pik in obema stranicama med 256 in 4.096 slikovnimi pikami.
Ailoot Ultra · Slike POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Začetek
Recraft V4 ustvarja rastrske slike 1K s poudarkom na kompoziciji, barvnih razmerjih in podrobni ustvarjalni usmeritvi. Pokriva ilustracijo, fotorealistične prizore in koncepte grafičnega oblikovanja, z izbirnimi slogovnimi vhodi ter ločenim postopkom pretvorbe slike v sliko.
- Dovoljeni vhodi
- Besedilo · Slike
- Rezultati
- Slike
Na voljo v Ailoot · vhodi in metode
Ailoot Ultra · Slike POST /v1/images/generations
- Vhod
text,image- Izhod
image- Izhodni format
- Slikovna datoteka
| Polje | Vrsta | Zahteva | Vrednosti in omejitve | Privzeto |
|---|---|---|---|---|
Poljemodel | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve recraft/recraft-v4 | Privzeto— |
Poljeprompt | Vrstastring | ZahtevaObvezno | Vrednosti in omejitve Najmanjša dolžina: 1 | Privzeto— |
Poljen | Vrstainteger | ZahtevaIzbirno | Vrednosti in omejitve Najmanj: 1 Največ: 6 | Privzeto— |
Poljeaspect_ratio | Vrstastring | ZahtevaIzbirno | Vrednosti in omejitve 1:1, 4:3, 3:4, 16:9, 9:16, auto | Privzeto— |
Poljeinput_references | Vrstaarray | ZahtevaIzbirno | Vrednosti in omejitve Najmanjše število elementov: 0 Največ elementov: 1 | Privzeto— |
Kombinacije vhodnih gradiv
Iz besedila v sliko · Obvezno: prompt
reference_guided_image · Obvezno: prompt, actual image reference
Parametri in življenjski cikel metode
| Parameter | Specifikacija |
|---|---|
Parametercontent_type | Specifikacijaapplication/json |
Parameterrequired | Specifikacijamodel, prompt |
Parametermaterial_types | Specifikacijatext, image |
Parameteroptional_controls | Specifikacijan, aspect_ratio, input_references |
Parametern | Specifikacija{"minimum":1,"maximum":6} |
Parameterreference_images | Specifikacija{"minimum":0,"maximum":1,"source":"dejansko gradivo, ki ga je podala stranka"} |
Parameterprovider_specific_options | SpecifikacijaSamo shranjeni natančni seznam dovoljenih možnosti končne točke style/controls/text_layout; brez ugibanih struktur. |
Druga imena metode: /v1/images
Življenjski cikel: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Dejansko vrnjeni task_id ali zapis v medijski knjižnici
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Primer samo s pozivom ohrani uradno strukturo ImageGenerationRequest.
Ohranite vsako vrnjeno sliko in celoten odgovor; število izhodov je dejansko in ne zahtevani n.
Cenik
Kako se izračuna končni strošek
Prikazane cene so namenjene oceni stroškov pred generiranjem. Končni znesek se izračuna na podlagi stroška, zabeleženega za izvirno generiranje. Izmerjeno trajanje izhoda in napovedane količine niso končna obračunska količina.
Tarifni podatki ne dodajajo možnosti zahteve. Podprti parametri so navedeni pri izbrani metodi.
- Hitri način
- Ni navedeno Ko je izbran hitri način
- Način flex
- Ni navedeno Ko je izbran način flex
- Najvišja raven razmišljanja
- Ni navedeno Ko najvišja raven razmišljanja uporablja privzeto prilagoditev (default)
Ocenjene cene za primerjavo
Cene po nastavitvah
Vsak strošek povežite s prikazanimi pogoji. Za vsak nabor alternativnih nastavitev uporabite eno ceno.
| Nastavitev | Cenovna lestvica | Predvidena količina | Obračunska enota | Strošek |
|---|---|---|---|---|
| NastavitevOsnovne cene žetonov | Cenovna lestvicaOsnovna cena | Predvidena količina— | Obračunska enota— | Strošek Vhod · Vhodni žetoni · Ocena samo za primerjavo — / 1K žetonov Izhod · Izhodni žetoni · Ocena samo za primerjavo — / 1K žetonov Vhod · Branje predpomnilnika · Ocena samo za primerjavo — / 1K žetonov Vhod · Zapis v predpomnilnik · Ocena samo za primerjavo — / 1K žetonov Vhod · Zapis v predpomnilnik, 1 ura · Ocena samo za primerjavo — / 1K žetonov |
| NastavitevUltra | Cenovna lestvica— | Predvidena količina— | Obračunska enotana izhodno sliko | Strošek Izhod · izhodna slika · Ocena samo za primerjavo $0.08 na izhodno sliko |
| NastavitevOcenjeni strošek ustvarjanja | Cenovna lestvica— | Predvidena količinaocena za eno generiranje | Obračunska enota— | Strošek Izhod · Ocenjeni stroški ustvarjanja · Ocena samo za primerjavo $0.08 ocena pred ustvarjanjem Ta ocena ni dodatno plačilo ali fiksna cena za dokončano generiranje. |
Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. Kako delujeta rezervacija in obračun →
Podrobnosti referenčne tarife
Referenčne lestvice modela ne spreminjajo izbire metode, ocen cen ali stroškov. Veljavni stroški uporabljajo cene izbrane metode Ailoot.
Konfiguracije cen slik
Cene po nastavitvah
| Nastavitev | Obračunski pogoji | Strošek |
|---|---|---|
| NastavitevIzhodna slika | Obračunski pogojiRazličica cen ni deklarirana. | Strošek Izhod · Izhodna slika $0.08 na sliko Enakovredne navedbe opisujejo isti zaračunani znesek; ne dodajajo druge pristojbine. |
Primeri zahtev
Ailoot Ultra · Slike
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");
Prejmi in shrani rezultate
Ailoot Ultra · Slike
Prenesite vsako vrnjeno sliko ali shranite njeno vsebino Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Ohrani vse dokončane rezultate
Shranite vsako dokončano sliko; pridobite vsebino z vsake vrnjene URL ali dekodirajte njeno vsebino Base64.
Ohranite vsak element data in celotno porabo; pridobite lastništvo in shranite vse dejansko vrnjene slike. Brez izmišljenih URL-jev ali ID-jev.
Če je treba preveriti izvirni odgovor
Če je treba preveriti rezultat generiranja ali urejanja slike, shranite izvirni operation_id/X-Client-Request-ID in vrnjene podatke o rezultatu. Obstoječe rezultate, ki vam pripadajo, pridobite prek medijske knjižnice z dejanskimi vrednostmi task_id ali asset_id. Zahteve za generiranje/urejanje ne pošiljajte znova in iz operation_id ne sestavljajte URL za periodično preverjanje stanja.
Polja odgovora
| Polje | Vrsta |
|---|---|
Poljecreated | Vrstainteger |
Poljedata[].url | Vrstastring |
Poljedata[].b64_json | Vrstabase64 string |
Poljeusage | Vrstaobject |
Napake in naslednji koraki
| Odgovor | Pogoj | Naslednji korak |
|---|---|---|
Odgovor400 · invalid_request_error | PogojNeveljavna obvezna polja, predstavitev gradiva ali vrednost parametra | Naslednji korakPred novo zahtevo za ustvarjanje popravite navedena polja. |
Odgovorserver_error | PogojVrnjeni odgovor navaja, da je treba operacijo ali rezultat preveriti | Naslednji korakShranite izvirni vrnjeni ID operacije/opravila, glave zahteve in odgovor; nadaljujte s podprtimi branji te izvirne operacije. Zahteve za ustvarjanje ne pošiljajte znova. |
Druga imena
Druga imena modelov
Ailoot Ultra recraft/recraft-v4
Druga imena poti metod
/v1/images
Povezani ID-ji za klic
FAQ · Recraft: Recraft V4
- Kateri vhodi in rezultati so na voljo?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- Katera polja uporablja zahteva?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Katere omejitve veljajo?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6