{
  "aboutHtml": "<p>Grok Imagine Image 2.0 เป็นโมเดลสร้างและแก้ไขภาพของ xAI รับคำบรรยายที่เขียนไว้ หรือคำบรรยายพร้อมภาพต้นฉบับ แล้วส่งคืนผลลัพธ์เป็นภาพ โปรไฟล์ที่ผู้ผลิตระบุชื่อว่า 2.0 ครอบคลุมการสร้างฉาก การเปลี่ยนภาพเดิม การรวมตัวแบบจากภาพอ้างอิง และการเปลี่ยนสไตล์ภาพ เริ่มจากเลือกว่าอยากได้องค์ประกอบภาพใหม่หรือปรับส่วนใดส่วนหนึ่งของชิ้นงานที่มีอยู่แล้ว</p><h4>สร้างภาพจากบรีฟ</h4><p>อธิบายตัวแบบหลัก สถานที่ องค์ประกอบ แสง และแนวทางภาพ ระบุสิ่งที่ผู้ชมควรสังเกตเป็นอันดับแรกและภาพจะนำไปใช้ที่ใด สำหรับแนวคิดผลิตภัณฑ์ ตัวอย่างบรีฟอาจอธิบายโคมไฟตั้งโต๊ะเซรามิกบนโต๊ะหินสีอ่อน แสงหน้าต่างนุ่มนวล มุมมองระยะใกล้ที่เห็นวัสดุ และพื้นที่ว่างสำหรับพาดหัวที่วางแยกต่างหาก สำหรับภาพประกอบ ให้ระบุตัวละคร การกระทำ และสุนทรียะที่ต้องการ แทนการคาดหวังว่าคำเรียกสไตล์เพียงคำเดียวจะกำหนดทั้งฉากได้</p><p>ผู้ผลิตระบุว่าสร้างผลลัพธ์ได้หนึ่งถึงสิบภาพต่อคำขอ โดยค่าเริ่มต้นคือหนึ่งภาพ ผลลัพธ์หลายภาพจากบรีฟเดียวกันให้ตัวเลือกสำหรับพิจารณา แต่ไม่ได้รับประกันว่าตัวแบบจะเหมือนกันทุกแบบ ตรวจสอบตัวแบบ องค์ประกอบ และรายละเอียดสำคัญ แล้วเก็บเวอร์ชันที่ตรงกับบรีฟมากที่สุด เก็บบรีฟคู่กับแบบที่เลือกเพื่อให้การแก้ไขภายหลังใช้องค์ประกอบภาพที่ตั้งใจไว้</p><h4>องค์ประกอบ ความละเอียด และคุณภาพ</h4><p>คู่มือการสร้างภาพระบุการเลือกอัตราส่วนโดยอัตโนมัติหรือกำหนดอัตราส่วนเอง ตัวเลือกที่ระบุมี 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9 และ 5:2 เลือกรูปทรงให้เหมาะกับตำแหน่งที่จะใช้ เช่น สี่เหลี่ยมจัตุรัสสำหรับช่องภาพขนาดกะทัดรัด แนวตั้งสำหรับองค์ประกอบแนวตั้ง หรือแนวนอนสำหรับฉากกว้าง ระบุตัวแบบที่ต้องระวังการครอบตัดและพื้นที่ที่เลย์เอาต์ต้องใช้ แทนการพึ่งอัตราส่วนเพียงอย่างเดียว</p><p>ค่าความละเอียดในการสร้างภาพที่มีเอกสารระบุคือ 1k และ 2k โดยค่าเริ่มต้นคือ 1k คุณภาพเป็นตัวควบคุมแยกต่างหาก มีตัวเลือก low, medium และ auto ในคู่มือปัจจุบันของ xAI ค่าเริ่มต้นคือ auto ซึ่งใช้ low สำหรับการสร้างและ medium สำหรับการแก้ไข ส่วนการตั้ง low หรือ medium โดยตรงจะล็อกตัวเลือกนั้น ความละเอียดและคุณภาพจึงเป็นคนละตัวควบคุม ระบุรายละเอียดภาพที่สำคัญแล้วตรวจสอบในภาพที่ส่งคืน แทนการถือว่าค่าตั้งอย่างใดอย่างหนึ่งรับประกันความแม่นยำของตัวอักษร รูปทรง หรือการคงตัวแบบ</p><h4>แก้ไขภาพและถ่ายทอดสไตล์</h4><p>ส่งภาพที่ต้องการเปลี่ยนและอธิบายสิ่งที่ขอให้เปลี่ยนโดยอ้างถึงเนื้อหาที่เห็นในภาพ การแก้ไขเฉพาะจุดอาจขอให้เปลี่ยนผนังสีเข้มเป็นพื้นผิวปูนฉาบสีอ่อน โดยคงการจัดเฟอร์นิเจอร์ มุมกล้อง และแสงอุ่นไว้ หากต้องการเปลี่ยนสไตล์ ให้ระบุแนวทางที่ต้องการ ผู้ผลิตสาธิตสไตล์ภาพถ่าย อนิเมะ ภาพสีน้ำมัน สีน้ำ ป๊อปอาร์ต และภาพร่างดินสอ ระบุว่าส่วนใดควรคงลักษณะเดิมและส่วนใดเปลี่ยนตามสไตล์ได้</p><p>เวิร์กโฟลว์แก้ไขของผู้ผลิตรับภาพอ้างอิงต้นฉบับ ข้อมูลภาพแบบเข้ารหัส หรือรหัสไฟล์ สำหรับภาพอ้างอิงที่จัดเก็บไว้ ให้ใช้ไฟล์ PNG, JPEG หรือ WebP ที่อัปโหลดเสร็จสมบูรณ์แล้ว คู่มือยังระบุการแก้ไขต่อเนื่อง โดยใช้ผลลัพธ์ของครั้งหนึ่งเป็นข้อมูลเข้าของครั้งถัดไป วิธีนี้ช่วยพัฒนาองค์ประกอบตั้งต้นให้ตรงความต้องการยิ่งขึ้น เช่น เปลี่ยนเฟอร์นิเจอร์แล้วปรับแสงตามมา เก็บภาพต้นฉบับและภาพระหว่างทางที่เลือกไว้คู่กับแต่ละบรีฟ เพื่อให้ตรวจสอบการปรับปรุงภายหลังกับองค์ประกอบภาพที่ตั้งใจไว้ได้</p><h4>รวมภาพอ้างอิงหลายภาพ</h4><p>คู่มือการใช้หลายภาพปัจจุบันอนุญาตภาพต้นฉบับสูงสุดห้าภาพในการแก้ไขหนึ่งครั้ง อ้างถึงภาพตามลำดับที่ส่งและกำหนดบทบาทของแต่ละภาพให้ชัดเจน เช่น ใช้ตัวแบบจากภาพแรกและสภาพแวดล้อมจากภาพที่สอง โดยค่าเริ่มต้น อัตราส่วนผลลัพธ์จะตามภาพข้อมูลเข้าภาพแรก และกำหนดอัตราส่วนโดยตรงเพื่อแทนที่ได้ สำหรับแนวคิดผลิตภัณฑ์ในห้อง ให้อธิบายตำแหน่ง ขนาด และการสัมผัสพื้นผิวของห้อง แล้วขอให้คงรายละเอียดที่ระบุตัวผลิตภัณฑ์ ตรวจสอบวิธีรวมต้นฉบับ แทนการสมมติว่าทุกองค์ประกอบถูกคัดลอกโดยไม่มีการเปลี่ยนแปลง</p><h4>รับและเก็บภาพ</h4><p>โดยค่าเริ่มต้น ผู้ผลิตส่งคืนที่อยู่ภาพชั่วคราว และมีเอกสารระบุผลลัพธ์แบบข้อมูลภาพเข้ารหัสด้วย เก็บไฟล์ภาพจริงทันทีเมื่อต้องใช้เป็นชิ้นงาน เวิร์กโฟลว์แบบรอผลภายหลังที่เลือกใช้ได้แยกการตอบรับคำขอออกจากการเสร็จสิ้น โดยใช้รหัสคำขอตามด้วยสถานะ pending, done หรือ failed ผลลัพธ์แบบรอภายหลังใช้รูปแบบที่อยู่ภาพและมีระยะเก็บรักษาตามเอกสาร 24 ชั่วโมง การส่งคำขอแล้วหรือสถานะ pending ยังไม่ใช่ภาพที่เสร็จแล้ว เก็บภาพที่เสร็จพร้อมบรีฟและค่าตั้งที่เลือกไว้เพื่อใช้ซ้ำภายหลัง</p><p>ชิ้นงานสุดท้ายที่มีประโยชน์คือภาพที่ตรงกับฉาก เลย์เอาต์ หรือบรีฟการแก้ไขที่กำหนด ตรวจสอบทั้งองค์ประกอบภาพและรายละเอียดเล็ก ๆ โดยเฉพาะตัวแบบต้นฉบับ ขอบวัตถุ สัดส่วน และตัวอักษรที่มีความหมาย สำหรับงานที่ทำหลายรอบ ให้เปลี่ยนคำสั่งส่วนที่สัมพันธ์กับปัญหาที่มองเห็น แล้วใช้ผลลัพธ์ที่เลือกเป็นภาพอ้างอิงถัดไป เขียนการเปลี่ยนแปลงและสิ่งที่ต้องคงไว้ให้เป็นรูปธรรม เพื่อประเมินแต่ละผลลัพธ์ตามเป้าหมายสร้างสรรค์ที่ชัดเจนได้</p>",
  "aboutText": "Grok Imagine Image 2.0 เป็นโมเดลสร้างและแก้ไขภาพของ xAI รับคำบรรยายที่เขียนไว้ หรือคำบรรยายพร้อมภาพต้นฉบับ แล้วส่งคืนผลลัพธ์เป็นภาพ โปรไฟล์ที่ผู้ผลิตระบุชื่อว่า 2.0 ครอบคลุมการสร้างฉาก การเปลี่ยนภาพเดิม การรวมตัวแบบจากภาพอ้างอิง และการเปลี่ยนสไตล์ภาพ เริ่มจากเลือกว่าอยากได้องค์ประกอบภาพใหม่หรือปรับส่วนใดส่วนหนึ่งของชิ้นงานที่มีอยู่แล้ว\n\n### สร้างภาพจากบรีฟ\n\nอธิบายตัวแบบหลัก สถานที่ องค์ประกอบ แสง และแนวทางภาพ ระบุสิ่งที่ผู้ชมควรสังเกตเป็นอันดับแรกและภาพจะนำไปใช้ที่ใด สำหรับแนวคิดผลิตภัณฑ์ ตัวอย่างบรีฟอาจอธิบายโคมไฟตั้งโต๊ะเซรามิกบนโต๊ะหินสีอ่อน แสงหน้าต่างนุ่มนวล มุมมองระยะใกล้ที่เห็นวัสดุ และพื้นที่ว่างสำหรับพาดหัวที่วางแยกต่างหาก สำหรับภาพประกอบ ให้ระบุตัวละคร การกระทำ และสุนทรียะที่ต้องการ แทนการคาดหวังว่าคำเรียกสไตล์เพียงคำเดียวจะกำหนดทั้งฉากได้\n\nผู้ผลิตระบุว่าสร้างผลลัพธ์ได้หนึ่งถึงสิบภาพต่อคำขอ โดยค่าเริ่มต้นคือหนึ่งภาพ ผลลัพธ์หลายภาพจากบรีฟเดียวกันให้ตัวเลือกสำหรับพิจารณา แต่ไม่ได้รับประกันว่าตัวแบบจะเหมือนกันทุกแบบ ตรวจสอบตัวแบบ องค์ประกอบ และรายละเอียดสำคัญ แล้วเก็บเวอร์ชันที่ตรงกับบรีฟมากที่สุด เก็บบรีฟคู่กับแบบที่เลือกเพื่อให้การแก้ไขภายหลังใช้องค์ประกอบภาพที่ตั้งใจไว้\n\n### องค์ประกอบ ความละเอียด และคุณภาพ\n\nคู่มือการสร้างภาพระบุการเลือกอัตราส่วนโดยอัตโนมัติหรือกำหนดอัตราส่วนเอง ตัวเลือกที่ระบุมี 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9 และ 5:2 เลือกรูปทรงให้เหมาะกับตำแหน่งที่จะใช้ เช่น สี่เหลี่ยมจัตุรัสสำหรับช่องภาพขนาดกะทัดรัด แนวตั้งสำหรับองค์ประกอบแนวตั้ง หรือแนวนอนสำหรับฉากกว้าง ระบุตัวแบบที่ต้องระวังการครอบตัดและพื้นที่ที่เลย์เอาต์ต้องใช้ แทนการพึ่งอัตราส่วนเพียงอย่างเดียว\n\nค่าความละเอียดในการสร้างภาพที่มีเอกสารระบุคือ 1k และ 2k โดยค่าเริ่มต้นคือ 1k คุณภาพเป็นตัวควบคุมแยกต่างหาก มีตัวเลือก low, medium และ auto ในคู่มือปัจจุบันของ xAI ค่าเริ่มต้นคือ auto ซึ่งใช้ low สำหรับการสร้างและ medium สำหรับการแก้ไข ส่วนการตั้ง low หรือ medium โดยตรงจะล็อกตัวเลือกนั้น ความละเอียดและคุณภาพจึงเป็นคนละตัวควบคุม ระบุรายละเอียดภาพที่สำคัญแล้วตรวจสอบในภาพที่ส่งคืน แทนการถือว่าค่าตั้งอย่างใดอย่างหนึ่งรับประกันความแม่นยำของตัวอักษร รูปทรง หรือการคงตัวแบบ\n\n### แก้ไขภาพและถ่ายทอดสไตล์\n\nส่งภาพที่ต้องการเปลี่ยนและอธิบายสิ่งที่ขอให้เปลี่ยนโดยอ้างถึงเนื้อหาที่เห็นในภาพ การแก้ไขเฉพาะจุดอาจขอให้เปลี่ยนผนังสีเข้มเป็นพื้นผิวปูนฉาบสีอ่อน โดยคงการจัดเฟอร์นิเจอร์ มุมกล้อง และแสงอุ่นไว้ หากต้องการเปลี่ยนสไตล์ ให้ระบุแนวทางที่ต้องการ ผู้ผลิตสาธิตสไตล์ภาพถ่าย อนิเมะ ภาพสีน้ำมัน สีน้ำ ป๊อปอาร์ต และภาพร่างดินสอ ระบุว่าส่วนใดควรคงลักษณะเดิมและส่วนใดเปลี่ยนตามสไตล์ได้\n\nเวิร์กโฟลว์แก้ไขของผู้ผลิตรับภาพอ้างอิงต้นฉบับ ข้อมูลภาพแบบเข้ารหัส หรือรหัสไฟล์ สำหรับภาพอ้างอิงที่จัดเก็บไว้ ให้ใช้ไฟล์ PNG, JPEG หรือ WebP ที่อัปโหลดเสร็จสมบูรณ์แล้ว คู่มือยังระบุการแก้ไขต่อเนื่อง โดยใช้ผลลัพธ์ของครั้งหนึ่งเป็นข้อมูลเข้าของครั้งถัดไป วิธีนี้ช่วยพัฒนาองค์ประกอบตั้งต้นให้ตรงความต้องการยิ่งขึ้น เช่น เปลี่ยนเฟอร์นิเจอร์แล้วปรับแสงตามมา เก็บภาพต้นฉบับและภาพระหว่างทางที่เลือกไว้คู่กับแต่ละบรีฟ เพื่อให้ตรวจสอบการปรับปรุงภายหลังกับองค์ประกอบภาพที่ตั้งใจไว้ได้\n\n### รวมภาพอ้างอิงหลายภาพ\n\nคู่มือการใช้หลายภาพปัจจุบันอนุญาตภาพต้นฉบับสูงสุดห้าภาพในการแก้ไขหนึ่งครั้ง อ้างถึงภาพตามลำดับที่ส่งและกำหนดบทบาทของแต่ละภาพให้ชัดเจน เช่น ใช้ตัวแบบจากภาพแรกและสภาพแวดล้อมจากภาพที่สอง โดยค่าเริ่มต้น อัตราส่วนผลลัพธ์จะตามภาพข้อมูลเข้าภาพแรก และกำหนดอัตราส่วนโดยตรงเพื่อแทนที่ได้ สำหรับแนวคิดผลิตภัณฑ์ในห้อง ให้อธิบายตำแหน่ง ขนาด และการสัมผัสพื้นผิวของห้อง แล้วขอให้คงรายละเอียดที่ระบุตัวผลิตภัณฑ์ ตรวจสอบวิธีรวมต้นฉบับ แทนการสมมติว่าทุกองค์ประกอบถูกคัดลอกโดยไม่มีการเปลี่ยนแปลง\n\n### รับและเก็บภาพ\n\nโดยค่าเริ่มต้น ผู้ผลิตส่งคืนที่อยู่ภาพชั่วคราว และมีเอกสารระบุผลลัพธ์แบบข้อมูลภาพเข้ารหัสด้วย เก็บไฟล์ภาพจริงทันทีเมื่อต้องใช้เป็นชิ้นงาน เวิร์กโฟลว์แบบรอผลภายหลังที่เลือกใช้ได้แยกการตอบรับคำขอออกจากการเสร็จสิ้น โดยใช้รหัสคำขอตามด้วยสถานะ pending, done หรือ failed ผลลัพธ์แบบรอภายหลังใช้รูปแบบที่อยู่ภาพและมีระยะเก็บรักษาตามเอกสาร 24 ชั่วโมง การส่งคำขอแล้วหรือสถานะ pending ยังไม่ใช่ภาพที่เสร็จแล้ว เก็บภาพที่เสร็จพร้อมบรีฟและค่าตั้งที่เลือกไว้เพื่อใช้ซ้ำภายหลัง\n\nชิ้นงานสุดท้ายที่มีประโยชน์คือภาพที่ตรงกับฉาก เลย์เอาต์ หรือบรีฟการแก้ไขที่กำหนด ตรวจสอบทั้งองค์ประกอบภาพและรายละเอียดเล็ก ๆ โดยเฉพาะตัวแบบต้นฉบับ ขอบวัตถุ สัดส่วน และตัวอักษรที่มีความหมาย สำหรับงานที่ทำหลายรอบ ให้เปลี่ยนคำสั่งส่วนที่สัมพันธ์กับปัญหาที่มองเห็น แล้วใช้ผลลัพธ์ที่เลือกเป็นภาพอ้างอิงถัดไป เขียนการเปลี่ยนแปลงและสิ่งที่ต้องคงไว้ให้เป็นรูปธรรม เพื่อประเมินแต่ละผลลัพธ์ตามเป้าหมายสร้างสรรค์ที่ชัดเจนได้",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "79ad6daab3792b8bc9a2e3ebea84cf2b0dff5467dc82136a6a3ca33a7d8880ee",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "th",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">x</span><h2 id=\"sheet-title\">xAI: Grok Imagine Image 2.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"ปิด\">×</button></div><div class=\"idline\"><span>xAI /</span><code>x-ai/grok-imagine-image-2.0</code><button type=\"button\" id=\"copy-id\">คัดลอก ID</button></div><nav class=\"card-jump-nav\" aria-label=\"ส่วนต่าง ๆ ของการ์ดโมเดล\"><button type=\"button\" data-card-jump=\"overview\">เริ่มต้น</button><button type=\"button\" data-card-jump=\"methods\">อินพุตและเมธอด</button><button type=\"button\" data-card-jump=\"pricing\">ราคา</button><button type=\"button\" data-card-jump=\"examples\">ตัวอย่าง</button><button type=\"button\" data-card-jump=\"results\">ผลลัพธ์</button><button type=\"button\" data-card-jump=\"aliases\">ชื่ออื่น</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"เมธอด API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|images|/v1/images/generations|x-ai%2Fgrok-imagine-image-2.0\">รูปภาพ</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">เริ่มต้น</h3><p class=\"mdesc-full\">Grok Imagine Image 2.0 สร้างภาพจากบรีฟที่เขียนไว้และแก้ไขภาพเดิมด้วยคำสั่งภาษาธรรมชาติ เอกสารของ xAI ระบุการตั้งค่าคุณภาพ ความละเอียด และองค์ประกอบภาพ การใช้ภาพอ้างอิงหลายภาพ การถ่ายทอดสไตล์ และการปรับปรุงภาพทีละรอบ</p><dl class=\"card-io\" data-card-io><div><dt>อินพุตที่รองรับ</dt><dd>ข้อความ · รูปภาพ</dd></div><div><dt>ผลลัพธ์</dt><dd>รูปภาพ</dd></div></dl><details class=\"card-about\"><summary>เกี่ยวกับโมเดล</summary><p class=\"note-s\" data-model-method-boundary>คำอธิบายนี้ครอบคลุมความสามารถของโมเดล อินพุต เอาต์พุต และตัวเลือกที่ใช้ได้ใน Ailoot แสดงด้านล่างตามเมธอดที่เลือก</p><div class=\"mabout\" id=\"m-about\"><p>Grok Imagine Image 2.0 เป็นโมเดลสร้างและแก้ไขภาพของ xAI รับคำบรรยายที่เขียนไว้ หรือคำบรรยายพร้อมภาพต้นฉบับ แล้วส่งคืนผลลัพธ์เป็นภาพ โปรไฟล์ที่ผู้ผลิตระบุชื่อว่า 2.0 ครอบคลุมการสร้างฉาก การเปลี่ยนภาพเดิม การรวมตัวแบบจากภาพอ้างอิง และการเปลี่ยนสไตล์ภาพ เริ่มจากเลือกว่าอยากได้องค์ประกอบภาพใหม่หรือปรับส่วนใดส่วนหนึ่งของชิ้นงานที่มีอยู่แล้ว</p><h4>สร้างภาพจากบรีฟ</h4><p>อธิบายตัวแบบหลัก สถานที่ องค์ประกอบ แสง และแนวทางภาพ ระบุสิ่งที่ผู้ชมควรสังเกตเป็นอันดับแรกและภาพจะนำไปใช้ที่ใด สำหรับแนวคิดผลิตภัณฑ์ ตัวอย่างบรีฟอาจอธิบายโคมไฟตั้งโต๊ะเซรามิกบนโต๊ะหินสีอ่อน แสงหน้าต่างนุ่มนวล มุมมองระยะใกล้ที่เห็นวัสดุ และพื้นที่ว่างสำหรับพาดหัวที่วางแยกต่างหาก สำหรับภาพประกอบ ให้ระบุตัวละคร การกระทำ และสุนทรียะที่ต้องการ แทนการคาดหวังว่าคำเรียกสไตล์เพียงคำเดียวจะกำหนดทั้งฉากได้</p><p>ผู้ผลิตระบุว่าสร้างผลลัพธ์ได้หนึ่งถึงสิบภาพต่อคำขอ โดยค่าเริ่มต้นคือหนึ่งภาพ ผลลัพธ์หลายภาพจากบรีฟเดียวกันให้ตัวเลือกสำหรับพิจารณา แต่ไม่ได้รับประกันว่าตัวแบบจะเหมือนกันทุกแบบ ตรวจสอบตัวแบบ องค์ประกอบ และรายละเอียดสำคัญ แล้วเก็บเวอร์ชันที่ตรงกับบรีฟมากที่สุด เก็บบรีฟคู่กับแบบที่เลือกเพื่อให้การแก้ไขภายหลังใช้องค์ประกอบภาพที่ตั้งใจไว้</p><h4>องค์ประกอบ ความละเอียด และคุณภาพ</h4><p>คู่มือการสร้างภาพระบุการเลือกอัตราส่วนโดยอัตโนมัติหรือกำหนดอัตราส่วนเอง ตัวเลือกที่ระบุมี 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9 และ 5:2 เลือกรูปทรงให้เหมาะกับตำแหน่งที่จะใช้ เช่น สี่เหลี่ยมจัตุรัสสำหรับช่องภาพขนาดกะทัดรัด แนวตั้งสำหรับองค์ประกอบแนวตั้ง หรือแนวนอนสำหรับฉากกว้าง ระบุตัวแบบที่ต้องระวังการครอบตัดและพื้นที่ที่เลย์เอาต์ต้องใช้ แทนการพึ่งอัตราส่วนเพียงอย่างเดียว</p><p>ค่าความละเอียดในการสร้างภาพที่มีเอกสารระบุคือ 1k และ 2k โดยค่าเริ่มต้นคือ 1k คุณภาพเป็นตัวควบคุมแยกต่างหาก มีตัวเลือก low, medium และ auto ในคู่มือปัจจุบันของ xAI ค่าเริ่มต้นคือ auto ซึ่งใช้ low สำหรับการสร้างและ medium สำหรับการแก้ไข ส่วนการตั้ง low หรือ medium โดยตรงจะล็อกตัวเลือกนั้น ความละเอียดและคุณภาพจึงเป็นคนละตัวควบคุม ระบุรายละเอียดภาพที่สำคัญแล้วตรวจสอบในภาพที่ส่งคืน แทนการถือว่าค่าตั้งอย่างใดอย่างหนึ่งรับประกันความแม่นยำของตัวอักษร รูปทรง หรือการคงตัวแบบ</p><h4>แก้ไขภาพและถ่ายทอดสไตล์</h4><p>ส่งภาพที่ต้องการเปลี่ยนและอธิบายสิ่งที่ขอให้เปลี่ยนโดยอ้างถึงเนื้อหาที่เห็นในภาพ การแก้ไขเฉพาะจุดอาจขอให้เปลี่ยนผนังสีเข้มเป็นพื้นผิวปูนฉาบสีอ่อน โดยคงการจัดเฟอร์นิเจอร์ มุมกล้อง และแสงอุ่นไว้ หากต้องการเปลี่ยนสไตล์ ให้ระบุแนวทางที่ต้องการ ผู้ผลิตสาธิตสไตล์ภาพถ่าย อนิเมะ ภาพสีน้ำมัน สีน้ำ ป๊อปอาร์ต และภาพร่างดินสอ ระบุว่าส่วนใดควรคงลักษณะเดิมและส่วนใดเปลี่ยนตามสไตล์ได้</p><p>เวิร์กโฟลว์แก้ไขของผู้ผลิตรับภาพอ้างอิงต้นฉบับ ข้อมูลภาพแบบเข้ารหัส หรือรหัสไฟล์ สำหรับภาพอ้างอิงที่จัดเก็บไว้ ให้ใช้ไฟล์ PNG, JPEG หรือ WebP ที่อัปโหลดเสร็จสมบูรณ์แล้ว คู่มือยังระบุการแก้ไขต่อเนื่อง โดยใช้ผลลัพธ์ของครั้งหนึ่งเป็นข้อมูลเข้าของครั้งถัดไป วิธีนี้ช่วยพัฒนาองค์ประกอบตั้งต้นให้ตรงความต้องการยิ่งขึ้น เช่น เปลี่ยนเฟอร์นิเจอร์แล้วปรับแสงตามมา เก็บภาพต้นฉบับและภาพระหว่างทางที่เลือกไว้คู่กับแต่ละบรีฟ เพื่อให้ตรวจสอบการปรับปรุงภายหลังกับองค์ประกอบภาพที่ตั้งใจไว้ได้</p><h4>รวมภาพอ้างอิงหลายภาพ</h4><p>คู่มือการใช้หลายภาพปัจจุบันอนุญาตภาพต้นฉบับสูงสุดห้าภาพในการแก้ไขหนึ่งครั้ง อ้างถึงภาพตามลำดับที่ส่งและกำหนดบทบาทของแต่ละภาพให้ชัดเจน เช่น ใช้ตัวแบบจากภาพแรกและสภาพแวดล้อมจากภาพที่สอง โดยค่าเริ่มต้น อัตราส่วนผลลัพธ์จะตามภาพข้อมูลเข้าภาพแรก และกำหนดอัตราส่วนโดยตรงเพื่อแทนที่ได้ สำหรับแนวคิดผลิตภัณฑ์ในห้อง ให้อธิบายตำแหน่ง ขนาด และการสัมผัสพื้นผิวของห้อง แล้วขอให้คงรายละเอียดที่ระบุตัวผลิตภัณฑ์ ตรวจสอบวิธีรวมต้นฉบับ แทนการสมมติว่าทุกองค์ประกอบถูกคัดลอกโดยไม่มีการเปลี่ยนแปลง</p><h4>รับและเก็บภาพ</h4><p>โดยค่าเริ่มต้น ผู้ผลิตส่งคืนที่อยู่ภาพชั่วคราว และมีเอกสารระบุผลลัพธ์แบบข้อมูลภาพเข้ารหัสด้วย เก็บไฟล์ภาพจริงทันทีเมื่อต้องใช้เป็นชิ้นงาน เวิร์กโฟลว์แบบรอผลภายหลังที่เลือกใช้ได้แยกการตอบรับคำขอออกจากการเสร็จสิ้น โดยใช้รหัสคำขอตามด้วยสถานะ pending, done หรือ failed ผลลัพธ์แบบรอภายหลังใช้รูปแบบที่อยู่ภาพและมีระยะเก็บรักษาตามเอกสาร 24 ชั่วโมง การส่งคำขอแล้วหรือสถานะ pending ยังไม่ใช่ภาพที่เสร็จแล้ว เก็บภาพที่เสร็จพร้อมบรีฟและค่าตั้งที่เลือกไว้เพื่อใช้ซ้ำภายหลัง</p><p>ชิ้นงานสุดท้ายที่มีประโยชน์คือภาพที่ตรงกับฉาก เลย์เอาต์ หรือบรีฟการแก้ไขที่กำหนด ตรวจสอบทั้งองค์ประกอบภาพและรายละเอียดเล็ก ๆ โดยเฉพาะตัวแบบต้นฉบับ ขอบวัตถุ สัดส่วน และตัวอักษรที่มีความหมาย สำหรับงานที่ทำหลายรอบ ให้เปลี่ยนคำสั่งส่วนที่สัมพันธ์กับปัญหาที่มองเห็น แล้วใช้ผลลัพธ์ที่เลือกเป็นภาพอ้างอิงถัดไป เขียนการเปลี่ยนแปลงและสิ่งที่ต้องคงไว้ให้เป็นรูปธรรม เพื่อประเมินแต่ละผลลัพธ์ตามเป้าหมายสร้างสรรค์ที่ชัดเจนได้</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">ใช้งานได้ใน Ailoot · อินพุตและเมธอด</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · รูปภาพ</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>ขาเข้า</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>ขาออก</dt><dd><code>image</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th><th>ข้อกำหนด</th><th>ค่าและข้อจำกัด</th><th>ค่าเริ่มต้น</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>x-ai/grok-imagine-image-2.0</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>จำเป็น</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>ความยาวขั้นต่ำ: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>1K, 2K</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>1:1, 3:4, 4:3, 9:16, 16:9, 2:3, 3:2, 9:19.5, 19.5:9, 9:20, 20:9, 1:2, 2:1, auto</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">quality</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>string</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>low, medium</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>integer</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>ขั้นต่ำ: 1</div><div>สูงสุด: 1</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>array</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span><div>จำนวนรายการขั้นต่ำ: 0</div><div>จำนวนรายการสูงสุด: 3</div></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span><code>object</code></td><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>ไม่บังคับ</td><td data-cell-label=\"ค่าและข้อจำกัด\"><span class=\"card-cell-label\">ค่าและข้อจำกัด</span></td><td data-cell-label=\"ค่าเริ่มต้น\" data-default=\"unspecified\"><span class=\"card-cell-label\">ค่าเริ่มต้น</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>พารามิเตอร์และวงจรการทำงานของเมธอด</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>พารามิเตอร์</th><th>ข้อกำหนด</th></tr></thead><tbody><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>content_type</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>application/json</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>required</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>model, prompt</td></tr><tr><th data-cell-label=\"พารามิเตอร์\" scope=\"row\"><span class=\"card-cell-label\">พารามิเตอร์</span><code>material_types</code></th><td data-cell-label=\"ข้อกำหนด\"><span class=\"card-cell-label\">ข้อกำหนด</span>text, image</td></tr></tbody></table></div><p>วงจรการทำงาน: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">ราคา</h3><div class=\"card-result-process\" data-billing-basis><h5>วิธีคำนวณค่าบริการสุดท้าย</h5><p class=\"note-s\">อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก</p><dl data-price-conditions><dt>โหมดรวดเร็ว</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมดรวดเร็ว</span></dd><dt>โหมดยืดหยุ่น</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อเลือกโหมด flex</span></dd><dt>ระดับการใช้เหตุผลสูงสุด</dt><dd>ไม่ได้ระบุ <span class=\"note-s\">เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด</span></dd></dl></div><div data-declared-tariff-pricing><h4>อัตราประมาณการเพื่อเปรียบเทียบ</h4><h4>ราคาตามการตั้งค่า</h4><p class=\"note-s\">เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>การตั้งค่า</th><th>ตารางอัตราค่าบริการ</th><th>ปริมาณคาดการณ์</th><th>หน่วยคิดค่าบริการ</th><th>ค่าบริการ</th></tr></thead><tbody><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>อัตราค่าบริการโทเคนพื้นฐาน</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>อัตราพื้นฐาน</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · โทเค็นอินพุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาออก · โทเค็นเอาต์พุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การอ่านแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div><div><span>ขาเข้า · การเขียนแคช, 1 ชั่วโมง · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>—</b> <span class=\"price-unit\">/ 1K โทเค็น</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ภาพขาเข้า</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>—</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>ต่อภาพอินพุต</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาเข้า · ภาพขาเข้า · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.02</b> <span class=\"price-unit\">ต่อภาพอินพุต</span></div></td></tr><tr><th data-cell-label=\"การตั้งค่า\" scope=\"row\"><span class=\"card-cell-label\">การตั้งค่า</span>ต้นทุนการสร้างโดยประมาณ</th><td data-cell-label=\"ตารางอัตราค่าบริการ\"><span class=\"card-cell-label\">ตารางอัตราค่าบริการ</span>—</td><td data-cell-label=\"ปริมาณคาดการณ์\"><span class=\"card-cell-label\">ปริมาณคาดการณ์</span>ค่าประมาณสำหรับการสร้างหนึ่งครั้ง</td><td data-cell-label=\"หน่วยคิดค่าบริการ\"><span class=\"card-cell-label\">หน่วยคิดค่าบริการ</span>—</td><td data-cell-label=\"ค่าบริการ\"><span class=\"card-cell-label\">ค่าบริการ</span><div><span>ขาออก · ค่าใช้จ่ายในการสร้างโดยประมาณ · ประมาณการเพื่อเปรียบเทียบเท่านั้น</span> <b>$0.08</b> <span class=\"price-unit\">ประมาณการก่อนสร้าง</span></div><p class=\"note-s\">ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot กันยอดเงินประมาณการไว้ก่อนส่งคำขอ หลังได้ผลลัพธ์ จะคิดค่าบริการสุดท้ายตามการใช้งานที่วัดได้ การคิดค่าบริการแบบสตรีมใช้บันทึกการใช้งานสุดท้าย <a href=\"/docs/th/billing/reserve/\">วิธีกันยอดเงินและคิดค่าบริการสุดท้าย →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">ตัวอย่างคำขอ</h3><h4>Ailoot Ultra · รูปภาพ</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-2716-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2716-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2716-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2716-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np={&#39;model&#39;: &#39;x-ai/grok-imagine-image-2.0&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#39;}\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(&quot;No completed images; retain the full response&quot;)\n    for index, item in enumerate(items):\n        encoded=item.get(&quot;b64_json&quot;)\n        uri=item.get(&quot;url&quot;, &quot;&quot;)\n        if not encoded and uri.startswith(&quot;data:image/&quot;):\n            header, separator, encoded=uri.partition(&quot;,&quot;)\n            if not separator or &quot;;base64&quot; not in header: raise SystemExit(&quot;Unsupported image data URI&quot;)\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(&quot;https://api.ailoot.ai&quot;,uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=&quot;https&quot; or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(&quot;Invalid returned image URL&quot;)\n            owned=parsed.netloc==&quot;api.ailoot.ai&quot; and parsed.path.startswith(&quot;/v1/media/assets/&quot;) and parsed.path.endswith(&quot;/content&quot;)\n            args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,uri]\n            if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n            temporary=Path(f&quot;image-{index}.bin&quot;)\n            subprocess.run(args+[&quot;-o&quot;,str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(&quot;Image has neither bytes nor URL&quot;)\n        if not raw: raise SystemExit(&quot;Empty image result&quot;)\n        ext=&quot;png&quot; if raw.startswith(b&quot;\\x89PNG&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;svg&quot; if raw.lstrip().startswith((b&quot;&lt;svg&quot;,b&quot;&lt;?xml&quot;)) else &quot;bin&quot;\n        Path(f&quot;image-{index}.{ext}&quot;).write_bytes(raw)\n    print(&quot;Every returned image saved; complete response metadata retained&quot;)\nsave_images(json.loads(Path(&quot;result.json&quot;).read_text())[&quot;data&quot;])\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">รับและบันทึกผลลัพธ์</h3><h4>Ailoot Ultra · รูปภาพ</h4><p class=\"note-s\">ดาวน์โหลดภาพที่ส่งกลับมาทุกภาพ หรือบันทึกเนื้อหา Base64 ของภาพนั้น</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><details class=\"card-about\"><summary>การอ่านเนื้อหาแบบอื่น</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"ตัวเลือกโค้ด\"><button class=\"cg-tab\" id=\"model-code-2717-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2717-panel-0\" aria-selected=\"true\" tabindex=\"0\">อ่านไฟล์สื่อที่มีอยู่และเป็นของคุณ</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"คัดลอกโค้ด\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2717-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2717-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด</h5><p class=\"note-s\">บันทึกภาพที่สร้างเสร็จทุกภาพ โดยดึงภาพจากทุก URL ที่ส่งกลับมา หรือถอดรหัสเนื้อหา Base64</p><p class=\"note-s\">เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>เมื่อต้องตรวจสอบการตอบกลับต้นฉบับ</h5><p class=\"note-s\">เก็บ X-Client-Request-ID ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด</p></div><details class=\"card-about\" data-output-fields><summary>ฟิลด์การตอบกลับ</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>ฟิลด์</th><th>ประเภท</th></tr></thead><tbody><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr><tr><th data-cell-label=\"ฟิลด์\" scope=\"row\"><span class=\"card-cell-label\">ฟิลด์</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"ประเภท\" data-field-type><span class=\"card-cell-label\">ประเภท</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">ชื่ออื่น</h3><h4>ชื่ออื่นของโมเดล</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=x-ai%2Fgrok-imagine-image-2.0&amp;route=Ultra&amp;caller=x-ai%2Fgrok-imagine-image-2.0&amp;fmt=images\"><code>x-ai/grok-imagine-image-2.0</code></a></span></p><h4>ชื่อพาธเมธอดอื่น</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล</h4><p class=\"note-s\"><a href=\"#m=x-ai%2Fgrok-imagine-image-2.0&amp;route=Ultra&amp;caller=x-ai%2Fgrok-imagine-image-2.0&amp;fmt=images\"><code>x-ai/grok-imagine-image-2.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "x-ai/grok-imagine-image-2.0",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "x-ai/grok-imagine-image-2.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|x-ai%2Fgrok-imagine-image-2.0",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "x-ai/grok-imagine-image-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1K",
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "3:4",
                  "4:3",
                  "9:16",
                  "16:9",
                  "2:3",
                  "3:2",
                  "9:19.5",
                  "19.5:9",
                  "9:20",
                  "20:9",
                  "1:2",
                  "2:1",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "low",
                  "medium"
                ],
                "enum_known": true,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 3,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "4:3",
                    "9:16",
                    "16:9",
                    "2:3",
                    "3:2",
                    "9:19.5",
                    "19.5:9",
                    "9:20",
                    "20:9",
                    "1:2",
                    "2:1",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 3,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-image-2.0"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "quality": {
                  "enum": [
                    "low",
                    "medium"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "1K",
                    "2K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "x-ai/grok-imagine-image-2.0",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0.02",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0.02",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'x-ai/grok-imagine-image-2.0', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        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\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "รูปภาพ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0.02",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0.02",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "x-ai/grok-imagine-image-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.02",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input",
            "label": "input image",
            "native_amount_usd_per_unit": "0.02",
            "native_quantity": 1,
            "public_unit_label": "per input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "x-ai/grok-imagine-image-2.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f838ed38e7504839e1fa989416793f1f6bb8e024f33bce82538432a35b353250",
    "input_html_sha256": "b21d4a27aca824f73eee3665b98df0520a72145e329721166234a0c5aac93208",
    "private_audit_sha256": "9ae46ec998feef8f229d3b9162c08925d0f1d8b4b2132f3b8fdafdf34a309004",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/th/x-ai-grok-imagine-image-2-0/",
    "description": "Grok Imagine Image 2.0 สร้างภาพจากบรีฟที่เขียนไว้และแก้ไขภาพเดิมด้วยคำสั่งภาษาธรรมชาติ เอกสารของ xAI ระบุการตั้งค่าคุณภาพ ความละเอียด และองค์ประกอบภาพ การใช้ภาพอ้างอิงหลายภาพ การถ่ายทอดสไตล์ และการปรับปรุงภาพทีละรอบ",
    "locale": "th",
    "md_url": "https://ailoot.ai/models/th/x-ai-grok-imagine-image-2-0/index.md",
    "title": "xAI: Grok Imagine Image 2.0 — Ailoot",
    "url": "https://ailoot.ai/models/th/x-ai-grok-imagine-image-2-0/"
  },
  "rawModel": {
    "about": "Grok Imagine Image 2.0 เป็นโมเดลสร้างและแก้ไขภาพของ xAI รับคำบรรยายที่เขียนไว้ หรือคำบรรยายพร้อมภาพต้นฉบับ แล้วส่งคืนผลลัพธ์เป็นภาพ โปรไฟล์ที่ผู้ผลิตระบุชื่อว่า 2.0 ครอบคลุมการสร้างฉาก การเปลี่ยนภาพเดิม การรวมตัวแบบจากภาพอ้างอิง และการเปลี่ยนสไตล์ภาพ เริ่มจากเลือกว่าอยากได้องค์ประกอบภาพใหม่หรือปรับส่วนใดส่วนหนึ่งของชิ้นงานที่มีอยู่แล้ว\n\n### สร้างภาพจากบรีฟ\n\nอธิบายตัวแบบหลัก สถานที่ องค์ประกอบ แสง และแนวทางภาพ ระบุสิ่งที่ผู้ชมควรสังเกตเป็นอันดับแรกและภาพจะนำไปใช้ที่ใด สำหรับแนวคิดผลิตภัณฑ์ ตัวอย่างบรีฟอาจอธิบายโคมไฟตั้งโต๊ะเซรามิกบนโต๊ะหินสีอ่อน แสงหน้าต่างนุ่มนวล มุมมองระยะใกล้ที่เห็นวัสดุ และพื้นที่ว่างสำหรับพาดหัวที่วางแยกต่างหาก สำหรับภาพประกอบ ให้ระบุตัวละคร การกระทำ และสุนทรียะที่ต้องการ แทนการคาดหวังว่าคำเรียกสไตล์เพียงคำเดียวจะกำหนดทั้งฉากได้\n\nผู้ผลิตระบุว่าสร้างผลลัพธ์ได้หนึ่งถึงสิบภาพต่อคำขอ โดยค่าเริ่มต้นคือหนึ่งภาพ ผลลัพธ์หลายภาพจากบรีฟเดียวกันให้ตัวเลือกสำหรับพิจารณา แต่ไม่ได้รับประกันว่าตัวแบบจะเหมือนกันทุกแบบ ตรวจสอบตัวแบบ องค์ประกอบ และรายละเอียดสำคัญ แล้วเก็บเวอร์ชันที่ตรงกับบรีฟมากที่สุด เก็บบรีฟคู่กับแบบที่เลือกเพื่อให้การแก้ไขภายหลังใช้องค์ประกอบภาพที่ตั้งใจไว้\n\n### องค์ประกอบ ความละเอียด และคุณภาพ\n\nคู่มือการสร้างภาพระบุการเลือกอัตราส่วนโดยอัตโนมัติหรือกำหนดอัตราส่วนเอง ตัวเลือกที่ระบุมี 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2, 19.5:9, 9:19.5, 20:9, 9:20, 21:9 และ 5:2 เลือกรูปทรงให้เหมาะกับตำแหน่งที่จะใช้ เช่น สี่เหลี่ยมจัตุรัสสำหรับช่องภาพขนาดกะทัดรัด แนวตั้งสำหรับองค์ประกอบแนวตั้ง หรือแนวนอนสำหรับฉากกว้าง ระบุตัวแบบที่ต้องระวังการครอบตัดและพื้นที่ที่เลย์เอาต์ต้องใช้ แทนการพึ่งอัตราส่วนเพียงอย่างเดียว\n\nค่าความละเอียดในการสร้างภาพที่มีเอกสารระบุคือ 1k และ 2k โดยค่าเริ่มต้นคือ 1k คุณภาพเป็นตัวควบคุมแยกต่างหาก มีตัวเลือก low, medium และ auto ในคู่มือปัจจุบันของ xAI ค่าเริ่มต้นคือ auto ซึ่งใช้ low สำหรับการสร้างและ medium สำหรับการแก้ไข ส่วนการตั้ง low หรือ medium โดยตรงจะล็อกตัวเลือกนั้น ความละเอียดและคุณภาพจึงเป็นคนละตัวควบคุม ระบุรายละเอียดภาพที่สำคัญแล้วตรวจสอบในภาพที่ส่งคืน แทนการถือว่าค่าตั้งอย่างใดอย่างหนึ่งรับประกันความแม่นยำของตัวอักษร รูปทรง หรือการคงตัวแบบ\n\n### แก้ไขภาพและถ่ายทอดสไตล์\n\nส่งภาพที่ต้องการเปลี่ยนและอธิบายสิ่งที่ขอให้เปลี่ยนโดยอ้างถึงเนื้อหาที่เห็นในภาพ การแก้ไขเฉพาะจุดอาจขอให้เปลี่ยนผนังสีเข้มเป็นพื้นผิวปูนฉาบสีอ่อน โดยคงการจัดเฟอร์นิเจอร์ มุมกล้อง และแสงอุ่นไว้ หากต้องการเปลี่ยนสไตล์ ให้ระบุแนวทางที่ต้องการ ผู้ผลิตสาธิตสไตล์ภาพถ่าย อนิเมะ ภาพสีน้ำมัน สีน้ำ ป๊อปอาร์ต และภาพร่างดินสอ ระบุว่าส่วนใดควรคงลักษณะเดิมและส่วนใดเปลี่ยนตามสไตล์ได้\n\nเวิร์กโฟลว์แก้ไขของผู้ผลิตรับภาพอ้างอิงต้นฉบับ ข้อมูลภาพแบบเข้ารหัส หรือรหัสไฟล์ สำหรับภาพอ้างอิงที่จัดเก็บไว้ ให้ใช้ไฟล์ PNG, JPEG หรือ WebP ที่อัปโหลดเสร็จสมบูรณ์แล้ว คู่มือยังระบุการแก้ไขต่อเนื่อง โดยใช้ผลลัพธ์ของครั้งหนึ่งเป็นข้อมูลเข้าของครั้งถัดไป วิธีนี้ช่วยพัฒนาองค์ประกอบตั้งต้นให้ตรงความต้องการยิ่งขึ้น เช่น เปลี่ยนเฟอร์นิเจอร์แล้วปรับแสงตามมา เก็บภาพต้นฉบับและภาพระหว่างทางที่เลือกไว้คู่กับแต่ละบรีฟ เพื่อให้ตรวจสอบการปรับปรุงภายหลังกับองค์ประกอบภาพที่ตั้งใจไว้ได้\n\n### รวมภาพอ้างอิงหลายภาพ\n\nคู่มือการใช้หลายภาพปัจจุบันอนุญาตภาพต้นฉบับสูงสุดห้าภาพในการแก้ไขหนึ่งครั้ง อ้างถึงภาพตามลำดับที่ส่งและกำหนดบทบาทของแต่ละภาพให้ชัดเจน เช่น ใช้ตัวแบบจากภาพแรกและสภาพแวดล้อมจากภาพที่สอง โดยค่าเริ่มต้น อัตราส่วนผลลัพธ์จะตามภาพข้อมูลเข้าภาพแรก และกำหนดอัตราส่วนโดยตรงเพื่อแทนที่ได้ สำหรับแนวคิดผลิตภัณฑ์ในห้อง ให้อธิบายตำแหน่ง ขนาด และการสัมผัสพื้นผิวของห้อง แล้วขอให้คงรายละเอียดที่ระบุตัวผลิตภัณฑ์ ตรวจสอบวิธีรวมต้นฉบับ แทนการสมมติว่าทุกองค์ประกอบถูกคัดลอกโดยไม่มีการเปลี่ยนแปลง\n\n### รับและเก็บภาพ\n\nโดยค่าเริ่มต้น ผู้ผลิตส่งคืนที่อยู่ภาพชั่วคราว และมีเอกสารระบุผลลัพธ์แบบข้อมูลภาพเข้ารหัสด้วย เก็บไฟล์ภาพจริงทันทีเมื่อต้องใช้เป็นชิ้นงาน เวิร์กโฟลว์แบบรอผลภายหลังที่เลือกใช้ได้แยกการตอบรับคำขอออกจากการเสร็จสิ้น โดยใช้รหัสคำขอตามด้วยสถานะ pending, done หรือ failed ผลลัพธ์แบบรอภายหลังใช้รูปแบบที่อยู่ภาพและมีระยะเก็บรักษาตามเอกสาร 24 ชั่วโมง การส่งคำขอแล้วหรือสถานะ pending ยังไม่ใช่ภาพที่เสร็จแล้ว เก็บภาพที่เสร็จพร้อมบรีฟและค่าตั้งที่เลือกไว้เพื่อใช้ซ้ำภายหลัง\n\nชิ้นงานสุดท้ายที่มีประโยชน์คือภาพที่ตรงกับฉาก เลย์เอาต์ หรือบรีฟการแก้ไขที่กำหนด ตรวจสอบทั้งองค์ประกอบภาพและรายละเอียดเล็ก ๆ โดยเฉพาะตัวแบบต้นฉบับ ขอบวัตถุ สัดส่วน และตัวอักษรที่มีความหมาย สำหรับงานที่ทำหลายรอบ ให้เปลี่ยนคำสั่งส่วนที่สัมพันธ์กับปัญหาที่มองเห็น แล้วใช้ผลลัพธ์ที่เลือกเป็นภาพอ้างอิงถัดไป เขียนการเปลี่ยนแปลงและสิ่งที่ต้องคงไว้ให้เป็นรูปธรรม เพื่อประเมินแต่ละผลลัพธ์ตามเป้าหมายสร้างสรรค์ที่ชัดเจนได้",
    "alias_of": null,
    "aliases": [],
    "author": "xAI",
    "capabilities": {
      "context_length": 65536,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "ดูราคาตามการกำหนดค่าแบบครบถ้วนในรายละเอียด"
      }
    ],
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "x-ai/grok-imagine-image-2.0",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "อัตราที่แสดงใช้ประมาณการค่าใช้จ่ายก่อนการสร้างผลลัพธ์ ยอดเรียกเก็บสุดท้ายคำนวณจากค่าใช้จ่ายที่บันทึกไว้สำหรับการสร้างผลลัพธ์ครั้งเดิม ระยะเวลาของผลลัพธ์ที่วัดได้และปริมาณที่คาดการณ์ไว้ไม่ใช่ปริมาณสุดท้ายที่ใช้คิดค่าบริการ",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "เก็บ X-Client-Request-ID ที่ส่งกลับมาไว้เพื่อกระทบยอด อ่านเฉพาะค่า task_id/asset_id ที่ส่งกลับมาจริง หรืออ่านจากคลังสื่อที่เป็นของตนเอง ห้ามสร้าง URL ของงานจาก ID การดำเนินการ และห้ามส่งคำขอสร้างซ้ำเด็ดขาด"
            },
            "outputs": {
              "all_results": "เก็บการตอบกลับและส่วนหัวให้ครบถ้วน เก็บผลลัพธ์จริงทุกรายการ ตัวระบุที่ส่งกลับมาแต่เดิม และฟิลด์ข้อมูลการใช้งานทั้งหมด กู้คืนการดำเนินการเดิมโดยไม่ส่งคำขอสร้างซ้ำ",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "x-ai/grok-imagine-image-2.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1K",
                  "2K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "3:4",
                  "4:3",
                  "9:16",
                  "16:9",
                  "2:3",
                  "3:2",
                  "9:19.5",
                  "19.5:9",
                  "9:20",
                  "20:9",
                  "1:2",
                  "2:1",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "low",
                  "medium"
                ],
                "enum_known": true,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 3,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "3:4",
                    "4:3",
                    "9:16",
                    "16:9",
                    "2:3",
                    "3:2",
                    "9:19.5",
                    "19.5:9",
                    "9:20",
                    "20:9",
                    "1:2",
                    "2:1",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 3,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-image-2.0"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "quality": {
                  "enum": [
                    "low",
                    "medium"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "1K",
                    "2K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "x-ai/grok-imagine-image-2.0",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "ค่า task_id ที่ส่งกลับมาจริง หรือระเบียนในคลังสื่อ",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0.02",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0.02",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "basis": "ค่าประมาณนี้ไม่ใช่ค่าใช้จ่ายเพิ่มเติมหรืออัตราคงที่สำหรับการสร้างผลลัพธ์ที่เสร็จสมบูรณ์แล้ว",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "ต้นทุนการสร้างโดยประมาณ",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np={'model': 'x-ai/grok-imagine-image-2.0', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        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\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "รูปภาพ",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0.02",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0.02",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.08",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.08",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "x-ai/grok-imagine-image-2.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.02",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input",
            "label": "input image",
            "native_amount_usd_per_unit": "0.02",
            "native_quantity": 1,
            "public_unit_label": "per input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input"
          },
          {
            "amount": "0.08",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.08",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "x-ai/grok-imagine-image-2.0",
        "request_model_id": "x-ai/grok-imagine-image-2.0",
        "route_label": "Ultra"
      }
    ],
    "name": "xAI: Grok Imagine Image 2.0",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.08,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.08,
      "varies": false
    },
    "short": "Grok Imagine Image 2.0 สร้างภาพจากบรีฟที่เขียนไว้และแก้ไขภาพเดิมด้วยคำสั่งภาษาธรรมชาติ เอกสารของ xAI ระบุการตั้งค่าคุณภาพ ความละเอียด และองค์ประกอบภาพ การใช้ภาพอ้างอิงหลายภาพ การถ่ายทอดสไตล์ และการปรับปรุงภาพทีละรอบ"
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Grok Imagine Image 2.0 สร้างภาพจากบรีฟที่เขียนไว้และแก้ไขภาพเดิมด้วยคำสั่งภาษาธรรมชาติ เอกสารของ xAI ระบุการตั้งค่าคุณภาพ ความละเอียด และองค์ประกอบภาพ การใช้ภาพอ้างอิงหลายภาพ การถ่ายทอดสไตล์ และการปรับปรุงภาพทีละรอบ",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b54f3621e14e5c4c6de5a743cf80682559bbde2d07ff664e249be45c5c85a83f",
    "renderer_sha256": "890edb706fafafdd4f598bb324acf65fada58918b0911b97eb80e68be2ef65d9"
  },
  "sourceRevision": "47269fa59b18028990eb6bb7957d8395cc78fc25385802c0558adf657aa259b8"
}
