Recraft: Recraft V4 Pro
Recraft V4 Pro genererer rasterbilleder i 2K til detaljerede kompositioner, fotorealisme, illustration og kreativt arbejde til tryk. Det er V4-udgaven med højere opløsning med tekstbeskrivelser, valgfrie stilinput og en separat billede-til-billede-arbejdsgang.
Om modellen
Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.
Recraft V4 Pro er rastermodellen med højere opløsning i Recrafts V4-familie. V4 fokuserer på visuel dømmekraft, afbalanceret komposition, sammenhængende farver og omhyggelig fortolkning af kreativ retning. Producenten positionerer Pro til finere detaljer, mere realistiske komplekse scener og større produktionsbilleder. Brug den til en detaljeret illustration, et redaktionelt billede, et plakatkoncept eller andet materiale, der har gavn af et større rasterresultat. Den forbliver adskilt fra den senere V4.1-model og V4 Pro Vectors SVG-output.
Den konkrete producentkode er recraftv4_pro. Det dokumenterede output er raster i 2K som tabsfri WebP eller PNG: 2048 × 2048 pixels til et kvadrat, 2688 × 1536 til 16:9 og 1664 × 2560 til 2:3. Andre understøttede billedformater har deres egne dimensioner. Vælg et billedformat til det ønskede layout eller en præcis tilladt størrelse; en vilkårlig pixelstørrelse indgår ikke i den dokumenterede genereringskontrakt. Standardudgaven V4 har et mindre rasteroutput i 1K, mens vektormodeller ikke har nogen fast pixelopløsning.
V4 kan fortolke en kort prompt til udforskning eller en struktureret prompt til et kontrolleret resultat. Ved en bestemt visuel retning går producentens vejledning fra motiv og omgivelser til indramning, egenskaber, rumlige relationer, belysning, dybde og stemning. Til et redaktionelt produktbillede kan du bede om et dramatisk lodret fotografi af en skulpturel stol, overflader i børstet metal, sidelys, en rolig mørk baggrund og plads over genstanden til en titel. At navngive disse relationer gør den ønskede komposition tydeligere end en generel anmodning om et eksklusivt billede.
Familiens kreative spænd omfatter fortællende illustration, fotorealistiske scener og rumlige billeder med materiale- og lysanvisninger. Et resultat, der ser tredimensionelt ud, er stadig et billede, ikke en redigerbar 3D-scene. Til en grafisk plakat skal du angive de visuelle lag og deres samspil: baggrund, illustration eller fotografi, overskriftshierarki og uddybende tekst. V4 er positioneret til læsbare korte og mellemlange formuleringer, men den færdige stavning og hierarkiet bør undersøges frem for at blive udledt af modelnavnet.
Den aktuelle genereringsreference tillader prompts på op til 10.000 tegn, ét til seks output, et tilfældigt seed og kontroller for foretrukne farver og baggrundsfarve. Valgfrie brugerdefinerede stilarter eller kompatible referencebilleder kan styre udseendet med fleksibel eller præcis matchning. Modellen accepterer ikke de ældre V3-kontroller negative_prompt, kuraterede stilarter, text_layout, artistic_level eller no_text. Beskriv det ønskede færdige billede i den positive prompt, og hold krav til motiv, layout og farve udtrykkelige. Ved generering med referencestil skal du bruge ét til ti PNG-, JPG- eller WebP-billeder, højst 64 MB i alt og under 20 MB hver. Hver reference skal have en korteste side på mindst 256 pixels, en længste side på højst 4.096 pixels og en opløsning på højst 16 megapixels. Brug enten disse referencer eller en kompatibel gemt stil frem for begge dele.
Recraft dokumenterer en separat billede-til-billede-operation til V4. Den kombinerer et eksisterende billede og en prompt med en styrke fra 0 til 1 til at styre graden af ændring og accepterer ikke brugerdefinerede V4-stilkontroller i denne operation. Forbered kilden inden for producentens billedinputgrænser, og angiv de egenskaber, der skal føres videre til det nye resultat. Ved et større færdigt materiale skal du kontrollere fine detaljer, beskæring og tekst i den ønskede størrelse. Pros ekstra rasterdetaljer understøtter denne undersøgelse, mens billedet forbliver en genereret fortolkning af den medsendte kreative beskrivelse. Til billede-til-billede skal du medsende PNG, JPG, WebP eller SVG under 20 MB, højst 16 megapixels og med begge sider mellem 256 og 4.096 pixels.
Ailoot Ultra · Billeder POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proStart
Recraft V4 Pro genererer rasterbilleder i 2K til detaljerede kompositioner, fotorealisme, illustration og kreativt arbejde til tryk. Det er V4-udgaven med højere opløsning med tekstbeskrivelser, valgfrie stilinput og en separat billede-til-billede-arbejdsgang.
- Accepterede input
- Tekst · Billeder
- Resultater
- Billeder
Tilgængelig i Ailoot · input og metoder
Ailoot Ultra · Billeder POST /v1/images/generations
- Inputtyper
text,image- Outputtyper
image- Outputformat
- Billedfil
| Felt | Type | Krav | Værdier og grænser | Standard |
|---|---|---|---|---|
Feltmodel | Typestring | KravPåkrævet | Værdier og grænser recraft/recraft-v4-pro | Standard— |
Feltprompt | Typestring | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
Feltn | Typeinteger | KravValgfrit | Værdier og grænser Minimum: 1 Maksimum: 6 | Standard— |
Feltaspect_ratio | Typestring | KravValgfrit | Værdier og grænser 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standard— |
Feltinput_references | Typearray | KravValgfrit | Værdier og grænser Minimumsantal elementer: 0 Maksimalt antal elementer: 1 | Standard— |
Kombinationer af inputmaterialer
Tekst til billede · Påkrævet: prompt
Metodeparametre og livscyklus
| Parameter | Kontrakt |
|---|---|
Parametercontent_type | Kontraktapplication/json |
Parameterrequired | Kontraktmodel, prompt |
Parametermaterial_types | Kontrakttext, image |
Parameteroptional_controls | Kontraktaspect_ratio, n, input_references |
Parameterexact_supported_parameters | Kontrakt{"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 | KontraktKun faktiske billedreferencer fra kunden; de er underlagt betingelserne for udbyderens endpoint. |
Metodealiaser: /v1/images
Livscyklus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · det faktisk returnerede task_id eller posten i mediebiblioteket
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Brug den præcise model og de dokumenterede inputfelter.
Behold hele svaret, hvert faktisk output og de oprindeligt returnerede ID’er.
Priser
Sådan beregnes det endelige beløb
De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.
Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.
- Hurtig tilstand
- Ikke angivet Når hurtig tilstand er valgt
- flex-tilstand
- Ikke angivet Når flex-tilstanden er valgt
- Maksimal ræsonneringsindsats
- Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats
Estimerede takster til sammenligning
Priser efter konfiguration
Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.
| Konfiguration | Takstplan | Forventet mængde | Afregningsenhed | Beløb |
|---|---|---|---|---|
| KonfigurationGrundpriser for tokens | TakstplanGrundtakst | Forventet mængde— | Afregningsenhed— | Beløb Input · Inputtokens · Estimat kun til sammenligning — / 1K tokens Output · Outputtokens · Estimat kun til sammenligning — / 1K tokens Input · Cachelæsning · Estimat kun til sammenligning — / 1K tokens Input · Cacheskrivning · Estimat kun til sammenligning — / 1K tokens Input · Cacheskrivning, 1 time · Estimat kun til sammenligning — / 1K tokens |
| KonfigurationUltra | Takstplan— | Forventet mængde— | Afregningsenhedpr. outputbillede | Beløb Output · billedoutput · Estimat kun til sammenligning $0.5 pr. outputbillede |
| KonfigurationAnslået genereringsomkostning | Takstplan— | Forventet mængdeestimat for én generering | Afregningsenhed— | Beløb Output · Anslået genereringsomkostning · Estimat kun til sammenligning $0.5 estimat før generering Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering. |
Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. Sådan fungerer reservation og afregning →
Detaljer om referencetariffen
Referenceplaner på modelniveau ændrer ikke metodevalg, prisoverslag eller opkrævninger. Ved den aktive afregning anvendes taksterne for den valgte Ailoot-metode.
Priskonfigurationer for billeder
Priser efter konfiguration
| Konfiguration | Afregningsbetingelser | Beløb |
|---|---|---|
| KonfigurationOutputbillede | AfregningsbetingelserDer er ikke angivet nogen prisvariant. | Beløb Output · Outputbillede $0.5 pr. billede Tilsvarende prisangivelser beskriver samme opkrævning; de tilføjer ikke et ekstra gebyr. |
Eksempelanmodninger
Ailoot Ultra · Billeder
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");
Hent og gem resultater
Ailoot Ultra · Billeder
Hent hvert returneret billede, eller gem dets Base64-indhold
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Behold alle færdige resultater
Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.
Behold hvert dataelement og hele forbruget; overtag og gem alle faktisk returnerede billeder. Ingen opdigtede URL’er eller ID’er.
Hvis det oprindelige svar skal kontrolleres
Hvis resultatet af en billedgenerering eller -redigering skal kontrolleres, skal du gemme det oprindelige operation_id/X-Client-Request-ID og de returnerede resultatoplysninger. Hent eksisterende resultater, som du ejer, via mediebiblioteket med de faktiske task_id- eller asset_id-værdier. Send ikke anmodningen om generering/redigering igen, og opbyg ikke en polling-URL ud fra operation_id.
Svarfelter
| Felt | Type |
|---|---|
Feltcreated | Typeinteger |
Feltdata[].url | Typestring |
Feltdata[].b64_json | Typebase64 string |
Feltusage | Typeobject |
Aliaser
Modelaliaser
Ailoot Ultra recraft/recraft-v4-pro
Aliaser for metodestier
/v1/images
Relaterede kalder-ID’er
FAQ · Recraft: Recraft V4 Pro
- Hvilke input og resultater er tilgængelige?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- Hvilke felter bruger anmodningen?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- Hvilke grænser gælder?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6