Recraft: Recraft V4.1 Flash
Recraft V4.1 Flash menghasilkan gambar raster 1K dari teks untuk iterasi visual cepat. Model mendukung fotografi, potret, adegan kompleks, dan konsep logo, dengan keluaran PNG atau WebP lossless serta preferensi warna eksplisit.
Tentang model
Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.
Recraft V4.1 Flash adalah model teks ke gambar Recraft untuk iterasi cepat dan pekerjaan visual bervolume tinggi. Produsen menyebut fotografi, potret, suasana, adegan kompleks, media campuran, serta konsep logo sebagai penggunaan kuat. Brief tertulis menjadi gambar raster yang dapat dibandingkan dengan arah kreatif lain sebelum aset akhir dikembangkan. Flash adalah anggota tertentu dalam keluarga V4.1, dengan ukuran keluaran dan kendali yang didukungnya sendiri.
Keluaran bawaan berada dalam kelas gambar raster 1K Recraft. Pilih kanvas berdasarkan penempatan yang dimaksud: ilustrasi horizontal untuk header halaman, potret vertikal, atau visual persegi untuk kartu ringkas. Format keluaran adalah WebP lossless dan PNG.
Mulailah brief dengan subjek utama dan tujuan visual, lalu jelaskan pembingkaian, latar, pencahayaan, dan medium. Untuk konsep produk, instruksi berguna adalah: “Radio ringkas berwarna krem di atas meja walnut, pandangan depan tiga perempat, cahaya jendela lembut, foto editorial tenang, ruang kosong luas di kiri.” Untuk ilustrasi, tentukan bahasa bentuk, palet, dan hubungan antarelemen. Nyatakan detail penentu gagasan secara eksplisit, alih-alih menambahkan kata sifat tidak berkaitan. Jatah prompt Flash yang didokumentasikan hingga 10.000 karakter, sehingga adegan terperinci dapat dijelaskan ketika tugas memerlukannya.
Kendali produsen mencakup warna pilihan dan warna latar yang diinginkan. Seed dapat diberikan untuk hasil yang dapat diulang, dan antarmuka generasinya mendokumentasikan satu hingga enam gambar dalam satu permintaan. Kendali tersebut mendukung tugas perbandingan berguna: pertahankan subjek dan komposisi, variasikan satu arah visual, lalu tinjau gambar hasil untuk tata letak yang dimaksud. Preferensi warna menjelaskan hasil yang diminta; bandingkan warna merek penting dengan aset selesai sebelum menggabungkannya dengan sistem desain yang ada.
Flash menghasilkan grafis raster. Konsep logo dapat membantu memilih siluet, suasana, atau susunan, sementara jalur yang dapat diedit dimiliki model Vector bernama terpisah. Flash juga tidak memiliki varian Pro. Lini V4.1 lengkap menyediakan pilihan terpisah itu ketika penyuntingan vektor atau detail resolusi lebih tinggi menjadi inti hasil kerja. Produsen menjelaskan tahap penyempurnaan berikutnya untuk membawa draf pilihan menuju gambar lebih terperinci; tahap tersebut merupakan operasi berbeda, bukan ukuran keluaran bawaan Flash yang berbeda.
Edisi ini tidak mendukung masukan gambar ke gambar, gaya khusus, pengenal gaya, pencocokan gaya, atau gambar referensi gaya. Antarmuka terdokumentasinya juga mengecualikan prompt negatif dan kendali tata letak teks eksplisit. Masukkan tampilan dan komposisi yang diminta dalam brief positif. Ketika huruf menjadi bagian konsep, kutip kata-kata yang dimaksud dan periksa huruf hasil rendering; gunakan tahap tata letak terpisah ketika tipografi serta penempatan tepat sangat penting.
Hasil praktis Flash adalah arah visual pilihan dengan brief jelas, rasio aspek sesuai, dan berkas raster yang dapat digunakan. Bandingkan subjek, pembingkaian, latar, dan detail penting pada ukuran tempat gambar muncul. Simpan prompt berhasil dan berkas pilihan bersama-sama agar langkah kreatif berikutnya mengikuti arah pilihan. Iterasi cepat membantu menjelajahi desain; keluaran vektor bawaan, pencocokan gaya referensi, dan resolusi edisi V4.1 lain tetap merupakan pilihan model terpisah.
Ailoot Ultra · Gambar POST /v1/images/generations recraft/recraft-v4.1-flash
recraft/recraft-v4.1-flashMulai
Recraft V4.1 Flash menghasilkan gambar raster 1K dari teks untuk iterasi visual cepat. Model mendukung fotografi, potret, adegan kompleks, dan konsep logo, dengan keluaran PNG atau WebP lossless serta preferensi warna eksplisit.
- Masukan yang diterima
- Teks
- Hasil
- Gambar
Tersedia di Ailoot · masukan & metode
Ailoot Ultra · Gambar POST /v1/images/generations
- Masukan
text- Keluaran
image- Format keluaran
- Berkas gambar
- Jumlah keluaran
- 1 keluaran
| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
|---|---|---|---|---|
Kolommodel | Jenisstring | PersyaratanWajib | Nilai & batasan recraft/recraft-v4.1-flash | Bawaan— |
Kolomprompt | Jenisstring | PersyaratanWajib | Nilai & batasan Panjang minimum: 1 Kondisi: Prompt UTF8 yang tidak kosong. Tidak dibuat batas karakter yang berlaku untuk seluruh model dari pembuat. | Bawaan— |
Kolomn | Jenisinteger | PersyaratanOpsional | Nilai & batasan 1 | Bawaan1 |
Kolomresponse_format | Jenisstring | PersyaratanOpsional | Nilai & batasan url, b64_json | Bawaan— |
Kolomstream | Jenisboolean | PersyaratanOpsional | Nilai & batasan false | Bawaanfalse |
Kombinasi bahan masukan
Teks ke gambar · Wajib: prompt
Parameter metode dan siklus hidup
| 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 perutean penyedia internal persis yang dipatok |
Siklus hidup: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · task_id aktual yang dikembalikan atau catatan pustaka media
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Buat satu gambar dari prompt.
Simpan setiap item data; url/b64_json adalah pengodean hasil.
Paket
Cara menghitung biaya akhir
Tarif yang ditampilkan memperkirakan biaya sebelum pembuatan. Biaya akhir dihitung dari biaya yang tercatat untuk proses pembuatan awal. Durasi keluaran yang terukur dan kuantitas perkiraan bukanlah kuantitas akhir yang ditagihkan.
Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.
- Mode Fast
- Tidak ditentukan Saat mode fast dipilih
- Mode Flex
- Tidak ditentukan Saat mode flex dipilih
- Upaya penalaran maksimum
- Tidak ditentukan Saat upaya penalaran maksimum menggunakan penyesuaian default
Perkiraan tarif untuk perbandingan
Harga menurut konfigurasi
Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.
| Konfigurasi | Jadwal tarif | Jumlah perkiraan | Satuan penagihan | Biaya |
|---|---|---|---|---|
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Jumlah perkiraan— | Satuan penagihan— | Biaya Masukan · Token masukan · Perkiraan hanya untuk perbandingan — / 1K token Keluaran · Token keluaran · Perkiraan hanya untuk perbandingan — / 1K token Masukan · Pembacaan cache · Perkiraan hanya untuk perbandingan — / 1K token Masukan · Penulisan cache · Perkiraan hanya untuk perbandingan — / 1K token Masukan · Penulisan cache, 1 jam · Perkiraan hanya untuk perbandingan — / 1K token |
| KonfigurasiUltra | Jadwal tarif— | Jumlah perkiraan— | Satuan penagihanper gambar keluaran | Biaya Keluaran · keluaran gambar · Perkiraan hanya untuk perbandingan $0.014 per gambar keluaran |
| KonfigurasiPerkiraan biaya pembuatan | Jadwal tarif— | Jumlah perkiraanestimasi satu kali pembuatan | Satuan penagihan— | Biaya Keluaran · Perkiraan biaya pembuatan · Perkiraan hanya untuk perbandingan $0.014 estimasi sebelum pembuatan Perkiraan ini bukan biaya tambahan maupun tarif tetap untuk proses pembuatan yang telah selesai. |
Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. Cara kerja cadangan dan penyelesaian tagihan →
Detail tarif referensi
Jadwal referensi tingkat model tidak mengubah pemilihan metode, estimasi harga, atau biaya. Biaya aktif menggunakan tarif metode Ailoot yang dipilih.
Konfigurasi harga gambar
Harga menurut konfigurasi
| Konfigurasi | Kondisi penagihan | Biaya |
|---|---|---|
| KonfigurasiGambar keluaran | Kondisi penagihanTidak ada varian harga yang dideklarasikan. | Biaya Keluaran · Gambar keluaran $0.014 per gambar Daftar yang setara menjelaskan tagihan yang sama; tidak menambahkan biaya kedua. |
Contoh permintaan
Ailoot Ultra · Gambar
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 · Gambar
Unduh setiap gambar yang dikembalikan atau simpan konten 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 gambar yang selesai; ambil setiap URL yang dikembalikan atau dekode konten Base64-nya.
Simpan setiap item data. Dekodekan setiap b64_json atau ambil data dari setiap URL bertanda tangan yang dikembalikan. Pilih ekstensi nama file berdasarkan MIME/bytes aktual.
Jika respons asli perlu diperiksa
Jika hasil pembuatan atau penyuntingan gambar perlu diperiksa, simpan operation_id/X-Client-Request-ID asli dan informasi hasil yang dikembalikan. Pulihkan hasil milik Anda yang sudah ada melalui pustaka media menggunakan nilai task_id atau asset_id aktual. Jangan mengirim ulang permintaan pembuatan/penyuntingan atau membuat URL polling dari operation_id.
Kolom respons
| Kolom | Jenis |
|---|---|
Kolomcreated | Jenisinteger |
Kolomdata[].url | Jenisstring |
Kolomdata[].b64_json | Jenisbase64 string |
Kolomusage | Jenisobject |
Kesalahan dan langkah berikutnya
| Respons | Kondisi | Langkah berikutnya |
|---|---|---|
Respons400 · invalid_request_error | KondisiBidang wajib, representasi materi, atau nilai parameter tidak valid | Langkah berikutnyaPerbaiki bidang yang ditunjukkan sebelum permintaan pembuatan baru. |
Responsserver_error | KondisiRespons yang dikembalikan menyatakan bahwa operasi atau hasil perlu diperiksa | Langkah berikutnyaSimpan ID operasi/tugas asli yang dikembalikan, header permintaan, dan respons; lanjutkan pembacaan yang didukung untuk operasi asli tersebut. Jangan kirim ulang permintaan pembuatan. |
Alias
Alias model
Ailoot Ultra recraft/recraft-v4.1-flash
Alias jalur metode
Gunakan jalur metode yang ditampilkan di atas.
ID pemanggil terkait
FAQ · Recraft: Recraft V4.1 Flash
- Input dan hasil apa yang tersedia?
POST /v1/images/generations·recraft/recraft-v4.1-flash:text→image- Kolom apa yang digunakan permintaan?
POST /v1/images/generations·recraft/recraft-v4.1-flash:model,prompt,n,response_format,stream