model

Recraft: Recraft V4

Markdown · JSON

Recraft: Recraft V4

Recraft V4 menjana imej raster 1K dengan fokus pada komposisi, hubungan warna dan arah kreatif terperinci. Ia merangkumi ilustrasi, adegan fotorealistik dan konsep reka bentuk grafik, dengan input gaya pilihan serta 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 ialah model raster standard dalam generasi V4 Recraft. Pengeluar menekankan pertimbangan reka bentuk: komposisi seimbang, hubungan warna padu dan perincian yang menyokong niat visual. Ia boleh digunakan untuk ilustrasi bergaya, adegan fotografi dan konsep reka bentuk grafik. Gunakannya apabila arahan memerlukan imej yang menggabungkan pilihan estetika dengan ketepatan prompt, sama ada menerokai suasana daripada arah ringkas atau menetapkan susun atur disengajakan secara terperinci.

Kod model tepat ialah recraftv4. Rujukan pengeluarnya menyenaraikan output raster 1K dalam WebP tanpa kehilangan atau PNG. Imej segi empat sama ialah 1024 × 1024 piksel, 16:9 ialah 1344 × 768 dan 2:3 ialah 832 × 1280; nisbah disokong lain menggunakan dimensi sendiri. V4 Pro ialah edisi raster 2K berasingan, sementara V4 Vector dan Pro Vector mengembalikan SVG boleh sunting. Pilih varian V4 tepat untuk hasil dimaksudkan tanpa menggabungkan sifat output berbeza ini.

Panduan pengeluar membezakan prompt tafsiran ringkas daripada arah kreatif berstruktur. Frasa pendek boleh memberikan ruang menerokai bentuk, suasana dan pembingkaian. Arahan berstruktur boleh menamakan subjek, latar, pose, bahan, unsur sekunder, pencahayaan serta hierarki visual. Untuk ilustrasi naratif, huraikan penunggang basikal menyeberangi jambatan kecil, bentuk ringkas berani, warna hangat redup dan gerakan kiri-ke-kanan jelas. Keputusan kandungan serta komposisi ini lebih boleh dilaksanakan daripada senarai panjang kata sifat gaya tidak berkaitan.

Julat V4 merangkumi ilustrasi, imejan berdimensi dan visual fotorealistik. Panduan mengesyorkan penerangan logik lukisan untuk ilustrasi serta bahan, cahaya, kamera dan kedalaman untuk imej kelihatan 3D. Hasil terakhir itu kekal visual raster, bukannya mesh boleh sunting. Untuk konsep poster atau bungkusan, nyatakan perkataan utama, kedudukannya dan cara imej serta tipografi berinteraksi. Pengeluar menonjolkan teks pendek dan sederhana yang boleh dibaca; periksa perkataan serta susunan sebenar dalam imej dikembalikan sebelum menggunakannya.

Penjanaan menyokong prompt sehingga 10,000 aksara, seed rawak, satu hingga enam output, warna pilihan dan warna latar belakang dikehendaki. Gaya tersuai serasi serta imej rujukan pilihan boleh memandu olahan visual melalui padanan fleksibel atau tepat. Pilih rujukan bersih atau set dalam satu dunia visual, kemudian biarkan prompt menerangkan subjek dan adegan baharu. Padanan warna antara rujukan dan output tidak dijamin, jadi nyatakan palet diperlukan secara eksplisit dan bandingkan hasil dengannya. 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.

Operasi imej-ke-imej yang didokumenkan menggabungkan imej sedia ada dan prompt, dengan kekuatan 0 hingga 1 menentukan sejauh mana output baharu menyimpang daripada sumber. Ia tidak menerima kawalan gaya V4 dalam operasi itu. Rujukan penjanaan semasa turut mengecualikan nama gaya yang dikurasi, negative_prompt, text_layout, artistic_level dan no_text. Sediakan penerangan positif hasil dikehendaki dan nilai aset dalam komposisi sasarannya. V4 standard memberikan tafsiran reka bentuk raster terarah, dengan edisi, format dan saiz output khusus. 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

recraft/recraft-v4

Recraft /recraft/recraft-v4

Pengenalan

Recraft V4 menjana imej raster 1K dengan fokus pada komposisi, hubungan warna dan arah kreatif terperinci. Ia merangkumi ilustrasi, adegan fotorealistik dan konsep reka bentuk grafik, dengan input gaya pilihan serta 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
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
recraft/recraft-v4
Lalai—
MedanpromptJenisstringKeperluanDiperlukanNilai & had
Panjang minimum: 1
Lalai—
MedannJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Maksimum: 6
Lalai—
Medanaspect_ratioJenisstringKeperluanPilihanNilai & had
1:1, 4:3, 3:4, 16:9, 9:16, auto
Lalai—
Medaninput_referencesJenisarrayKeperluanPilihanNilai & had
Item minimum: 0
Item maksimum: 1
Lalai—
Gabungan bahan input

Teks kepada imej · Diperlukan: prompt

reference_guided_image · Diperlukan: prompt, actual image reference

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, prompt
Parametermaterial_typesKontraktext, image
Parameteroptional_controlsKontrakn, aspect_ratio, input_references
ParameternKontrak{"minimum":1,"maximum":6}
Parameterreference_imagesKontrak{"minimum":0,"maximum":1,"source":"bahan sebenar yang dibekalkan pelanggan"}
Parameterprovider_specific_optionsKontrakHanya style/controls/text_layout dalam senarai dibenarkan titik akhir tepat yang disimpan; jangan meneka bentuk struktur.

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}

Contoh yang hanya menggunakan prompt mengekalkan struktur ImageGenerationRequest rasmi.

Simpan setiap imej yang dikembalikan dan respons penuh; kuantiti output ialah kuantiti sebenar, bukan n yang diminta.

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.

KonfigurasiJadual kadarKuantiti ramalanUnit pengebilanCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasKuantiti 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
KonfigurasiUltraJadual kadar—Kuantiti ramalan—Unit pengebilanbagi setiap imej keluaranCaj
Output · imej keluaran · Anggaran untuk perbandingan sahaja $0.08 bagi setiap imej keluaran
KonfigurasiAnggaran kos penjanaanJadual kadar—Kuantiti ramalananggaran untuk satu penjanaanUnit 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

KonfigurasiSyarat pengebilanCaj
KonfigurasiImej outputSyarat 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

curlPython SDKNode.js SDK
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");

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}/content
  • GET /v1/media/assets
  • GET /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
MedanJenis
MedancreatedJenisinteger
Medandata[].urlJenisstring
Medandata[].b64_jsonJenisbase64 string
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.
Responsserver_errorSyaratRespons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakanLangkah 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

Alias laluan kaedah

/v1/images

ID pemanggil berkaitan

recraft/recraft-v4

FAQ · Recraft: Recraft V4
Apakah input dan hasil yang tersedia?

POST /v1/images/generations · recraft/recraft-v4: text, image → image

Apakah medan yang digunakan oleh permintaan?

POST /v1/images/generations · recraft/recraft-v4: model, prompt, n, aspect_ratio, input_references

Apakah had yang terpakai?

POST /v1/images/generations · recraft/recraft-v4: n.minimum: 1; n.maximum: 6

Butiran lanjut

Sambungkan Ailoot kepada Claude Code, OpenCode, Hermes atau aplikasi anda.

Syarikat dan portfolio projeknya

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

Beli token dengan diskaun.

Diskaun langganan untuk penggunaan berkala. Kod promosi — sehingga 50% bagi pembelian token.

Langganan
Pilih pelan berdiskaun untuk permintaan berkala anda.
Kod promosi sehingga 50%
Masukkan kod semasa pembelian. Harga dikira semula mengikut promosi semasa.
Perbelanjaan dalam sejarah
Model, token dan jumlah disimpan bagi setiap permintaan.

Pilih langganan · Lihat harga model

Sambungkan API kepada produk yang anda jual.

SaaS, aplikasi dan bot — di bawah tawaran rasmi serta perjanjian lesen Ailoot. Untuk jualan semula, mohon lesen penjual semula.

Aplikasi komersial
Tambahkan penjanaan teks, imej, video dan audio pada ciri berbayar perkhidmatan anda.
Lesen penjual semula
Hantar keterangan projek dan susunan akses. Minta terma penggunaan serta jualan semula secara bertulis.
Dokumen pada laman
Tawaran, perjanjian lesen dan dasar pemprosesan data tersedia sebelum sambungan.

Mohon lesen penjual semula · Tawaran dan perjanjian lesen