modely

Recraft: Recraft V4

Markdown · JSON

Recraft: Recraft V4

Recraft V4 generuje rastrové obrázky 1K se zaměřením na kompozici, barevné vztahy a podrobný tvůrčí směr. Pokrývá ilustraci, fotorealistické scény a koncepty grafického designu s volitelnými stylovými vstupy a samostatným postupem image-to-image.

O modelu

Tento popis zahrnuje schopnosti modelu. Vstupy, výstupy a možnosti dostupné v Ailoot jsou uvedeny níže pro vybranou metodu.

Recraft V4 je standardní rastrový model generace Recraft V4. Výrobce zdůrazňuje designový úsudek: vyváženou kompozici, souvislé barevné vztahy a detail podporující vizuální záměr. Může pracovat se stylizovanou ilustrací, fotografickými scénami a koncepty grafického designu. Použijte jej, když zadání vyžaduje obrázek spojující estetické volby s přesností promptu, ať zkoumáte náladu z krátkého směru, nebo podrobně určujete záměrné rozvržení.

Konkrétní kód modelu je recraftv4. Dokumentace výrobce uvádí rastrový výstup 1K v bezztrátovém WebP nebo PNG. Čtvercový obrázek má 1024 × 1024 pixelů, 16:9 má 1344 × 768 a 2:3 má 832 × 1280; ostatní podporované poměry používají vlastní rozměry. V4 Pro je samostatná rastrová edice 2K, zatímco V4 Vector a Pro Vector vracejí editovatelné SVG. Konkrétní variantu V4 vyberte pro zamýšlený výstup místo kombinování těchto odlišných výstupních vlastností.

Příručka výrobce rozlišuje stručné interpretační prompty a strukturované tvůrčí vedení. Krátká fráze může ponechat prostor pro zkoumání formy, nálady a rámování. Strukturované zadání může pojmenovat objekt, prostředí, pózu, materiál, vedlejší prvky, osvětlení a vizuální hierarchii. U příběhové ilustrace popište cyklistu přejíždějícího malý most, výrazné zjednodušené tvary, teplé tlumené barvy a jasný pohyb zleva doprava. Tato obsahová a kompoziční rozhodnutí jsou použitelnější než dlouhý seznam nesouvisejících stylových přídavných jmen.

Rozsah V4 zahrnuje ilustraci, prostorové obrazy a fotorealistické vizuály. Příručka doporučuje u ilustrace popsat logiku kresby a u obrázku s 3D vzhledem materiál, světlo, kameru a hloubku. Druhý zůstává rastrovým vizuálem místo editovatelné sítě. U plakátu či konceptu obalu uveďte hlavní slova, jejich umístění a interakci obrazu s typografií. Výrobce zdůrazňuje čitelný krátký a středně dlouhý text; před použitím prohlédněte skutečné znění a uspořádání vráceného obrázku.

Generování podporuje prompty do 10 000 znaků, náhodný seed, jeden až šest výstupů, preferované barvy a požadovanou barvu pozadí. Volitelné kompatibilní vlastní styly a referenční obrázky mohou vést vizuální zpracování pomocí flexible nebo precise matching. Vyberte čistou referenci nebo sadu patřící do jednoho vizuálního světa a promptem popište nový objekt a scénu. Barevná shoda reference s výstupem není zaručena, proto požadovanou paletu ponechte explicitní a výsledek s ní porovnejte. Pro generování podle stylových referencí použijte jeden až deset obrázků PNG, JPG nebo WebP, celkem nejvýše 64 MB a každý pod 20 MB. Každá reference potřebuje nejkratší stranu alespoň 256 pixelů, nejdelší nejvýše 4 096 pixelů a rozlišení nejvýše 16 megapixelů. Použijte buď tyto reference, nebo kompatibilní uložený styl, nikoli obojí.

Dokumentovaná operace image-to-image kombinuje existující obrázek a prompt se silou od 0 do 1 určující odchylku nového výstupu od zdroje. V této operaci nepřijímá ovládání stylů V4. Současná dokumentace generování vylučuje také názvy předpřipravených stylů, negative_prompt, text_layout, artistic_level a no_text. Připravte pozitivní popis požadovaného výsledku a materiál posuďte v cílové kompozici. Standardní V4 poskytuje soustředěnou rastrovou designovou interpretaci s konkrétní edicí, formátem a výstupní velikostí. Pro image-to-image dodejte PNG, JPG, WebP nebo SVG pod 20 MB, nejvýše 16 megapixelů, s oběma stranami mezi 256 a 4 096 pixely.

Ailoot Ultra · Obrázky POST /v1/images/generations recraft/recraft-v4

recraft/recraft-v4

Recraft /recraft/recraft-v4

Úvod

Recraft V4 generuje rastrové obrázky 1K se zaměřením na kompozici, barevné vztahy a podrobný tvůrčí směr. Pokrývá ilustraci, fotorealistické scény a koncepty grafického designu s volitelnými stylovými vstupy a samostatným postupem image-to-image.

Přijímané vstupy
Text · Obrázky
Výsledky
Obrázky

Dostupné v Ailoot · vstupy a metody

Ailoot Ultra · Obrázky POST /v1/images/generations
Vstup
text, image
Výstup
image
Výstupní formát
Soubor obrázku
PoleTypPožadavekHodnoty a limityVýchozí
PolemodelTypstringPožadavekPovinnéHodnoty a limity
recraft/recraft-v4
Výchozí—
PolepromptTypstringPožadavekPovinnéHodnoty a limity
Minimální délka: 1
Výchozí—
PolenTypintegerPožadavekVolitelnéHodnoty a limity
Minimum: 1
Maximum: 6
Výchozí—
Poleaspect_ratioTypstringPožadavekVolitelnéHodnoty a limity
1:1, 4:3, 3:4, 16:9, 9:16, auto
Výchozí—
Poleinput_referencesTyparrayPožadavekVolitelnéHodnoty a limity
Minimální počet položek: 0
Maximální počet položek: 1
Výchozí—
Kombinace vstupních materiálů

Text na obrázek · Povinné: prompt

reference_guided_image · Povinné: prompt, actual image reference

Parametry a životní cyklus metody
ParametrKontrakt
Parametrcontent_typeKontraktapplication/json
ParametrrequiredKontraktmodel, prompt
Parametrmaterial_typesKontrakttext, image
Parametroptional_controlsKontraktn, aspect_ratio, input_references
ParametrnKontrakt{"minimum":1,"maximum":6}
Parametrreference_imagesKontrakt{"minimum":0,"maximum":1,"source":"skutečný materiál dodaný zákazníkem"}
Parametrprovider_specific_optionsKontraktPouze uložený přesný seznam povolených style/controls/text_layout pro koncový bod; žádné odhadované struktury.

Aliasy metody: /v1/images

Životní cyklus: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · skutečně vrácené task_id nebo záznam v knihovně médií

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Příklad obsahující pouze textové zadání zachovává oficiální strukturu ImageGenerationRequest.

Uchovejte každý vrácený obrázek a úplnou odpověď; rozhoduje skutečný počet výstupů, nikoli požadované n.

Tarify

Jak se vypočítá konečný poplatek

Zobrazené sazby slouží k odhadu ceny před generováním. Konečný poplatek se vypočítá z nákladů zaznamenaných u původního generování. Naměřená délka výstupu ani odhadovaná množství nejsou konečným účtovaným množstvím.

Údaje o tarifech nepřidávají možnosti požadavku. Podporované parametry jsou uvedeny u vybrané metody.

Rychlý režim
Neuvedeno Při výběru rychlého režimu
Režim flex
Neuvedeno Při výběru režimu flex
Maximální intenzita uvažování
Neuvedeno Když se při maximální intenzitě uvažování použije výchozí úprava (default)

Odhadované sazby pro srovnání

Ceny podle konfigurace

Přiřaďte každý poplatek k uvedeným podmínkám. Pro každou sadu alternativních konfigurací použijte jednu sazbu.

KonfiguraceTabulka sazebPředpokládané množstvíÚčtovací jednotkaPoplatek
KonfiguraceZákladní sazby za tokenyTabulka sazebZákladní sazbaPředpokládané množství—Účtovací jednotka—Poplatek
Vstup · Vstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů
Výstup · Výstupní tokeny · Odhad pouze pro srovnání — / 1K tokenů
Vstup · Čtení z mezipaměti · Odhad pouze pro srovnání — / 1K tokenů
Vstup · Zápis do mezipaměti · Odhad pouze pro srovnání — / 1K tokenů
Vstup · Zápis do mezipaměti, 1 hodina · Odhad pouze pro srovnání — / 1K tokenů
KonfiguraceUltraTabulka sazeb—Předpokládané množství—Účtovací jednotkaza výstupní obrázekPoplatek
Výstup · výstupní obrázek · Odhad pouze pro srovnání $0.08 za výstupní obrázek
KonfiguraceOdhadovaná cena generováníTabulka sazeb—Předpokládané množstvíodhad pro jedno generováníÚčtovací jednotka—Poplatek
Výstup · Odhadovaná cena generování · Odhad pouze pro srovnání $0.08 odhad před generováním

Tento odhad není dodatečným poplatkem ani pevnou sazbou za dokončené generování.

Ailoot před požadavkem rezervuje odhadovanou částku. Po výsledku vyúčtuje konečný poplatek podle naměřeného využití. Při streamování se účtování řídí konečným záznamem využití. Jak funguje rezervace a vyúčtování →

Podrobnosti referenčního tarifu

Referenční tabulky modelu nemění výběr metody, cenové nabídky ani poplatky. Skutečné poplatky používají sazby vybrané metody Ailoot.

Cenové konfigurace obrázků

Ceny podle konfigurace

KonfiguracePodmínky účtováníPoplatek
KonfiguraceVýstupní obrázekPodmínky účtováníNení deklarována žádná cenová varianta.Poplatek
Výstup · Výstupní obrázek $0.08 za obrázek

Ekvivalentní položky popisují tutéž účtovanou částku; nepřidávají druhý poplatek.

Příklady požadavků

Ailoot Ultra · Obrázky

curlPython SDKNode.js SDK
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");

Přijímání a ukládání výsledků

Ailoot Ultra · Obrázky

Stáhněte každý vrácený obrázek nebo uložte jeho obsah Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Uchovejte všechny dokončené výsledky

Uložte každý dokončený obrázek; stáhněte obsah každé vrácené URL nebo dekódujte obsah Base64.

Uchovejte každou datovou položku a úplné údaje o využití; převezměte do správy a uložte všechny skutečně vrácené obrázky. Žádné vymyšlené URL ani ID.

Pokud je nutné ověřit původní odpověď

Pokud výsledek generování nebo úpravy obrázku vyžaduje kontrolu, uchovejte původní operation_id/X-Client-Request-ID a vrácené informace o výsledku. Existující vlastní výsledky obnovte prostřednictvím knihovny médií pomocí skutečných hodnot task_id nebo asset_id. Požadavek na generování či úpravu znovu neodesílejte a nevytvářejte URL pro dotazování na stav z operation_id.

Pole odpovědi
PoleTyp
PolecreatedTypinteger
Poledata[].urlTypstring
Poledata[].b64_jsonTypbase64 string
PoleusageTypobject
Chyby a další kroky
OdpověďPodmínkaDalší krok
Odpověď400 · invalid_request_errorPodmínkaNeplatná povinná pole, reprezentace podkladů nebo hodnota parametruDalší krokPřed novým požadavkem na vytvoření opravte uvedená pole.
Odpověďserver_errorPodmínkaVrácená odpověď uvádí, že operaci nebo výsledek je třeba zkontrolovatDalší krokUchovejte původní vrácené ID operace nebo úlohy, hlavičky požadavku a odpověď; pokračujte v podporovaném načítání údajů o této původní operaci. Požadavek na vytvoření znovu neodesílejte.

Aliasy

Aliasy modelu

Ailoot Ultra recraft/recraft-v4

Aliasy cest metod

/v1/images

Související ID modelů

recraft/recraft-v4

FAQ · Recraft: Recraft V4
Jaké vstupy a výsledky jsou dostupné?

POST /v1/images/generations · recraft/recraft-v4: text, image → image

Jaká pole požadavek používá?

POST /v1/images/generations · recraft/recraft-v4: model, prompt, n, aspect_ratio, input_references

Jaké limity platí?

POST /v1/images/generations · recraft/recraft-v4: n.minimum: 1; n.maximum: 6

Další podrobnosti

Připojte Ailoot k Claude Code, OpenCode, Hermes nebo vlastní aplikaci.

Společnost a její portfolio projektů

Společnost a její portfolio projektů: miliony zákazníků; měsíční tržby v miliardách.

Nakupujte tokeny se slevou.

Sleva předplatného pro pravidelnou práci. Promo kódy až 50% na nákup tokenů.

Předplatné
Pro pravidelné požadavky vyberte tarif se slevou.
Promo kód až 50%
Při nákupu zadejte kód. Cena se přepočítá podle probíhající akce.
Výdaje v historii
U každého požadavku se uloží model, tokeny a částka.

Vybrat předplatné · Zobrazit ceny modelů

Připojte API k produktu, který prodáváte.

SaaS, aplikace a boti podle nabídky a licenční smlouvy Ailoot. Pro přeprodej požádejte o licenci přeprodejce.

Komerční aplikace
Začleňte generování textu, obrázků, videa a zvuku do placených funkcí své služby.
Licence pro přeprodejce
Pošlete popis projektu a způsob poskytování přístupu. Vyžádejte písemné podmínky použití a přeprodeje.
Dokumenty na webu
Nabídka, licenční smlouva a zásady zpracování dat jsou dostupné před připojením.

Požádat o licenci přeprodejce · Nabídka a licenční smlouva