models

Recraft: Recraft V3

Markdown · JSON

Recraft: Recraft V3

Recraft V3 สร้างภาพถ่าย ภาพประกอบ และเลย์เอาต์กราฟิกด้วยองค์ประกอบที่เข้าใจข้อความและตัวควบคุมสไตล์ รุ่นราสเตอร์และ SVG ที่แยกกันเหมาะกับโปสเตอร์ ชุดภาพแบรนด์ ไอคอน และดีไซน์ที่ถ้อยคำกับโครงสร้างภาพต้องทำงานร่วมกัน

เกี่ยวกับโมเดล

คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก

Recraft V3 เป็นโมเดลสร้างภาพสำหรับทั้งออกแบบกราฟิก ฉากถ่าย และภาพประกอบ บรีฟที่เขียนบรรยายตัวแบบ สถานที่ และองค์ประกอบ ผลคือภาพ V3 พัฒนาการเรนเดอร์ข้อความและความสมจริงของ Recraft พร้อมคงสไตล์จากภาพตัวอย่างโดยไม่ต้องฝึกใหม่

ข้อความเป็นส่วนหนึ่งขององค์ประกอบ

V3 ทำงานกับข้อความภายในภาพ รวมข้อความยาวและตัวอักษรขนาดกลาง Recraft อธิบายขั้นเลย์เอาต์ที่วางคำและตำแหน่งก่อนสร้างภาพ สร้างเลย์เอาต์อัตโนมัติจากบรีฟหรือจัดด้วยมือในสภาพแวดล้อมออกแบบของ Recraft ได้ ช่วยเชื่อมพาดหัว ภาพประกอบ และข้อความประกอบในองค์ประกอบเดียว ผู้ผลิตยังระบุพิกัดเลย์เอาต์ข้อความโดยตรงซึ่งสัมพันธ์กับภาพแทนกริดพิกเซลตายตัว แต่ละองค์ประกอบข้อความมีคำเดียวและจุดมุมสี่จุดในพิกัด normalized: (0, 0) คือซ้ายบนและ (1, 1) คือขวาล่าง พิกัดเกินช่วงได้ ซึ่งรูปทรงจะถูกครอบตัด คำของเลย์เอาต์ข้อความโดยตรงต้องตามข้อจำกัดอักขระที่ระบุ

สำหรับโปสเตอร์หรือปก ให้ถ้อยคำตรงและบรรยายลำดับว่าบรรทัดใดเป็นหลัก อยู่ที่ไหน และภาพสนับสนุนอย่างไร ตรวจการสะกดกับระยะห่างเรนเดอร์ขณะเลือกผล

สไตล์ ชุดสี และทิศทางศิลป์

V3 มีสไตล์ภาพถ่าย ภาพประกอบ และตราสัญลักษณ์ที่คัดสรร พร้อมคลังสไตล์เวกเตอร์แยก Recraft V3 Raw เป็นสไตล์เริ่มต้นของราสเตอร์ ส่วน Vector art เป็นค่าเริ่มต้นของรุ่นเวกเตอร์ Photorealism มุ่งลักษณะภาพถ่าย ส่วน Illustration รองรับพื้นผิวมีสไตล์ แรเงา และการเปลี่ยนสีซับซ้อนกว่า สไตล์เวกเตอร์เน้นรูปทรง ชุดสีจำกัด และสีเติมเรียบหรือไล่สีง่าย

สร้างสไตล์กำหนดเองจากภาพอ้างอิง สไตล์เดิมที่เข้ากันได้ หรือผสมกันได้ ให้ทิศทางภาพใช้ซ้ำข้ามชุดภาพ ตัวควบคุมผสมตามเอกสารให้ภาพอ้างอิงและสไตล์ต้นทางมีน้ำหนักแยก จำนวนค่าน้ำหนักต้องตรงกับจำนวนแหล่งข้อมูล PaletteMatch และ MaxWeight เป็นนโยบายผสมสองแบบที่ระบุ ผู้ผลิตอนุญาตภาพอ้างอิงสไตล์สูงสุด 10 ภาพและใช้โหมดจับคู่สไตล์ regular สำหรับ V3 สไตล์กำหนดเองบันทึกกับภาพอ้างอิงสไตล์โดยตรงเป็นทางเลือก และสไตล์กำหนดเองต้องตรงโมเดลที่ใช้สร้าง

สีที่ต้องการและสีพื้นหลังชี้นำชุดสี ระบุสี RGB ได้สูงสุด 10 สี โดยแต่ละองค์ประกอบตั้งแต่ 0 ถึง 255 น้ำหนักสัมพัทธ์ตามต้องการอยู่ระหว่าง 0 ถึง 1 ต้องส่งให้ทุกสีหรือไม่ส่งเลย และผลรวมไม่เกิน 1 artistic level ตั้งแต่ 0 สำหรับแนวทางนิ่งสะอาดถึง 5 สำหรับองค์ประกอบที่มีพลังและแหวกแนวมากขึ้น negative prompt บรรยายสิ่งไม่ต้องการ ส่วน no-text แยกปิดเลย์เอาต์ข้อความฝัง มี seed สุ่มเพื่อทำซ้ำ ตัวควบคุมเหล่านี้ใช้ปรับฉาก สไตล์ และเลย์เอาต์ภาพคนละด้าน

ภาพราสเตอร์และรุ่น SVG แยก

Recraft ระบุ V3 สองรุ่น ราสเตอร์สร้าง WebP แบบไม่สูญเสียข้อมูลหรือ PNG เหมาะรายละเอียดภาพถ่าย แรเงา และภาพประกอบมีพื้นผิว Recraft V3 Vector สร้าง SVG คือพาธกับรูปทรงที่ขยายได้โดยไม่มีความละเอียดพิกเซลตายตัว เหมาะสัญลักษณ์ภาพ แนวคิดโลโก้ ตราป้าย และงานเวกเตอร์ละเอียด การแปลงราสเตอร์เป็นเวกเตอร์เป็นการทำงานแยกจากสร้างงานเวกเตอร์โดยตรง

ทั้งสองรุ่นมีเอกลักษณ์ของตน ภาพลักษณะเหมือนเวกเตอร์กับผล SVG จริงเป็นคนละตัวเลือก เลือกผลที่ตั้งใจเมื่อเตรียมเวิร์กโฟลว์ออกแบบ แทนถือชื่อ V3 ร่วมเป็นหลักฐานว่าทุกการทำงานส่งไฟล์แบบเดียวกัน

แก้ไขและเก็บงานศิลป์เดิม

เอกสาร V3 ของ Recraft ระบุ image-to-image, inpainting, outpainting และการแทนหรือสร้างพื้นหลัง งาน image-to-image รวมภาพเดิมกับบรีฟใหม่ inpainting สร้างบริเวณเลือกใหม่โดยใช้ภาพกับมาสก์ตรงกัน outpainting เพิ่มเนื้อหานอกกรอบเดิม งานพื้นหลังจัดการรอบตัวแบบ

ชุดเครื่องมือประกอบมีการลบ การลบพื้นหลัง การทำเวกเตอร์ และอัปสเกลสองแนวทาง creative upscaling เพิ่มรายละเอียดใหม่ได้ ส่วน crisp upscaling มุ่งขยายเนื้อหาเดิมให้คมขึ้น เหล่านี้เป็นการทำงานแยกที่มีข้อมูลเข้าและผลของตน แทนความหมายเพิ่มของชื่อโมเดลราสเตอร์หรือเวกเตอร์

ขีดจำกัดพรอมป์ต์ ขนาด และภาพต้นฉบับ

ข้อกำหนดสร้าง V3 ของผู้ผลิตรับพรอมป์ต์สูงสุด 1000 อักขระและ 1–6 ภาพต่อคำขอ รองรับ 14 อัตราส่วน: 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 และ 9:16 ตัวอย่างราสเตอร์ที่ระบุมี 1024x1024, 1820x1024 และ 1024x1820 ขนาดราสเตอร์ตรงต้องมาจากรายการรองรับ ส่วน SVG ใช้อัตราส่วนโดยไม่มีขนาดพิกเซลตายตัว เมื่อไม่ได้ระบุขนาด ระบบผู้ผลิตเลือกจากพรอมป์ต์

สำหรับการทำงานรับภาพ ผู้ผลิตระบุ PNG, JPG และ WebP พร้อม SVG ในการทำงานที่อนุญาต ไฟล์ต้องต่ำกว่า 20 MB ไม่ใหญ่กว่า 16 MP และด้านยาวสุดไม่เกิน 4096 พิกเซล ด้านสั้นอย่างน้อย 256 พิกเซล มีข้อยกเว้น 32 พิกเซลสำหรับ crisp upscaling มาสก์ขนาดตรงภาพและใช้ดำขาวล้วน ภาพอ้างอิงสไตล์มีขีดจำกัดรวม 64 MB

สำหรับโครงการ Ailoot API ให้แปลงงานเป็นบรีฟภาพตรงจุด ได้แก่ ข้อความตรง การจัดวัตถุ สไตล์ภาพ และองค์ประกอบที่ต้องการ โปสเตอร์ ฉากผลิตภัณฑ์ และชุดไอคอนต้องการบรีฟต่างกัน คงความแตกต่างรุ่น V3 และการทำงานที่เกี่ยวข้องเมื่อตัดสินวิธีใช้แต่ละผล

Ailoot Ultra · รูปภาพ POST /v1/images/generations recraft/recraft-v3

recraft/recraft-v3

Recraft /recraft/recraft-v3

เริ่มต้น

Recraft V3 สร้างภาพถ่าย ภาพประกอบ และเลย์เอาต์กราฟิกด้วยองค์ประกอบที่เข้าใจข้อความและตัวควบคุมสไตล์ รุ่นราสเตอร์และ SVG ที่แยกกันเหมาะกับโปสเตอร์ ชุดภาพแบรนด์ ไอคอน และดีไซน์ที่ถ้อยคำกับโครงสร้างภาพต้องทำงานร่วมกัน

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
รูปภาพ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · รูปภาพ POST /v1/images/generations
ขาเข้า
text, image
ขาออก
image
รูปแบบเอาต์พุต
ไฟล์ภาพ
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
recraft/recraft-v3
ค่าเริ่มต้น—
ฟิลด์promptประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
ความยาวขั้นต่ำ: 1
ค่าเริ่มต้น—
ฟิลด์nประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
ขั้นต่ำ: 1
สูงสุด: 6
ค่าเริ่มต้น—
ฟิลด์aspect_ratioประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
1:1, 4:3, 3:4, 16:9, 9:16, auto
ค่าเริ่มต้น—
ฟิลด์input_referencesประเภทarrayข้อกำหนดไม่บังคับค่าและข้อจำกัด
จำนวนรายการขั้นต่ำ: 0
จำนวนรายการสูงสุด: 1
ค่าเริ่มต้น—
ชุดผสมของสื่ออินพุต

สร้างภาพจากข้อความ · จำเป็น: prompt

พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์requiredข้อกำหนดmodel, prompt
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์optional_controlsข้อกำหนดaspect_ratio, n, input_references
พารามิเตอร์exact_supported_parametersข้อกำหนด{"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}}
พารามิเตอร์reference_material_ruleข้อกำหนดใช้เฉพาะภาพอ้างอิงจริงของลูกค้า โดยอยู่ภายใต้เงื่อนไขของเอนด์พอยต์ผู้ให้บริการ

ชื่ออื่นของเมธอด: /v1/images

วงจรการทำงาน: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

ใช้โมเดลที่ตรงตามที่กำหนดและฟิลด์ข้อมูลขาเข้าตามเอกสาร

เก็บการตอบกลับทั้งหมด ผลลัพธ์จริงทุกรายการ และ ID เดิมที่ส่งกลับ

ราคา

วิธีคำนวณค่าบริการสุดท้าย

อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว
ไม่ได้ระบุ เมื่อเลือกโหมดรวดเร็ว
โหมดยืดหยุ่น
ไม่ได้ระบุ เมื่อเลือกโหมด flex
ระดับการใช้เหตุผลสูงสุด
ไม่ได้ระบุ เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

อัตราประมาณการเพื่อเปรียบเทียบ

ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

การตั้งค่าตารางอัตราค่าบริการปริมาณคาดการณ์หน่วยคิดค่าบริการค่าบริการ
การตั้งค่าอัตราค่าบริการโทเคนพื้นฐานตารางอัตราค่าบริการอัตราพื้นฐานปริมาณคาดการณ์—หน่วยคิดค่าบริการ—ค่าบริการ
ขาเข้า · โทเค็นอินพุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การอ่านแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การเขียนแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
การตั้งค่าUltraตารางอัตราค่าบริการ—ปริมาณคาดการณ์—หน่วยคิดค่าบริการต่อภาพเอาต์พุตค่าบริการ
ขาออก · ภาพขาออก · ประมาณการเพื่อเปรียบเทียบเท่านั้น $0.08 ต่อภาพเอาต์พุต
การตั้งค่าต้นทุนการสร้างโดยประมาณตารางอัตราค่าบริการ—ปริมาณคาดการณ์ค่าประมาณสำหรับการสร้างหนึ่งครั้งหน่วยคิดค่าบริการ—ค่าบริการ
ขาออก · ค่าใช้จ่ายในการสร้างโดยประมาณ · ประมาณการเพื่อเปรียบเทียบเท่านั้น $0.08 ประมาณการก่อนสร้าง

ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว

Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →

รายละเอียดอัตราอ้างอิง

ตารางอัตราอ้างอิงระดับโมเดลไม่เปลี่ยนเมธอดที่เลือก ยอดประมาณการ หรือค่าบริการ การคิดค่าบริการจริงใช้อัตราของเมธอด Ailoot ที่เลือก

การตั้งค่าราคาภาพ

ราคาตามการตั้งค่า

การตั้งค่าเงื่อนไขคิดค่าบริการค่าบริการ
การตั้งค่าภาพขาออกเงื่อนไขคิดค่าบริการไม่ได้ประกาศรูปแบบราคาย่อยค่าบริการ
ขาออก · ภาพขาออก $0.08 ต่อภาพ

รายการที่เทียบเท่ากันอธิบายยอดเรียกเก็บเดียวกัน ไม่ได้เพิ่มค่าธรรมเนียมครั้งที่สอง

ตัวอย่างคำขอ

Ailoot Ultra · รูปภาพ

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-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");

รับและบันทึกผลลัพธ์

Ailoot Ultra · รูปภาพ

ดาวน์โหลดภาพที่ส่งกลับมาทุกภาพ หรือบันทึกเนื้อหา Base64 ของภาพนั้น

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

บันทึกภาพที่สร้างเสร็จทุกภาพ โดยดึงภาพจากทุก URL ที่ส่งกลับมา หรือถอดรหัสเนื้อหา Base64

เก็บข้อมูลทุกรายการและการใช้งานทั้งหมด จัดเก็บภาพจริงที่ส่งกลับทุกภาพให้เป็นของคุณ ห้ามแต่ง URL หรือ ID

เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ

หากผลลัพธ์การสร้างหรือแก้ไขภาพต้องได้รับการตรวจสอบ ให้เก็บ operation_id/X-Client-Request-ID เดิมและข้อมูลผลลัพธ์ที่ส่งกลับมาไว้ กู้คืนผลลัพธ์ที่มีอยู่และเป็นของตนเองผ่านคลังสื่อโดยใช้ค่า task_id หรือ asset_id จริง ห้ามส่งคำขอสร้าง/แก้ไขซ้ำ หรือสร้าง URL สำหรับตรวจสอบสถานะเป็นระยะจาก operation_id

ฟิลด์การตอบกลับ
ฟิลด์ประเภท
ฟิลด์createdประเภทinteger
ฟิลด์data[].urlประเภทstring
ฟิลด์data[].b64_jsonประเภทbase64 string
ฟิลด์usageประเภทobject

ชื่ออื่น

ชื่ออื่นของโมเดล

Ailoot Ultra recraft/recraft-v3

ชื่อพาธเมธอดอื่น

/v1/images

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

recraft/recraft-v3

FAQ · Recraft: Recraft V3
มีอินพุตและผลลัพธ์ใดบ้าง?

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

คำขอใช้ฟิลด์ใดบ้าง?

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

มีข้อจำกัดใดบ้าง?

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

รายละเอียดเพิ่มเติม

เชื่อม Ailoot กับ Claude Code, OpenCode, Hermes หรือแอปของคุณ

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.

ซื้อโทเคนพร้อมส่วนลด

ส่วนลดสมาชิกสำหรับงานประจำ โค้ดโปรโมชั่นลดซื้อโทเคนสูงสุด 50%

สมาชิก
เลือกแพ็กเกจมีส่วนลดสำหรับคำขอประจำ
โค้ดลดสูงสุด 50%
ใส่โค้ดขณะซื้อ ราคาคำนวณใหม่ตามโปรโมชั่นที่ใช้
รายจ่ายในประวัติ
เก็บโมเดล โทเคน และยอดสำหรับทุกคำขอ

เลือกสมาชิก · ดูราคาโมเดล

เชื่อม API กับผลิตภัณฑ์ ที่คุณขาย

SaaS แอป และบอต ตามข้อเสนอและสัญญาอนุญาต Ailoot หากขายต่อให้ขอใบอนุญาตรีเซลเลอร์

แอปเชิงพาณิชย์
ใส่การสร้างข้อความ ภาพ วิดีโอ และเสียงในฟีเจอร์เสียเงินของบริการคุณ
ใบอนุญาตรีเซลเลอร์
ส่งคำอธิบายโครงการและรูปแบบการเข้าถึง ขอเงื่อนไขใช้และขายต่อเป็นลายลักษณ์อักษร
เอกสารบนเว็บไซต์
อ่านข้อเสนอ สัญญาอนุญาต และนโยบายประมวลผลข้อมูลก่อนเชื่อมได้

ขอใบอนุญาตขายต่อ · ข้อเสนอและสัญญาอนุญาต