Recraft: Recraft V4
Recraft V4 kompozitsiya, rang munosabatlari va batafsil ijodiy yo‘nalishga e’tibor qaratib, 1K rastr tasvirlar yaratadi. U ixtiyoriy uslub kirishlari va alohida tasvirdan tasvir jarayoni bilan illyustratsiya, fotorealistik sahnalar hamda grafik dizayn g‘oyalarini qamrab oladi.
Model haqida
Bu tavsif model imkoniyatlarini yoritadi. Ailoot da tanlangan usul uchun mavjud kirish, chiqish va parametrlar quyida keltirilgan.
Recraft V4 — Recraft’ning V4 avlodidagi standart rastr model. Ishlab chiqaruvchi dizayn tanlovini ta’kidlaydi: muvozanatli kompozitsiya, uyg‘un rang munosabatlari va vizual niyatga xizmat qiladigan detallar. U uslublashtirilgan illyustratsiya, fotografik sahnalar va grafik dizayn g‘oyalari bilan ishlay oladi. Qisqa yo‘nalishdan kayfiyat izlash yoki maqsadli maketni batafsil belgilashda, topshiriq estetik tanlovlarni aniqlik bilan birlashtirgan tasvir talab qilsa undan foydalaning.
Aniq model kodi recraftv4. Ishlab chiqaruvchi ma’lumotnomasi yo‘qotishsiz WebP yoki PNG shaklida 1K rastr natijani ko‘rsatadi. Kvadrat tasvir 1024 × 1024 piksel, 16:9 — 1344 × 768, 2:3 esa 832 × 1280; boshqa qo‘llanadigan nisbatlar o‘z o‘lchamlariga ega. V4 Pro alohida 2K rastr nashr, V4 Vector va Pro Vector esa tahrirlanadigan SVG qaytaradi. Turli chiqish xususiyatlarini birlashtirmasdan, kerakli natija uchun aniq V4 variantini tanlang.
Ishlab chiqaruvchi qo‘llanmasi qisqa talqinli topshiriqlarni tuzilmali ijodiy yo‘nalishdan ajratadi. Qisqa ibora shakl, kayfiyat va kadr kompozitsiyasini o‘rganishga joy qoldiradi. Tuzilmali topshiriq obyekt, muhit, poza, material, ikkinchi darajali elementlar, yoritish va vizual iyerarxiyani nomlashi mumkin. Hikoyaviy illyustratsiya uchun kichik ko‘prikdan o‘tayotgan velosipedchi, dadil soddalashtirilgan shakllar, iliq sokin ranglar va chapdan o‘ngga aniq harakatni tasvirlang. Bu mazmun va kompozitsiya qarorlari aloqasiz uslub sifatlarining uzun ro‘yxatidan amaliyroq.
V4 doirasiga illyustratsiya, hajmli tasvirlar va fotorealistik vizuallar kiradi. Qo‘llanma illyustratsiyada chizish mantig‘ini, 3D ko‘rinishdagi tasvirda esa material, yorug‘lik, kamera va chuqurlikni tasvirlashni tavsiya qiladi. Ikkinchisi tahrirlanadigan mesh emas, rastr vizual bo‘lib qoladi. Plakat yoki qadoqlash g‘oyasi uchun qaysi so‘zlar asosiy, qayerda turishi va tasvir hamda tipografiya qanday bog‘lanishini ayting. Ishlab chiqaruvchi o‘qiladigan qisqa va o‘rtacha uzunlikdagi matnni ta’kidlaydi; ishlatishdan avval qaytgan tasvirdagi haqiqiy so‘zlar va joylashuvni tekshiring.
Yaratish 10,000 belgigacha topshiriq, tasodifiy seed, birdan oltitagacha natija, afzal ranglar va kerakli fon rangini qo‘llaydi. Ixtiyoriy mos maxsus uslublar va namuna tasvirlari flexible yoki precise matching orqali vizual ishlovni yo‘naltirishi mumkin. Bitta toza namuna yoki umumiy vizual dunyoga mansub to‘plamni tanlang, yangi obyekt va sahnani esa topshiriq tasvirlasin. Namuna va natija orasida rang mosligi kafolatlanmaydi, shuning uchun kerakli palitrani aniq saqlang va natijani unga solishtiring. Namuna uslubida yaratish uchun birdan o‘ntagacha PNG, JPG yoki WebP, jami ko‘pi bilan 64 MB va har biri 20 MB dan kichik tasvir ishlating. Har bir namunaning eng qisqa tomoni kamida 256 piksel, eng uzuni ko‘pi bilan 4,096 piksel, aniqligi esa ko‘pi bilan 16 megapiksel bo‘lishi kerak. Shu namunalar yoki mos saqlangan uslubdan birini ishlating, ikkalasini birga emas.
Hujjatlashtirilgan tasvirdan tasvir amali mavjud tasvir va topshiriqni birlashtiradi; 0 dan 1 gacha strength yangi natija manbadan qanchalik uzoqlashishini belgilaydi. Ushbu amalda V4 uslub boshqaruvlari qabul qilinmaydi. Hozirgi yaratish ma’lumotnomasi tayyor tanlangan uslub nomlari, negative_prompt, text_layout, artistic_level va no_text ni ham istisno qiladi. Kerakli natijaning ijobiy tavsifini tayyorlang va materialni maqsad kompozitsiyasi ichida baholang. Standart V4 aniq nashr, format va chiqish o‘lchamiga ega yo‘naltirilgan rastr dizayn talqinini beradi. Tasvirdan tasvir uchun 20 MB dan kichik, ko‘pi bilan 16 megapikselli, ikkala tomoni 256–4,096 piksel oralig‘idagi PNG, JPG, WebP yoki SVG bering.
Ailoot Ultra · Rasmlar POST /v1/images/generations recraft/recraft-v4
recraft/recraft-v4Boshlash
Recraft V4 kompozitsiya, rang munosabatlari va batafsil ijodiy yo‘nalishga e’tibor qaratib, 1K rastr tasvirlar yaratadi. U ixtiyoriy uslub kirishlari va alohida tasvirdan tasvir jarayoni bilan illyustratsiya, fotorealistik sahnalar hamda grafik dizayn g‘oyalarini qamrab oladi.
- Qabul qilinadigan kirish ma’lumotlari
- Matn · Rasmlar
- Natijalar
- Rasmlar
Ailoot da mavjud · kirish ma’lumotlari va usullar
Ailoot Ultra · Rasmlar POST /v1/images/generations
- Kirish
text,image- Chiqish
image- Chiqish formati
- Rasm fayli
| Maydon | Tur | Talab | Qiymatlar va cheklovlar | Standart |
|---|---|---|---|---|
Maydonmodel | Turstring | TalabMajburiy | Qiymatlar va cheklovlar recraft/recraft-v4 | Standart— |
Maydonprompt | Turstring | TalabMajburiy | Qiymatlar va cheklovlar Eng kam uzunlik: 1 | Standart— |
Maydonn | Turinteger | TalabIxtiyoriy | Qiymatlar va cheklovlar Eng kam: 1 Eng ko‘p: 6 | Standart— |
Maydonaspect_ratio | Turstring | TalabIxtiyoriy | Qiymatlar va cheklovlar 1:1, 4:3, 3:4, 16:9, 9:16, auto | Standart— |
Maydoninput_references | Turarray | TalabIxtiyoriy | Qiymatlar va cheklovlar Elementlarning eng kam soni: 0 Elementlarning eng ko‘p soni: 1 | Standart— |
Kirish materiallari birikmalari
Matndan rasm · Majburiy: prompt
reference_guided_image · Majburiy: prompt, actual image reference
Usul parametrlari va hayot sikli
| Parametr | Parametr talablari |
|---|---|
Parametrcontent_type | Parametr talablariapplication/json |
Parametrrequired | Parametr talablarimodel, prompt |
Parametrmaterial_types | Parametr talablaritext, image |
Parametroptional_controls | Parametr talablarin, aspect_ratio, input_references |
Parametrn | Parametr talablari{"minimum":1,"maximum":6} |
Parametrreference_images | Parametr talablari{"minimum":0,"maximum":1,"source":"mijoz bergan haqiqiy material"} |
Parametrprovider_specific_options | Parametr talablariFaqat saqlangan aniq endpoint ruxsat ro‘yxatidagi style/controls/text_layout; taxminiy tuzilmalar yo‘q. |
Usul taxalluslari: /v1/images
Hayot sikli: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Amalda qaytarilgan task_id yoki media kutubxonasidagi yozuv
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Faqat matnli ko‘rsatma berilgan misolda rasmiy ImageGenerationRequest tuzilmasi saqlanadi.
Qaytarilgan har bir rasmni va to‘liq javobni saqlang; chiqishlar soni so‘ralgan n emas, haqiqiy sondir.
Tariflar
Yakuniy to‘lov qanday hisoblanadi
Ko‘rsatilgan tariflar xarajatni generatsiyadan oldin taxminiy hisoblash uchun xizmat qiladi. Yakuniy to‘lov dastlabki generatsiya uchun qayd etilgan xarajat asosida hisoblanadi. Natijaning o‘lchangan davomiyligi va oldindan taxmin qilingan miqdorlar haq undiriladigan yakuniy miqdor hisoblanmaydi.
Tarif ma’lumotlari so‘rov imkoniyatlarini qo‘shmaydi. Qo‘llab-quvvatlanadigan parametrlar tanlangan usulda ko‘rsatilgan.
- Tezkor rejim
- Ko‘rsatilmagan Tezkor rejim tanlanganda
- Flex rejimi
- Ko‘rsatilmagan flex rejimi tanlanganda
- Maksimal fikrlash darajasi
- Ko‘rsatilmagan Maksimal fikrlash darajasi uchun standart (default) tuzatish qo‘llanganda
Taqqoslash uchun taxminiy tariflar
Sozlamalar bo‘yicha narxlar
Har bir to‘lovni ko‘rsatilgan shartlarga moslang. Har bir muqobil sozlamalar to‘plami uchun bitta tarifdan foydalaning.
| Sozlama | Tariflar jadvali | Prognoz miqdori | Hisob birligi | To‘lov |
|---|---|---|---|---|
| SozlamaTokenlar uchun bazaviy tariflar | Tariflar jadvaliAsosiy tarif | Prognoz miqdori— | Hisob birligi— | To‘lov Kirish · Kirish tokenlari · Faqat taqqoslash uchun taxmin — / 1K token Chiqish · Chiqish tokenlari · Faqat taqqoslash uchun taxmin — / 1K token Kirish · Keshdan o‘qish · Faqat taqqoslash uchun taxmin — / 1K token Kirish · Keshga yozish · Faqat taqqoslash uchun taxmin — / 1K token Kirish · Keshga yozish, 1 soat · Faqat taqqoslash uchun taxmin — / 1K token |
| SozlamaUltra | Tariflar jadvali— | Prognoz miqdori— | Hisob birligichiqish rasmi uchun | To‘lov Chiqish · chiqish rasmi · Faqat taqqoslash uchun taxmin $0.08 chiqish rasmi uchun |
| SozlamaYaratishning taxminiy qiymati | Tariflar jadvali— | Prognoz miqdoribir generatsiya uchun taxmin | Hisob birligi— | To‘lov Chiqish · Yaratishning taxminiy narxi · Faqat taqqoslash uchun taxmin $0.08 yaratishdan oldingi taxmin Bu taxmin qo‘shimcha to‘lov ham, tugallangan generatsiya uchun qat’iy tarif ham emas. |
Ailoot so‘rovdan oldin taxminiy summani band qiladi. Natijadan keyin o‘lchangan sarf asosidagi yakuniy to‘lovni yechadi. Oqimli javob bo‘yicha yakuniy hisob-kitob yakuniy sarf yozuviga asoslanadi. Summani band qilish va to‘lovni hisoblash tartibi →
Ma’lumot uchun tarif tafsilotlari
Modelning ma’lumot jadvallari usul tanlash, narx hisobi yoki to‘lovlarni o‘zgartirmaydi. Amaldagi to‘lovlar tanlangan Ailoot usuli tariflari bo‘yicha hisoblanadi.
Rasm narxining sozlamalari
Sozlamalar bo‘yicha narxlar
| Sozlama | To‘lovni hisoblash shartlari | To‘lov |
|---|---|---|
| SozlamaChiqish rasmi | To‘lovni hisoblash shartlariNarxlash varianti e’lon qilinmagan. | To‘lov Chiqish · Chiqish rasmi $0.08 rasm uchun Teng kuchli yozuvlar ayni to‘lovni tavsiflaydi; ular ikkinchi haqni qo‘shmaydi. |
So‘rov namunalari
Ailoot Ultra · Rasmlar
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");
Natijalarni olish va saqlash
Ailoot Ultra · Rasmlar
Har bir qaytarilgan rasmni yuklab oling yoki uning Base64 kontentini saqlang
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Barcha tayyor natijalarni saqlash
Har bir tayyor rasmni saqlang; har bir qaytarilgan URL dan kontentni oling yoki uning Base64 kontentini dekodlang.
Har bir data elementini va to‘liq foydalanish ma’lumotini saqlang; haqiqatda qaytarilgan barcha rasmlarni o‘z egaligingizga olib saqlang. URL yoki ID lar o‘ylab topilmasin.
Asl javobni tekshirish kerak bo‘lsa
Rasm yaratish yoki tahrirlash natijasini tekshirish kerak bo‘lsa, dastlabki operation_id/X-Client-Request-ID va qaytarilgan natija haqidagi ma’lumotlarni saqlang. Amalda qaytarilgan task_id yoki asset_id qiymatlari yordamida media kutubxonasidan o‘zingizga tegishli mavjud natijalarni tiklang. Rasm yaratish/tahrirlash so‘rovini qayta yubormang va operation_id dan holatni davriy tekshirish uchun URL tuzmang.
Javob maydonlari
| Maydon | Tur |
|---|---|
Maydoncreated | Turinteger |
Maydondata[].url | Turstring |
Maydondata[].b64_json | Turbase64 string |
Maydonusage | Turobject |
Xatolar va keyingi qadamlar
| Javob | Shart | Keyingi qadam |
|---|---|---|
Javob400 · invalid_request_error | ShartMajburiy maydonlar, material ifodasi yoki parametr qiymati noto‘g‘ri | Keyingi qadamYangi yaratish so‘rovidan oldin ko‘rsatilgan maydonlarni tuzating. |
Javobserver_error | ShartQaytarilgan javob operatsiya yoki natijani tekshirish kerakligini bildiradi | Keyingi qadamDastlab qaytarilgan operatsiya/vazifa ID sini, so‘rov sarlavhalarini va javobni saqlang; aynan shu operatsiya uchun qo‘llab-quvvatlanadigan o‘qish so‘rovlarini davom ettiring. Yaratish so‘rovini qayta yubormang. |
Taxalluslar
Model taxalluslari
Ailoot Ultra recraft/recraft-v4
Usul yo‘llari taxalluslari
/v1/images
Chaqirish uchun tegishli ID lar
FAQ · Recraft: Recraft V4
- Qanday kirish ma’lumotlari va natijalar mavjud?
POST /v1/images/generations·recraft/recraft-v4:text,image→image- So‘rov qaysi maydonlardan foydalanadi?
POST /v1/images/generations·recraft/recraft-v4:model,prompt,n,aspect_ratio,input_references- Qanday cheklovlar amal qiladi?
POST /v1/images/generations·recraft/recraft-v4:n.minimum:1;n.maximum:6