Recraft: Recraft V3
Recraft V3 mencipta foto, ilustrasi dan susun atur grafik dengan komposisi peka teks serta kawalan gaya. Varian raster dan SVG berbezanya sesuai untuk poster, set imej berjenama, ikon dan reka bentuk yang perkataan serta struktur visualnya perlu berfungsi bersama.
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Recraft V3 ialah model penjanaan imej yang dibina untuk reka bentuk grafik serta adegan fotografi dan ilustrasi. Arahan bertulis menerangkan subjek, latar dan komposisi; hasilnya ialah imej. V3 mengembangkan pemaparan teks serta fotorealisme Recraft sambil mengekalkan konsistensi gaya daripada imej contoh tanpa latihan semula.
Teks sebagai sebahagian komposisi
V3 berfungsi dengan teks dalam imej, termasuk teks lebih panjang dan tulisan saiz sederhana. Recraft menerangkan peringkat susun atur yang menetapkan perkataan dan kedudukannya sebelum penjanaan imej. Susun atur boleh dihasilkan secara automatik daripada arahan atau disusun manual dalam persekitaran reka bentuk Recraft. Ini membantu menghubungkan tajuk, ilustrasi dan teks sokongan dalam satu komposisi. Pengeluar turut mendokumenkan koordinat susun atur teks eksplisit, dinyatakan relatif kepada imej dan bukannya grid piksel tetap. Setiap unsur teks mengandungi satu perkataan dan empat titik penjuru dalam koordinat dinormalkan: (0, 0) ialah kiri atas dan (1, 1) kanan bawah. Koordinat boleh melangkaui julat itu, lalu bentuk akan dipotong. Perkataan susun atur teks eksplisit mesti mengikut sekatan aksara yang didokumenkan.
Untuk poster atau kulit, berikan perkataan tepat dan huraikan hierarkinya: baris yang mendahului, kedudukannya dan cara gambar menyokongnya. Semak ejaan serta jarak terpapar ketika memilih hasil.
Gaya, palet dan arah artistik
V3 merangkumi gaya fotografi, ilustrasi dan lambang yang dikurasi, serta pustaka gaya vektor berasingan. Recraft V3 Raw ialah gaya lalai model raster; Vector art ialah lalai varian vektor. Photorealism menyasarkan rupa fotografi, sementara Illustration menampung tekstur bergaya, lorekan dan peralihan warna lebih kompleks. Gaya vektor mengutamakan bentuk, palet terhad serta isian rata atau gradien ringkas.
Gaya tersuai boleh dibina daripada imej rujukan, gaya serasi sedia ada atau gabungan. Ia memberikan arah visual boleh guna semula merentas siri imej. Kawalan campuran yang didokumenkan membenarkan rujukan dan gaya sumber membawa pemberat berasingan; jumlah pemberat sepadan dengan sumber. PaletteMatch dan MaxWeight ialah dua dasar campuran disenaraikan. Pengeluar membenarkan sehingga 10 imej rujukan gaya dan menggunakan mod style-match biasa untuk V3. Gaya tersuai tersimpan dan rujukan gaya terus ialah input alternatif, dan gaya tersuai mesti sepadan dengan model yang digunakan untuk penjanaan.
Warna pilihan dan warna latar belakang memandu palet. Sehingga 10 warna RGB didokumenkan, dengan setiap komponen 0 hingga 255. Pemberat relatif pilihan berjulat 0 hingga 1; ia mesti diberikan untuk setiap warna atau tiada langsung, dan jumlahnya tidak boleh melebihi 1. Tahap artistik berjulat 0 untuk olahan statik bersih hingga 5 untuk komposisi lebih dinamik dan eksentrik. Prompt negatif menerangkan unsur tidak dikehendaki; kawalan no-text berasingan mematikan susun atur teks terbenam. Seed rawak tersedia untuk kebolehulangan. Kawalan ini memberikan tuil berbeza untuk adegan, penggayaan dan susun atur visualnya.
Imej raster dan varian SVG berasingan
Recraft mendokumenkan dua varian V3. Model raster menghasilkan WebP tanpa kehilangan atau PNG dan sesuai untuk butiran fotografi, lorekan serta ilustrasi bertekstur. Recraft V3 Vector menghasilkan SVG: laluan dan bentuk yang boleh diskalakan tanpa resolusi piksel tetap. Ia sesuai untuk piktogram, konsep logo, lencana dan karya vektor terperinci. Penukaran raster-ke-vektor ialah operasi berasingan daripada menjana karya vektor secara terus.
Kedua-dua varian mempunyai identiti sendiri. Imej berpenampilan vektor dan output SVG sebenar ialah pilihan berbeza. Pilih output dimaksudkan ketika menyediakan aliran reka bentuk tanpa menganggap nama V3 bersama membuktikan setiap operasi mengembalikan jenis fail sama.
Menyunting dan menyiapkan karya sedia ada
Dokumentasi V3 Recraft menyenaraikan penjanaan imej-ke-imej, inpainting, outpainting serta penggantian atau penjanaan latar belakang. Kerja imej-ke-imej menggabungkan imej sedia ada dengan arahan baharu. Inpainting menjana semula kawasan pilihan menggunakan imej dan topeng sepadan; outpainting menambah kandungan di luar bingkai asal. Operasi latar belakang menangani persekitaran subjek.
Set alat pengiring turut merangkumi pemadaman, pembuangan latar belakang, pemvektoran dan dua pendekatan peningkatan resolusi. Peningkatan kreatif boleh memperkenalkan butiran baharu; peningkatan tajam menyasarkan versi lebih besar dan tajam kandungan sedia ada. Ini ialah operasi berbeza dengan input serta hasil sendiri, bukannya makna tambahan nama model raster atau vektor.
Had prompt, saiz dan imej sumber
Spesifikasi penjanaan V3 pengeluar menerima prompt sehingga 1000 aksara dan 1–6 imej setiap permintaan. Ia menyokong 14 nisbah bidang: 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 dan 9:16. Contoh raster yang didokumenkan termasuk 1024x1024, 1820x1024 dan 1024x1820. Dimensi raster tepat mesti daripada senarai disokong; SVG menggunakan nisbah bidang tanpa saiz piksel tetap. Apabila saiz tidak diberikan, sistem pengeluar memilihnya daripada prompt.
Untuk operasi input imej, pengeluar menyenaraikan PNG, JPG dan WebP, dengan SVG apabila operasi tertentu membenarkannya. Fail mestilah di bawah 20 MB, tidak melebihi 16 MP, dengan sisi terpanjang paling banyak 4096 piksel. Sisi terpendek sekurang-kurangnya 256 piksel, dengan pengecualian 32 piksel untuk peningkatan tajam. Topeng sepadan dengan saiz imej dan menggunakan hitam serta putih tulen; rujukan gaya mempunyai had gabungan 64 MB.
Untuk projek Ailoot API, tukarkan tugas kepada arahan imej terarah: teks tepat, susunan objek, gaya visual dan komposisi dikehendaki. Poster, adegan produk dan siri ikon memerlukan arahan berbeza; kekalkan perbezaan varian serta operasi V3 relevan ketika menentukan cara setiap hasil akan digunakan.
Ailoot Ultra · Imej POST /v1/images/generations recraft/recraft-v3
recraft/recraft-v3Pengenalan
Recraft V3 mencipta foto, ilustrasi dan susun atur grafik dengan komposisi peka teks serta kawalan gaya. Varian raster dan SVG berbezanya sesuai untuk poster, set imej berjenama, ikon dan reka bentuk yang perkataan serta struktur visualnya perlu berfungsi bersama.
- 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-v3 | 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.08 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.08 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.08 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-v3', '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-v3', '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-v3", "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-v3
Alias laluan kaedah
/v1/images
ID pemanggil berkaitan
FAQ · Recraft: Recraft V3
- Apakah input dan hasil yang tersedia?
POST /v1/images/generations·recraft/recraft-v3:text,image→image- Apakah medan yang digunakan oleh permintaan?
POST /v1/images/generations·recraft/recraft-v3:model,prompt,n,aspect_ratio,input_references- Apakah had yang terpakai?
POST /v1/images/generations·recraft/recraft-v3:n.minimum:1;n.maximum:6