Recraft: Recraft V4 Pro
Recraft V4 Pro genererer rasterbilder i 2K for detaljerte komposisjoner, fotorealisme, illustrasjon og trykkorientert kreativt arbeid. Den er V4-utgaven med høyere oppløsning, med tekstbeskrivelser, valgfrie stilinndata og en egen bilde-til-bilde-arbeidsflyt.
Om modellen
Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.
Recraft V4 Pro er rastermodellen med høyere oppløsning i Recrafts V4-familie. V4 legger vekt på visuell vurdering, balansert komposisjon, sammenhengende farger og grundig tolkning av kreativ regi. Produsenten posisjonerer Pro for finere detaljer, mer realistiske komplekse scener og omfattende produksjonsbilder. Bruk den til en detaljert illustrasjon, et redaksjonelt bilde, et plakatkonsept eller annet materiale som har nytte av et større rasterresultat. Den forblir atskilt fra den senere V4.1-modellen og SVG-utdataene i V4 Pro Vector.
Den spesifikke produsentkoden er recraftv4_pro. De dokumenterte utdataene er raster i 2K som tapsfri WebP eller PNG: 2048 × 2048 piksler for et kvadrat, 2688 × 1536 for 16:9 og 1664 × 2560 for 2:3. Andre støttede sideforhold har egne dimensjoner. Velg et sideforhold for den tiltenkte layouten eller en nøyaktig tillatt størrelse; en vilkårlig pikselstørrelse inngår ikke i den dokumenterte genereringskontrakten. Standardutgaven V4 har mindre rasterutdata i 1K, mens vektormodeller ikke har noen fast pikseloppløsning.
V4 kan tolke en kort prompt for utforskning eller en strukturert prompt for et kontrollert resultat. For en bestemt visuell retning går produsentens veiledning fra motiv og miljø til utsnitt, egenskaper, romlige forhold, lyssetting, dybde og stemning. For et redaksjonelt produktbilde kan du be om et dramatisk vertikalt fotografi av en skulpturell stol, overflater i børstet metall, sidelys, en rolig mørk bakgrunn og plass over objektet til en tittel. Å navngi disse sammenhengene gjør den tiltenkte komposisjonen tydeligere enn en generell forespørsel om et eksklusivt bilde.
Familiens kreative spenn omfatter fortellende illustrasjon, fotorealistiske scener og bilder med dybde og signaler om materiale og lyssetting. Et 3D-lignende resultat er fortsatt et bilde, ikke en redigerbar 3D-scene. For en grafisk plakat angir du de visuelle lagene og samspillet mellom dem: bakgrunn, illustrasjon eller fotografi, overskriftshierarki og støttetekst. V4 er posisjonert for lesbare korte og middels lange fraser, men den ferdige stavingen og hierarkiet bør undersøkes fremfor å utledes fra modellnavnet.
Den nåværende genereringsreferansen tillater prompter på opptil 10 000 tegn, ett til seks resultater, en tilfeldig seed og kontroller for foretrukne farger og bakgrunnsfarge. Valgfrie egendefinerte stiler eller kompatible referansebilder kan styre utseendet med flexible eller precise matching. Modellen godtar ikke de eldre V3-kontrollene negative_prompt, kuraterte stiler, text_layout, artistic_level og no_text. Beskriv ønsket sluttbilde i den positive prompten, og hold kravene til motiv, layout og farger uttrykkelige. For generering med referansestil bruker du ett til ti PNG-, JPG- eller WebP-bilder, høyst 64 MB til sammen og under 20 MB hver. Hver referanse trenger en kortside på minst 256 piksler, en langside på høyst 4 096 piksler og en oppløsning på høyst 16 megapiksler. Bruk enten disse referansene eller en kompatibel lagret stil, fremfor begge deler.
Recraft dokumenterer en separat bilde-til-bilde-operasjon for V4. Den kombinerer et eksisterende bilde og en prompt med styrke fra 0 til 1 for å styre endringsgraden, og godtar ikke kontroller for egendefinerte V4-stiler i denne operasjonen. Klargjør kilden innenfor produsentens grenser for bildeinndata, og angi egenskapene som skal videreføres til det nye resultatet. For et større sluttbilde kontrollerer du fine detaljer, utsnitt og bokstaver i ønsket størrelse. Pros ekstra rasterdetaljer støtter denne kontrollen, mens bildet forblir en generert tolkning av den innsendte kreative beskrivelsen. For bilde-til-bilde sender du inn PNG, JPG, WebP eller SVG under 20 MB, høyst 16 megapiksler, med begge sider mellom 256 og 4 096 piksler.
Ailoot Ultra · Bilder POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proStart
Recraft V4 Pro genererer rasterbilder i 2K for detaljerte komposisjoner, fotorealisme, illustrasjon og trykkorientert kreativt arbeid. Den er V4-utgaven med høyere oppløsning, med tekstbeskrivelser, valgfrie stilinndata og en egen bilde-til-bilde-arbeidsflyt.
- Godkjente inndata
- Tekst · Bilder
- Resultater
- Bilder
Tilgjengelig i Ailoot · inndata & metoder
Ailoot Ultra · Bilder POST /v1/images/generations
- Inndatatyper
text,image- Utdatatyper
image- Utdataformat
- Bildefil
| Felt | Type | Krav | Verdier & grenser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrevd | Verdier & grenser recraft/recraft-v4-pro | Standard— |
Feltprompt | Typestring | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
Feltn | Typeinteger | KravValgfritt | Verdier & grenser Minimum: 1 Maksimum: 6 | Standard— |
Feltaspect_ratio | Typestring | KravValgfritt | Verdier & grenser 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standard— |
Feltinput_references | Typearray | KravValgfritt | Verdier & grenser Minste antall elementer: 0 Maksimalt antall elementer: 1 | Standard— |
Kombinasjoner av inngående materialer
Tekst til bilde · Påkrevd: prompt
Metodeparametere og livssyklus
| Parameter | Avtale |
|---|---|
Parametercontent_type | Avtaleapplication/json |
Parameterrequired | Avtalemodel, prompt |
Parametermaterial_types | Avtaletext, image |
Parameteroptional_controls | Avtaleaspect_ratio, n, input_references |
Parameterexact_supported_parameters | Avtale{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}} |
Parameterreference_material_rule | AvtaleBare faktiske bildereferanser fra kunden; vilkårene for leverandørens endepunkt gjelder for dem. |
Metodealiaser: /v1/images
Livssyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · faktisk returnert task_id eller oppføring i mediebiblioteket
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Bruk den eksakte modellen og de dokumenterte inndatafeltene.
Behold hele svaret, alle faktiske utdata og opprinnelige returnerte ID-er.
Priser
Slik beregnes det endelige beløpet
De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.
Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.
- Hurtigmodus
- Ikke angitt Når hurtigmodus er valgt
- Flex-modus
- Ikke angitt Når flex-modus er valgt
- Maksimal resonneringsinnsats
- Ikke angitt Når justeringen «default» brukes for maksimal resonneringsinnsats
Estimerte satser for sammenligning
Priser etter konfigurasjon
Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.
| Konfigurasjon | Prisplan | Forventet mengde | Faktureringsenhet | Kostnad |
|---|---|---|---|---|
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Forventet mengde— | Faktureringsenhet— | Kostnad Inndata · Inngående tokener · Estimat kun for sammenligning — / 1K tokener Utdata · Utgående tokener · Estimat kun for sammenligning — / 1K tokener Inndata · Lesing fra hurtigbuffer · Estimat kun for sammenligning — / 1K tokener Inndata · Skriving til hurtigbuffer · Estimat kun for sammenligning — / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time · Estimat kun for sammenligning — / 1K tokener |
| KonfigurasjonUltra | Prisplan— | Forventet mengde— | Faktureringsenhetper utdatabilde | Kostnad Utdata · bildeutdata · Estimat kun for sammenligning $0.5 per utdatabilde |
| KonfigurasjonAnslått genereringskostnad | Prisplan— | Forventet mengdeestimat for én generering | Faktureringsenhet— | Kostnad Utdata · Anslått genereringskostnad · Estimat kun for sammenligning $0.5 estimat før generering Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen. |
Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. Slik fungerer reservasjon og oppgjør →
Detaljer om referansetariffen
Referanseprisplaner på modellnivå endrer ikke metodevalg, prisoverslag eller kostnader. Aktive kostnader bruker satsene til den valgte Ailoot-metoden.
Konfigurasjoner for bildeprising
Priser etter konfigurasjon
| Konfigurasjon | Faktureringsvilkår | Kostnad |
|---|---|---|
| KonfigurasjonUtdatabilde | FaktureringsvilkårIngen prisvariant er deklarert. | Kostnad Utdata · Utdatabilde $0.5 per bilde Tilsvarende oppføringer beskriver samme belastning; de legger ikke til enda en avgift. |
Eksempelforespørsler
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-pro', '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-pro', '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-pro", "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");
Motta og lagre resultater
Ailoot Ultra · Bilder
Last ned hvert returnerte bilde eller lagre Base64-innholdet
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Behold alle ferdige resultater
Lagre hvert ferdige bilde; hent hver returnerte URL eller dekod Base64-innholdet.
Behold hvert dataelement og alt forbruk; ta eierskap til og lagre alle faktiske returnerte bilder. Ingen oppdiktede adresser eller ID-er.
Hvis det opprinnelige svaret må kontrolleres
Hvis et resultat fra bildegenerering eller bilderedigering må kontrolleres, bevar opprinnelig operation_id/X-Client-Request-ID og den returnerte resultatinformasjonen. Hent eksisterende resultater du eier via mediebiblioteket, ved hjelp av faktiske task_id- eller asset_id-verdier. Ikke send genererings-/redigeringsforespørselen på nytt, og ikke konstruer en URL for statusavlesning fra operation_id.
Svarfelter
| Felt | Type |
|---|---|
Feltcreated | Typeinteger |
Feltdata[].url | Typestring |
Feltdata[].b64_json | Typebase64 string |
Feltusage | Typeobject |
Aliaser
Modellaliaser
Ailoot Ultra recraft/recraft-v4-pro
Aliaser for metodestier
/v1/images
Tilknyttede anroper-ID-er
FAQ · Recraft: Recraft V4 Pro
- Hvilke inndata og resultater er tilgjengelige?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- Hvilke felt bruker forespørselen?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- Hvilke grenser gjelder?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6