Recraft: Recraft V4.1 Flash
Recraft V4.1 Flash menjana imej raster 1K daripada teks untuk lelaran visual pantas. Ia menyokong fotografi, potret, adegan kompleks dan konsep logo, dengan output PNG atau WebP tanpa kehilangan serta pilihan warna eksplisit.
Tentang model
Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.
Recraft V4.1 Flash ialah model teks-ke-imej Recraft untuk lelaran pantas dan kerja visual berskala tinggi. Pengeluar mengenal pasti fotografi, potret, suasana, adegan kompleks, media campuran dan konsep logo sebagai kegunaan kuat. Arahan bertulis menjadi imej raster yang boleh dibandingkan dengan arah kreatif lain sebelum aset akhir dibangunkan. Flash ialah anggota khusus keluarga V4.1, dengan saiz output dan kawalan disokong sendiri.
Output natif berada dalam kelas imej raster 1K Recraft. Pilih kanvas berdasarkan tempat penggunaan dimaksudkan: ilustrasi mendatar untuk pengepala halaman, potret menegak atau visual segi empat sama untuk kad padat. Format output ialah WebP tanpa kehilangan dan PNG.
Mulakan arahan dengan subjek utama dan tujuan visual, kemudian huraikan pembingkaian, latar, pencahayaan dan medium. Untuk konsep produk, arahan berguna ialah: “Radio kompak berwarna krim di atas meja walnut, pandangan hadapan tiga suku, cahaya tingkap lembut, foto editorial tenang, ruang kosong luas di sebelah kiri.” Untuk ilustrasi, kenal pasti bahasa bentuk, palet dan hubungan antara unsur. Nyatakan butiran penentu idea secara eksplisit tanpa menambah kata sifat tidak berkaitan. Peruntukan prompt Flash yang didokumenkan ialah sehingga 10,000 aksara, jadi adegan terperinci boleh diterangkan apabila tugas memerlukannya.
Kawalan pengeluar merangkumi warna pilihan dan warna latar belakang dikehendaki. Seed boleh diberikan untuk hasil boleh ulang, dan antara muka penjanaannya mendokumenkan satu hingga enam imej dalam satu permintaan. Kawalan ini menyokong tugas perbandingan berguna: kekalkan subjek dan komposisi, ubah satu arah visual dan semak imej hasil untuk susun atur dimaksudkan. Pilihan warna menerangkan hasil diminta; bandingkan warna jenama penting dengan aset siap sebelum menggabungkannya dengan sistem reka bentuk sedia ada.
Flash menghasilkan grafik raster. Konsep logo boleh membantu memilih siluet, suasana atau susunan, sementara laluan boleh sunting milik model Vector bernama berasingan. Flash juga tidak mempunyai varian Pro. Rangkaian penuh V4.1 menyediakan pilihan berasingan itu apabila penyuntingan vektor atau butiran resolusi lebih tinggi menjadi teras hasil. Pengeluar menerangkan langkah penambahbaikan kemudian untuk membawa draf pilihan ke imej lebih terperinci; langkah itu ialah operasi berbeza, bukannya saiz output natif Flash lain.
Edisi ini tidak menyokong input imej-ke-imej, gaya tersuai, pengecam gaya, padanan gaya atau imej rujukan gaya. Antara muka yang didokumenkan turut mengecualikan prompt negatif dan kawalan susun atur teks eksplisit. Masukkan rupa dan komposisi diminta dalam arahan positif. Apabila tulisan menjadi sebahagian konsep, apit perkataan dimaksudkan dengan tanda petikan dan periksa huruf terpapar; gunakan peringkat susun atur berasingan apabila tipografi serta kedudukan tepat penting.
Hasil praktikal Flash ialah arah visual pilihan dengan arahan jelas, nisbah bidang sesuai dan fail raster boleh guna. Bandingkan subjek, pembingkaian, latar belakang dan butiran penting pada saiz imej akan muncul. Simpan prompt berjaya bersama fail pilihan supaya langkah kreatif seterusnya mengikuti arah terpilih. Lelaran pantas membantu menerokai reka bentuk; output vektor natif, padanan gaya rujukan dan resolusi edisi V4.1 lain kekal pilihan model berasingan.
Ailoot Ultra · Imej POST /v1/images/generations recraft/recraft-v4.1-flash
recraft/recraft-v4.1-flashPengenalan
Recraft V4.1 Flash menjana imej raster 1K daripada teks untuk lelaran visual pantas. Ia menyokong fotografi, potret, adegan kompleks dan konsep logo, dengan output PNG atau WebP tanpa kehilangan serta pilihan warna eksplisit.
- Input yang diterima
- Teks
- Hasil
- Imej
Tersedia di Ailoot · input & kaedah
Ailoot Ultra · Imej POST /v1/images/generations
- Input
text- Output
image- Format output
- Fail imej
- Bilangan output
- 1 output
| Medan | Jenis | Keperluan | Nilai & had | Lalai |
|---|---|---|---|---|
Medanmodel | Jenisstring | KeperluanDiperlukan | Nilai & had recraft/recraft-v4.1-flash | Lalai— |
Medanprompt | Jenisstring | KeperluanDiperlukan | Nilai & had Panjang minimum: 1 Syarat: Prompt UTF8 yang tidak kosong. Tiada had aksara menyeluruh pengeluar direka-reka. | Lalai— |
Medann | Jenisinteger | KeperluanPilihan | Nilai & had 1 | Lalai1 |
Medanresponse_format | Jenisstring | KeperluanPilihan | Nilai & had url, b64_json | Lalai— |
Medanstream | Jenisboolean | KeperluanPilihan | Nilai & had false | Lalaifalse |
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 |
Parameteroptional | Kontrakn, response_format, stream |
Parametern | Kontrak1 |
Parameterstream | Kontrakfalse |
Parameterresponse_format | Kontrakurl, b64_json |
Parameterreference_images | Kontrakfalse |
Parameteredit | Kontrakfalse |
Parameteroutput_format_optional | Kontrak |
Parameterresolution_control | Kontraknull |
Parameteraspect_ratio_control | Kontraknull |
Parameterother_fields | Kontrakditolak kecuali penghalaan pembekal dalaman tepat yang dipinkan |
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}
Jana satu imej daripada prompt.
Simpan setiap item data; url/b64_json ialah pengekodan hasil.
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.014 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.014 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.014 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=json.loads('{"model": "recraft/recraft-v4.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"}')
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.1-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}
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.1-flash", "prompt": "A lighthouse on a cliff, watercolor", "n": 1, "response_format": "b64_json"};
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. Nyahkod setiap b64_json atau dapatkan setiap URL bertandatangan yang dikembalikan. Pilih sambungan nama fail berdasarkan MIME/bait sebenar.
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 |
Ralat dan langkah seterusnya
| Respons | Syarat | Langkah seterusnya |
|---|---|---|
Respons400 · invalid_request_error | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |
Responsserver_error | SyaratRespons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakan | Langkah seterusnyaSimpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan. |
Alias
Alias model
Ailoot Ultra recraft/recraft-v4.1-flash
Alias laluan kaedah
Gunakan laluan kaedah yang dipaparkan di atas.
ID pemanggil berkaitan
FAQ · Recraft: Recraft V4.1 Flash
- Apakah input dan hasil yang tersedia?
POST /v1/images/generations·recraft/recraft-v4.1-flash:text→image- Apakah medan yang digunakan oleh permintaan?
POST /v1/images/generations·recraft/recraft-v4.1-flash:model,prompt,n,response_format,stream