Recraft: Recraft V4 Pro
Recraft V4 Pro generuje rastrowe obrazy 2K do szczegółowych kompozycji, fotorealizmu, ilustracji i prac twórczych przeznaczonych do druku. To wersja V4 o wyższej rozdzielczości, z opisami tekstowymi, opcjonalnymi danymi stylu i osobnym procesem obraz–obraz.
O modelu
Ten opis przedstawia możliwości modelu. Dane wejściowe, wyniki i opcje dostępne w Ailoot podano poniżej dla wybranej metody.
Recraft V4 Pro to rastrowy model o wyższej rozdzielczości w rodzinie V4 Recraft. V4 koncentruje się na osądzie wizualnym, zrównoważonej kompozycji, spójnym kolorze i starannej interpretacji kierunku twórczego. Producent pozycjonuje Pro do drobniejszych szczegółów, bardziej realistycznych złożonych scen i rozbudowanych grafik produkcyjnych. Używaj go do szczegółowej ilustracji, obrazu redakcyjnego, koncepcji plakatu lub innego materiału korzystającego z większego wyniku rastrowego. Pozostaje odrębny od późniejszego modelu V4.1 i wyniku SVG V4 Pro Vector.
Dokładny kod producenta to recraftv4_pro. Udokumentowany wynik to raster 2K w bezstratnym WebP lub PNG: 2048 × 2048 pikseli dla kwadratu, 2688 × 1536 dla 16:9 i 1664 × 2560 dla 2:3. Pozostałe obsługiwane proporcje mają własne wymiary. Wybierz proporcje do zamierzonego układu lub dokładny dozwolony rozmiar; dowolny rozmiar w pikselach nie jest częścią udokumentowanej umowy generowania. Standardowy V4 ma mniejszy rastrowy wynik 1K, a modele wektorowe nie mają stałej rozdzielczości w pikselach.
V4 może interpretować krótki prompt do eksploracji lub ustrukturyzowany prompt do kontrolowanego wyniku. Przy konkretnym kierunku artystycznym przewodnik producenta przechodzi od tematu i otoczenia do kadru, cech, relacji przestrzennych, światła, głębi i nastroju. Do redakcyjnego obrazu produktu poproś o dramatyczną pionową fotografię rzeźbiarskiego krzesła, powierzchnie ze szczotkowanego metalu, boczne światło, spokojne ciemne tło i przestrzeń nad przedmiotem na tytuł. Nazwanie tych relacji czyni zamierzoną kompozycję jaśniejszą niż ogólna prośba o luksusowy obraz.
Zakres twórczy rodziny obejmuje ilustrację narracyjną, sceny fotorealistyczne i przestrzenne grafiki ze wskazówkami materiału i światła. Wynik wyglądający jak 3D nadal jest obrazem, a nie edytowalną sceną 3D. W plakacie graficznym określ warstwy wizualne i ich interakcję: tło, ilustrację lub fotografię, hierarchię nagłówka i tekst uzupełniający. V4 jest pozycjonowany pod kątem czytelnych krótkich i średnich fraz, ale końcową pisownię i hierarchię należy sprawdzić, zamiast wywodzić je z nazwy modelu.
Obecna dokumentacja generowania dopuszcza prompty do 10 000 znaków, od jednego do sześciu wyników, ziarno losowości oraz ustawienia preferowanego koloru i koloru tła. Opcjonalne style niestandardowe lub zgodne obrazy referencyjne mogą kierować wyglądem z elastycznym lub precyzyjnym dopasowaniem. Model nie przyjmuje starszych ustawień V3: negative_prompt, stylów z biblioteki, text_layout, artistic_level lub no_text. Opisz zamierzony końcowy obraz w prompcie pozytywnym i jasno określ temat, układ i wymagania kolorystyczne. Do generowania ze stylem referencyjnym użyj od jednego do dziesięciu obrazów PNG, JPG lub WebP, nie więcej niż 64 MB łącznie i poniżej 20 MB każdy. Każda referencja wymaga najkrótszego boku co najmniej 256 pikseli, najdłuższego nie większego niż 4096 pikseli i rozdzielczości nie większej niż 16 megapikseli. Używaj tych referencji albo zgodnego zapisanego stylu, zamiast obu naraz.
Recraft dokumentuje osobną operację obraz–obraz dla V4. Łączy istniejący obraz i prompt z siłą od 0 do 1 do sterowania stopniem zmiany i nie przyjmuje w tej operacji ustawień niestandardowych stylów V4. Przygotuj źródło w limitach obrazu wejściowego producenta i określ cechy, które mają przejść do nowego wyniku. W większym materiale docelowym sprawdź drobne szczegóły, kadr i napisy w zamierzonym rozmiarze. Dodatkowa szczegółowość rastra Pro wspiera tę kontrolę, a obraz pozostaje wygenerowaną interpretacją dostarczonego opisu twórczego. Do operacji obraz–obraz dostarcz PNG, JPG, WebP lub SVG poniżej 20 MB, nie więcej niż 16 megapikseli, z oboma bokami od 256 do 4096 pikseli.
Ailoot Ultra · Obrazy POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proStart
Recraft V4 Pro generuje rastrowe obrazy 2K do szczegółowych kompozycji, fotorealizmu, ilustracji i prac twórczych przeznaczonych do druku. To wersja V4 o wyższej rozdzielczości, z opisami tekstowymi, opcjonalnymi danymi stylu i osobnym procesem obraz–obraz.
- Akceptowane dane wejściowe
- Tekst · Obrazy
- Wyniki
- Obrazy
Dostępne w Ailoot · dane wejściowe i metody
Ailoot Ultra · Obrazy POST /v1/images/generations
- Wejście
text,image- Wyjście
image- Format wyjściowy
- Plik obrazu
| Pole | Typ | Wymaganie | Wartości i limity | Domyślnie |
|---|---|---|---|---|
Polemodel | Typstring | WymaganieWymagane | Wartości i limity recraft/recraft-v4-pro | Domyślnie— |
Poleprompt | Typstring | WymaganieWymagane | Wartości i limity Minimalna długość: 1 | Domyślnie— |
Polen | Typinteger | WymaganieOpcjonalne | Wartości i limity Minimum: 1 Maksimum: 6 | Domyślnie— |
Poleaspect_ratio | Typstring | WymaganieOpcjonalne | Wartości i limity 1:1, 4:3, 3:4, 16:9, 9:16, auto | Domyślnie— |
Poleinput_references | Typarray | WymaganieOpcjonalne | Wartości i limity Minimalna liczba elementów: 0 Maksymalna liczba elementów: 1 | Domyślnie— |
Kombinacje materiałów wejściowych
Tekst na obraz · Wymagane: prompt
Parametry i cykl życia metody
| Parametr | Kontrakt |
|---|---|
Parametrcontent_type | Kontraktapplication/json |
Parametrrequired | Kontraktmodel, prompt |
Parametrmaterial_types | Kontrakttext, image |
Parametroptional_controls | Kontraktaspect_ratio, n, input_references |
Parametrexact_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}} |
Parametrreference_material_rule | KontraktWyłącznie rzeczywiste obrazy referencyjne klienta; obowiązują warunki endpointu dostawcy. |
Aliasy metody: /v1/images
Cykl życia: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Rzeczywiście zwrócony task_id lub wpis w bibliotece multimediów
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Użyj dokładnego modelu i udokumentowanych pól wejściowych.
Zachowaj kompletną odpowiedź, wszystkie rzeczywiste wyniki i pierwotne zwrócone identyfikatory.
Cennik
Jak obliczana jest ostateczna opłata
Wyświetlane stawki służą do oszacowania kosztu przed generowaniem. Ostateczna opłata jest obliczana na podstawie kosztu zarejestrowanego dla pierwotnego generowania. Zmierzony czas trwania wyniku i prognozowane ilości nie stanowią ostatecznej ilości podlegającej rozliczeniu.
Informacje taryfowe nie dodają opcji żądania. Obsługiwane parametry podano przy wybranej metodzie.
- Tryb szybki
- Nie określono Gdy wybrany jest tryb szybki
- Tryb flex
- Nie określono Gdy wybrany jest tryb flex
- Maksymalna intensywność rozumowania
- Nie określono Gdy dla maksymalnej intensywności rozumowania stosowana jest domyślna korekta (default)
Szacunkowe stawki do porównania
Ceny według konfiguracji
Dopasuj każdą opłatę do pokazanych warunków. Użyj jednej stawki dla każdego zestawu alternatywnych konfiguracji.
| Konfiguracja | Tabela stawek | Przewidywana ilość | Jednostka rozliczeniowa | Opłata |
|---|---|---|---|---|
| KonfiguracjaBazowe stawki za tokeny | Tabela stawekStawka podstawowa | Przewidywana ilość— | Jednostka rozliczeniowa— | Opłata Wejście · Tokeny wejściowe · Szacunek tylko do porównania — / 1K tokenów Wyjście · Tokeny wyjściowe · Szacunek tylko do porównania — / 1K tokenów Wejście · Odczyt cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache · Szacunek tylko do porównania — / 1K tokenów Wejście · Zapis do cache, 1 godz. · Szacunek tylko do porównania — / 1K tokenów |
| KonfiguracjaUltra | Tabela stawek— | Przewidywana ilość— | Jednostka rozliczeniowaza obraz wyjściowy | Opłata Wyjście · obraz na wyjściu · Szacunek tylko do porównania $0.5 za obraz wyjściowy |
| KonfiguracjaSzacowany koszt generowania | Tabela stawek— | Przewidywana ilośćszacunek dla jednego generowania | Jednostka rozliczeniowa— | Opłata Wyjście · Szacowany koszt generowania · Szacunek tylko do porównania $0.5 szacunek przed generowaniem Ten szacunek nie jest dodatkową opłatą ani stałą stawką za ukończone generowanie. |
Ailoot rezerwuje szacowaną kwotę przed żądaniem. Po otrzymaniu wyniku rozlicza ostateczną opłatę według zmierzonego użycia. Rozliczenie strumieniowania korzysta z końcowego rekordu użycia. Jak działają rezerwacja i rozliczenie →
Szczegóły taryfy referencyjnej
Referencyjne tabele modelu nie zmieniają wyboru metody, wyceny ani opłat. Naliczane opłaty korzystają ze stawek wybranej metody Ailoot.
Konfiguracje cen obrazów
Ceny według konfiguracji
| Konfiguracja | Warunki rozliczania | Opłata |
|---|---|---|
| KonfiguracjaObraz wyjściowy | Warunki rozliczaniaNie zadeklarowano wariantu cenowego. | Opłata Wyjście · Obraz wyjściowy $0.5 za obraz Równoważne pozycje opisują tę samą opłatę; nie doliczają drugiej opłaty. |
Przykładowe żądania
Ailoot Ultra · Obrazy
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");
Odbieranie i zapisywanie wyników
Ailoot Ultra · Obrazy
Pobierz każdy zwrócony obraz lub zapisz jego zawartość Base64
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Zachowaj wszystkie ukończone wyniki
Zapisz każdy ukończony obraz; pobierz każdy zwrócony URL lub zdekoduj zawartość Base64.
Zachowaj każdy element data i kompletne dane użycia; zapewnij własność i zapisz wszystkie rzeczywiście zwrócone obrazy. Bez zmyślonych adresów URL ani identyfikatorów.
Jeśli trzeba sprawdzić pierwotną odpowiedź
Jeśli wynik generowania lub edycji obrazu wymaga sprawdzenia, zachowaj pierwotny operation_id/X-Client-Request-ID oraz zwrócone informacje o wyniku. Odzyskaj istniejące własne wyniki z biblioteki multimediów, używając rzeczywistych wartości task_id lub asset_id. Nie wysyłaj ponownie żądania generowania lub edycji ani nie twórz adresu URL do sprawdzania stanu na podstawie operation_id.
Pola odpowiedzi
| Pole | Typ |
|---|---|
Polecreated | Typinteger |
Poledata[].url | Typstring |
Poledata[].b64_json | Typbase64 string |
Poleusage | Typobject |
Aliasy
Aliasy modelu
Ailoot Ultra recraft/recraft-v4-pro
Aliasy ścieżek metod
/v1/images
Powiązane ID modeli
FAQ · Recraft: Recraft V4 Pro
- Jakie dane wejściowe i wyniki są dostępne?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- Jakich pól używa żądanie?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- Jakie limity obowiązują?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6