Recraft: Recraft V4 Pro
Recraft V4 Pro menjana imej raster 2K untuk komposisi terperinci, fotorealisme, ilustrasi dan kerja kreatif berorientasikan cetakan. Ia ialah edisi V4 resolusi lebih tinggi, dengan arahan teks, input gaya pilihan dan aliran imej-ke-imej berasingan.
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Recraft V4 Pro ialah model raster resolusi lebih tinggi dalam keluarga V4 Recraft. V4 berfokus pada pertimbangan visual, komposisi seimbang, warna padu dan tafsiran arah kreatif secara teliti. Pengeluar meletakkan Pro untuk butiran lebih halus, adegan kompleks lebih realistik dan visual produksi besar. Gunakannya untuk ilustrasi terperinci, imej editorial, konsep poster atau aset lain yang mendapat manfaat daripada hasil raster lebih besar. Ia kekal berasingan daripada model V4.1 kemudian dan output SVG V4 Pro Vector.
Kod tepat pengeluar ialah recraftv4_pro. Output yang didokumenkan ialah raster 2K dalam WebP tanpa kehilangan atau PNG: 2048 × 2048 piksel untuk segi empat sama, 2688 × 1536 untuk 16:9 dan 1664 × 2560 untuk 2:3. Nisbah disokong lain mempunyai dimensi sendiri. Pilih nisbah bidang mengikut susun atur dimaksudkan atau saiz tepat dibenarkan; saiz piksel sewenang-wenangnya bukan sebahagian kontrak penjanaan yang didokumenkan. V4 standard mempunyai output raster 1K lebih kecil, sementara model vektor tiada resolusi piksel tetap.
V4 boleh mentafsir prompt ringkas untuk penerokaan atau prompt berstruktur untuk hasil terkawal. Untuk arah seni khusus, panduan pengeluar bergerak daripada subjek dan persekitaran kepada pembingkaian, atribut, hubungan ruang, pencahayaan, kedalaman dan suasana. Untuk imej produk editorial, minta foto menegak dramatik kerusi berbentuk arca, permukaan logam dengan kemasan berus, cahaya sisi, latar belakang gelap tenang dan ruang di atas objek untuk tajuk. Menamakan hubungan ini menjelaskan komposisi dimaksudkan berbanding permintaan umum imej premium.
Julat kreatif keluarga merangkumi ilustrasi naratif, adegan fotorealistik dan visual berdimensi dengan petunjuk bahan serta pencahayaan. Hasil kelihatan 3D masih imej, bukan adegan 3D boleh sunting. Untuk poster grafik, tetapkan lapisan visual dan interaksinya: latar belakang, ilustrasi atau foto, hierarki tajuk serta teks sokongan. V4 diposisikan untuk frasa pendek dan sederhana yang boleh dibaca, tetapi ejaan serta hierarki siap perlu diperiksa tanpa disimpulkan daripada nama model.
Rujukan penjanaan semasa membenarkan prompt sehingga 10,000 aksara, satu hingga enam output, seed rawak serta kawalan warna pilihan dan warna latar belakang. Gaya tersuai pilihan atau imej rujukan serasi boleh memandu rupa dengan padanan fleksibel atau tepat. Model tidak menerima kawalan V3 lama negative_prompt, gaya yang dikurasi, text_layout, artistic_level atau no_text. Huraikan imej akhir dimaksudkan dalam prompt positif dan nyatakan keperluan subjek, susun atur serta warna secara eksplisit. Untuk penjanaan gaya rujukan, gunakan satu hingga sepuluh imej PNG, JPG atau WebP, jumlah tidak melebihi 64 MB dan setiap satu di bawah 20 MB. Setiap rujukan memerlukan sisi terpendek sekurang-kurangnya 256 piksel, sisi terpanjang tidak melebihi 4,096 piksel dan resolusi tidak melebihi 16 megapiksel. Gunakan sama ada rujukan ini atau gaya tersimpan serasi, bukan kedua-duanya.
Recraft mendokumenkan operasi imej-ke-imej berasingan untuk V4. Ia menggabungkan imej sedia ada dan prompt dengan kekuatan 0 hingga 1 untuk mengawal tahap perubahan, dan tidak menerima kawalan gaya tersuai V4 dalam operasi itu. Sediakan sumber dalam had input imej pengeluar dan nyatakan atribut yang perlu diteruskan ke hasil baharu. Untuk aset akhir lebih besar, semak butiran halus, pemotongan dan tulisan pada saiz dimaksudkan. Perincian raster tambahan Pro menyokong pemeriksaan itu, sementara imej kekal tafsiran terjana bagi arahan kreatif yang diberikan. Untuk imej-ke-imej, berikan PNG, JPG, WebP atau SVG di bawah 20 MB, tidak melebihi 16 megapiksel, dengan kedua-dua sisi antara 256 dan 4,096 piksel.
Ailoot Ultra · Imej POST /v1/images/generations recraft/recraft-v4-pro
recraft/recraft-v4-proPengenalan
Recraft V4 Pro menjana imej raster 2K untuk komposisi terperinci, fotorealisme, ilustrasi dan kerja kreatif berorientasikan cetakan. Ia ialah edisi V4 resolusi lebih tinggi, dengan arahan teks, input gaya pilihan dan aliran imej-ke-imej berasingan.
- Input yang diterima
- Teks · Imej
- Hasil
- Imej
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Imej POST /v1/images/generations
- Input
text,image- Output
image- Format output
- Fail imej
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had recraft/recraft-v4-pro | Lalai— |
Medanprompt | Jenisstring | KeperluanDiperlukan | Nilai & had Panjang minimum: 1 | Lalai— |
Medann | Jenisinteger | KeperluanPilihan | Nilai & had Minimum: 1 Maksimum: 6 | Lalai— |
Medanaspect_ratio | Jenisstring | KeperluanPilihan | Nilai & had 1:1, 4:3, 3:4, 16:9, 9:16, auto | Lalai— |
Medaninput_references | Jenisarray | KeperluanPilihan | Nilai & had Item minimum: 0 Item maksimum: 1 | Lalai— |
Gabungan bahan input
Teks kepada imej · Diperlukan: prompt
Parameter kaedah dan kitar hayat
| Parameter | Kontrak |
|---|---|
Parametercontent_type | Kontrakapplication/json |
Parameterrequired | Kontrakmodel, prompt |
Parametermaterial_types | Kontraktext, image |
Parameteroptional_controls | Kontrakaspect_ratio, n, input_references |
Parameterexact_supported_parameters | Kontrak{"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 | KontrakHanya rujukan imej sebenar pelanggan; syarat titik akhir pembekal mengawalnya. |
Alias kaedah: /v1/images
Kitar hayat: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id sebenar yang dikembalikan atau rekod pustaka media
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Gunakan model yang tepat dan medan input yang didokumenkan.
Simpan respons lengkap, setiap output sebenar dan ID asal yang dikembalikan.
Pelan harga
Cara caj akhir dikira
Kadar yang dipaparkan menganggarkan kos sebelum penjanaan. Caj akhir dikira berdasarkan kos yang direkodkan untuk penjanaan asal. Tempoh output yang diukur dan kuantiti ramalan bukan kuantiti akhir yang boleh dibilkan.
Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.
- Mod pantas
- Tidak dinyatakan Apabila mod pantas dipilih
- Mod flex
- Tidak dinyatakan Apabila mod flex dipilih
- Usaha penaakulan maksimum
- Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default
Anggaran kadar untuk perbandingan
Harga mengikut konfigurasi
Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.
| Konfigurasi | Jadual kadar | Kuantiti ramalan | Unit pengebilan | Caj |
|---|---|---|---|---|
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Kuantiti ramalan— | Unit pengebilan— | Caj Input · Token input · Anggaran untuk perbandingan sahaja — / 1K token Output · Token output · Anggaran untuk perbandingan sahaja — / 1K token Input · Bacaan cache · Anggaran untuk perbandingan sahaja — / 1K token Input · Penulisan cache · Anggaran untuk perbandingan sahaja — / 1K token Input · Penulisan cache, 1 jam · Anggaran untuk perbandingan sahaja — / 1K token |
| KonfigurasiUltra | Jadual kadar— | Kuantiti ramalan— | Unit pengebilanbagi setiap imej keluaran | Caj Output · keluaran imej · Anggaran untuk perbandingan sahaja $0.5 bagi setiap imej keluaran |
| KonfigurasiAnggaran kos penjanaan | Jadual kadar— | Kuantiti ramalananggaran untuk satu penjanaan | Unit pengebilan— | Caj Output · Anggaran kos penjanaan · Anggaran untuk perbandingan sahaja $0.5 anggaran sebelum penjanaan Anggaran ini bukan caj tambahan atau kadar tetap bagi penjanaan yang telah selesai. |
Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →
Butiran tarif rujukan
Jadual rujukan peringkat model tidak mengubah pemilihan kaedah, sebut harga atau caj. Caj aktif menggunakan kadar kaedah Ailoot yang dipilih.
Konfigurasi harga imej
Harga mengikut konfigurasi
| Konfigurasi | Syarat pengebilan | Caj |
|---|---|---|
| KonfigurasiImej output | Syarat pengebilanTiada varian harga diisytiharkan. | Caj Output · Imej keluaran $0.5 bagi setiap imej Penyenaraian setara menerangkan caj yang sama; ia tidak menambah fi kedua. |
Contoh permintaan
Ailoot Ultra · Imej
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");
Terima dan simpan hasil
Ailoot Ultra · Imej
Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Simpan semua hasil yang selesai
Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.
Simpan setiap item data dan penggunaan lengkap; ambil pemilikan dan simpan semua imej sebenar yang dikembalikan. Jangan mereka-reka URL atau ID.
Jika respons asal perlu disemak
Jika hasil penjanaan atau penyuntingan imej memerlukan semakan, simpan operation_id/X-Client-Request-ID asal serta maklumat hasil yang dikembalikan. Pulihkan hasil sedia ada milik anda melalui pustaka media menggunakan nilai task_id atau asset_id sebenar. Jangan hantar semula permintaan penjanaan/penyuntingan atau bina URL tinjauan status daripada operation_id.
Medan respons
| Medan | Jenis |
|---|---|
Medancreated | Jenisinteger |
Medandata[].url | Jenisstring |
Medandata[].b64_json | Jenisbase64 string |
Medanusage | Jenisobject |
Alias
Alias model
Ailoot Ultra recraft/recraft-v4-pro
Alias laluan kaedah
/v1/images
ID pemanggil berkaitan
FAQ · Recraft: Recraft V4 Pro
- Apakah input dan hasil yang tersedia?
POST /v1/images/generations·recraft/recraft-v4-pro:text,image→image- Apakah medan yang digunakan oleh permintaan?
POST /v1/images/generations·recraft/recraft-v4-pro:model,prompt,n,aspect_ratio,input_references- Apakah had yang terpakai?
POST /v1/images/generations·recraft/recraft-v4-pro:n.minimum:1;n.maximum:6