{
  "aboutHtml": "<h4>Minh hoạ giàu biểu cảm và phát triển sáng tạo ổn định</h4><p>Krea 2 Medium là mô hình hình ảnh Krea 2 được huấn luyện từ đầu, dành cho minh hoạ giàu biểu cảm. Krea mô tả mô hình nhỏ hơn Large và được hậu huấn luyện sâu rộng hơn, với đặc tính ổn định hơn, đặc biệt phù hợp minh hoạ, anime và hội hoạ. Medium và Large dùng chung hệ thống tuỳ chọn được công bố; khác biệt phiên bản liên quan thiết kế mô hình và xu hướng hình ảnh, thay vì loại đầu ra khác nhau.</p><p>Dùng Medium để phát triển minh hoạ biên tập, cảnh truyện, ý tưởng hội hoạ và các định hướng hình ảnh đồng bộ. Bắt đầu bằng bản yêu cầu xác định chủ thể, hành động, bối cảnh, bố cục, bảng màu và chất liệu nghệ thuật. Ví dụ: “Một người đạp xe qua cây cầu ven sông yên tĩnh lúc bình minh, minh hoạ biên tập khổ rộng, các mảng gouache xếp lớp, bóng xanh dịu và một điểm nhấn san hô, khoảng trống phía trên sông dành cho tiêu đề.” Coi khoảng trống là yêu cầu bố cục, rồi đặt kiểu chữ cuối cùng trong thiết kế hoàn thiện.</p><h4>Chuẩn bị đầu vào văn bản và ảnh</h4><p>Giao diện tạo ảnh yêu cầu câu lệnh, tỷ lệ khung hình và độ phân giải. Văn bản cung cấp cảnh và định hướng sáng tạo. Ảnh nguồn tuỳ chọn cho phép tạo ảnh từ ảnh, bắt đầu từ ảnh đó thay vì nhiễu thuần. Cường độ khử nhiễu từ 0 đến 1: 0 giữ ảnh đầu vào, 1 thay hoàn toàn và mặc định được công bố là 0.99. Dùng ảnh nguồn khi bố cục khởi đầu quan trọng, rồi mô tả cách thể hiện mới và chọn mức biến đổi cho phép.</p><p>Tham chiếu phong cách bằng ảnh tác động đến cách thể hiện thị giác riêng với ảnh nguồn. Lược đồ riêng của mô hình giới hạn chuỗi URI ảnh nguồn và tham chiếu phong cách ở 1,024 ký tự. Lược đồ riêng của Medium nhận tối đa mười tham chiếu, với ảnh hưởng riêng từ 0 đến 1 và mặc định 0.5. Chuẩn bị bộ tham chiếu nhỏ có mục đích: một ảnh có thể xác lập nét cọ, ảnh khác xác lập bảng màu hoặc ánh sáng. Nêu quan hệ dự định trong bản yêu cầu thay vì dựa vào tập hợp hỗn hợp để ngầm tạo định hướng thống nhất.</p><p>Moodboard gom các tham chiếu liên quan quanh phong cách, bảng màu, kết cấu hoặc bố cục chung. Quy trình được công bố tạo moodboard trước rồi dùng mã định danh đã có trong yêu cầu tạo ảnh. Medium nhận một moodboard, với ảnh hưởng từ 0 đến 1 và mặc định 0.23 trong lược đồ yêu cầu. Phong cách đã huấn luyện, thường là LoRA, là đầu vào riêng được chọn bằng mã định danh và cường độ từ -2 đến 2. Chọn đầu vào phù hợp công việc: ảnh nguồn mở đầu cảnh, tham chiếu gợi diện mạo, còn moodboard hoặc phong cách đã huấn luyện cung cấp định hướng dùng lại được.</p><h4>Kiểm soát diễn giải và kết quả hình ảnh</h4><p>Creativity kiểm soát việc mở rộng câu lệnh. Raw tắt mở rộng; low bám sát bản yêu cầu theo nghĩa đen hơn, còn medium và high cho phép diễn giải nhiều hơn. Lược đồ yêu cầu riêng của Medium dùng low làm mặc định. Với minh hoạ được quy định chặt, viết định hướng đầy đủ và bắt đầu bằng mức mở rộng hạn chế. Khi khám phá ban đầu, thiết lập thoáng hơn có thể phát triển ý tưởng đơn giản thành cảnh phong phú hơn.</p><p>Ba thanh trượt độc lập định hình ảnh: Intensity, Complexity và Movement. Mỗi thanh nhận số nguyên từ -100 đến 100, với 0 trung tính. Intensity chuyển cách thể hiện giữa dịu và mạnh. Complexity chuyển giữa bố cục sạch, tối giản và chi tiết dày đặc. Movement thay đổi năng lượng thị giác, cử chỉ và chuyển động gợi ra. Movement vẫn là tuỳ chọn cho ảnh tĩnh; không tạo hoạt hình hoặc đoạn video. Các thanh trượt độc lập với mở rộng câu lệnh của creativity và có thể kết hợp đầu vào tham chiếu.</p><p>Quy trình minh hoạ thực tế xác lập cảnh trước, rồi điều chỉnh bảng màu và cách thể hiện, sau đó tinh chỉnh mật độ hoặc năng lượng. Ghi lại câu lệnh, bộ tham chiếu và seed tuỳ chọn trong khi mỗi lần đổi một tuỳ chọn. Với minh hoạ ven sông, complexity thấp hơn có thể đơn giản hoá nền, còn movement cao hơn có thể gợi tư thế đạp xe sinh động hơn. Đây là các định hướng sáng tạo cần kiểm tra trong kết quả hoàn chỉnh, không phải khoá bố cục hoặc tư thế chính xác.</p><h4>Định dạng, tạo ảnh và bàn giao</h4><p>Lược đồ tạo ảnh được công bố của Medium cung cấp mức độ phân giải 1K và chín tỷ lệ khung hình: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 3:4, 2:3 và 9:16. Chọn khung dự định trước khi tạo để bản yêu cầu mô tả bố cục tương ứng. Minh hoạ vuông, cảnh truyện rộng và bìa dọc cần vị trí chủ thể chính cùng chi tiết xung quanh khác nhau.</p><p>Quy trình tạo ảnh được công bố trả về tác vụ, ban đầu có thể ở trạng thái pending. Theo dõi trạng thái đến khi hoàn tất rồi lấy các địa chỉ ảnh kết quả. Lưu ảnh đã chọn cùng bản yêu cầu, ảnh đầu vào và thiết lập điều khiển. Kiểm tra hình dáng, bàn tay hoặc vật thể nhỏ, phối cảnh, bảng màu và mọi chữ nhìn thấy trước khi đưa vào ấn phẩm hoặc chiến dịch.</p><p>Trọng tâm minh hoạ của Medium là đặc điểm hữu ích để chọn phiên bản, không phải lời hứa kết quả giống nhau qua các câu lệnh. Tham chiếu thị giác có thể định hướng phong cách mà không sao chép hoàn hảo chủ thể hoặc bố cục, còn cường độ ảnh thành ảnh thay đổi mức giữ lại ảnh khởi đầu. Dùng chỉ dẫn rõ cho yếu tố bắt buộc, kiểm tra từng đầu ra hoàn chỉnh theo bản yêu cầu và thực hiện điều chỉnh bố cục, kiểu chữ cùng sản xuất cuối cùng trong trình biên tập.</p>",
  "aboutText": "### Minh hoạ giàu biểu cảm và phát triển sáng tạo ổn định\n\nKrea 2 Medium là mô hình hình ảnh Krea 2 được huấn luyện từ đầu, dành cho minh hoạ giàu biểu cảm. Krea mô tả mô hình nhỏ hơn Large và được hậu huấn luyện sâu rộng hơn, với đặc tính ổn định hơn, đặc biệt phù hợp minh hoạ, anime và hội hoạ. Medium và Large dùng chung hệ thống tuỳ chọn được công bố; khác biệt phiên bản liên quan thiết kế mô hình và xu hướng hình ảnh, thay vì loại đầu ra khác nhau.\n\nDùng Medium để phát triển minh hoạ biên tập, cảnh truyện, ý tưởng hội hoạ và các định hướng hình ảnh đồng bộ. Bắt đầu bằng bản yêu cầu xác định chủ thể, hành động, bối cảnh, bố cục, bảng màu và chất liệu nghệ thuật. Ví dụ: “Một người đạp xe qua cây cầu ven sông yên tĩnh lúc bình minh, minh hoạ biên tập khổ rộng, các mảng gouache xếp lớp, bóng xanh dịu và một điểm nhấn san hô, khoảng trống phía trên sông dành cho tiêu đề.” Coi khoảng trống là yêu cầu bố cục, rồi đặt kiểu chữ cuối cùng trong thiết kế hoàn thiện.\n\n### Chuẩn bị đầu vào văn bản và ảnh\n\nGiao diện tạo ảnh yêu cầu câu lệnh, tỷ lệ khung hình và độ phân giải. Văn bản cung cấp cảnh và định hướng sáng tạo. Ảnh nguồn tuỳ chọn cho phép tạo ảnh từ ảnh, bắt đầu từ ảnh đó thay vì nhiễu thuần. Cường độ khử nhiễu từ 0 đến 1: 0 giữ ảnh đầu vào, 1 thay hoàn toàn và mặc định được công bố là 0.99. Dùng ảnh nguồn khi bố cục khởi đầu quan trọng, rồi mô tả cách thể hiện mới và chọn mức biến đổi cho phép.\n\nTham chiếu phong cách bằng ảnh tác động đến cách thể hiện thị giác riêng với ảnh nguồn. Lược đồ riêng của mô hình giới hạn chuỗi URI ảnh nguồn và tham chiếu phong cách ở 1,024 ký tự. Lược đồ riêng của Medium nhận tối đa mười tham chiếu, với ảnh hưởng riêng từ 0 đến 1 và mặc định 0.5. Chuẩn bị bộ tham chiếu nhỏ có mục đích: một ảnh có thể xác lập nét cọ, ảnh khác xác lập bảng màu hoặc ánh sáng. Nêu quan hệ dự định trong bản yêu cầu thay vì dựa vào tập hợp hỗn hợp để ngầm tạo định hướng thống nhất.\n\nMoodboard gom các tham chiếu liên quan quanh phong cách, bảng màu, kết cấu hoặc bố cục chung. Quy trình được công bố tạo moodboard trước rồi dùng mã định danh đã có trong yêu cầu tạo ảnh. Medium nhận một moodboard, với ảnh hưởng từ 0 đến 1 và mặc định 0.23 trong lược đồ yêu cầu. Phong cách đã huấn luyện, thường là LoRA, là đầu vào riêng được chọn bằng mã định danh và cường độ từ -2 đến 2. Chọn đầu vào phù hợp công việc: ảnh nguồn mở đầu cảnh, tham chiếu gợi diện mạo, còn moodboard hoặc phong cách đã huấn luyện cung cấp định hướng dùng lại được.\n\n### Kiểm soát diễn giải và kết quả hình ảnh\n\nCreativity kiểm soát việc mở rộng câu lệnh. Raw tắt mở rộng; low bám sát bản yêu cầu theo nghĩa đen hơn, còn medium và high cho phép diễn giải nhiều hơn. Lược đồ yêu cầu riêng của Medium dùng low làm mặc định. Với minh hoạ được quy định chặt, viết định hướng đầy đủ và bắt đầu bằng mức mở rộng hạn chế. Khi khám phá ban đầu, thiết lập thoáng hơn có thể phát triển ý tưởng đơn giản thành cảnh phong phú hơn.\n\nBa thanh trượt độc lập định hình ảnh: Intensity, Complexity và Movement. Mỗi thanh nhận số nguyên từ -100 đến 100, với 0 trung tính. Intensity chuyển cách thể hiện giữa dịu và mạnh. Complexity chuyển giữa bố cục sạch, tối giản và chi tiết dày đặc. Movement thay đổi năng lượng thị giác, cử chỉ và chuyển động gợi ra. Movement vẫn là tuỳ chọn cho ảnh tĩnh; không tạo hoạt hình hoặc đoạn video. Các thanh trượt độc lập với mở rộng câu lệnh của creativity và có thể kết hợp đầu vào tham chiếu.\n\nQuy trình minh hoạ thực tế xác lập cảnh trước, rồi điều chỉnh bảng màu và cách thể hiện, sau đó tinh chỉnh mật độ hoặc năng lượng. Ghi lại câu lệnh, bộ tham chiếu và seed tuỳ chọn trong khi mỗi lần đổi một tuỳ chọn. Với minh hoạ ven sông, complexity thấp hơn có thể đơn giản hoá nền, còn movement cao hơn có thể gợi tư thế đạp xe sinh động hơn. Đây là các định hướng sáng tạo cần kiểm tra trong kết quả hoàn chỉnh, không phải khoá bố cục hoặc tư thế chính xác.\n\n### Định dạng, tạo ảnh và bàn giao\n\nLược đồ tạo ảnh được công bố của Medium cung cấp mức độ phân giải 1K và chín tỷ lệ khung hình: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 3:4, 2:3 và 9:16. Chọn khung dự định trước khi tạo để bản yêu cầu mô tả bố cục tương ứng. Minh hoạ vuông, cảnh truyện rộng và bìa dọc cần vị trí chủ thể chính cùng chi tiết xung quanh khác nhau.\n\nQuy trình tạo ảnh được công bố trả về tác vụ, ban đầu có thể ở trạng thái pending. Theo dõi trạng thái đến khi hoàn tất rồi lấy các địa chỉ ảnh kết quả. Lưu ảnh đã chọn cùng bản yêu cầu, ảnh đầu vào và thiết lập điều khiển. Kiểm tra hình dáng, bàn tay hoặc vật thể nhỏ, phối cảnh, bảng màu và mọi chữ nhìn thấy trước khi đưa vào ấn phẩm hoặc chiến dịch.\n\nTrọng tâm minh hoạ của Medium là đặc điểm hữu ích để chọn phiên bản, không phải lời hứa kết quả giống nhau qua các câu lệnh. Tham chiếu thị giác có thể định hướng phong cách mà không sao chép hoàn hảo chủ thể hoặc bố cục, còn cường độ ảnh thành ảnh thay đổi mức giữ lại ảnh khởi đầu. Dùng chỉ dẫn rõ cho yếu tố bắt buộc, kiểm tra từng đầu ra hoàn chỉnh theo bản yêu cầu và thực hiện điều chỉnh bố cục, kiểu chữ cùng sản xuất cuối cùng trong trình biên tập.\n\n",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d8fe3f69dd13772ed9dcb80617637261c509564b4df0547dcfc83cc733a5c318",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "vi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Krea: Krea 2 Medium</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Krea /</span><code>krea/krea-2-medium</code><button type=\"button\" id=\"copy-id\">Sao chép ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Các phần của thẻ mô hình\"><button type=\"button\" data-card-jump=\"overview\">Bắt đầu</button><button type=\"button\" data-card-jump=\"methods\">Đầu vào &amp; phương thức</button><button type=\"button\" data-card-jump=\"pricing\">Bảng giá</button><button type=\"button\" data-card-jump=\"examples\">Ví dụ</button><button type=\"button\" data-card-jump=\"results\">Kết quả</button><button type=\"button\" data-card-jump=\"aliases\">Bí danh</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Phương thức 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|krea%2Fkrea-2-medium\">Ảnh</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\">Bắt đầu</h3><p class=\"mdesc-full\">Krea 2 Medium tạo minh hoạ giàu biểu cảm từ văn bản và đầu vào thị giác tuỳ chọn. Giai đoạn hậu huấn luyện mở rộng hơn hướng tới kết quả ổn định trong minh hoạ, anime và hội hoạ, với tuỳ chọn phong cách, diễn giải câu lệnh, mật độ bố cục và năng lượng thị giác.</p><dl class=\"card-io\" data-card-io><div><dt>Đầu vào được chấp nhận</dt><dd>Văn bản · Ảnh</dd></div><div><dt>Kết quả</dt><dd>Ảnh</dd></div></dl><details class=\"card-about\"><summary>Về mô hình</summary><p class=\"note-s\" data-model-method-boundary>Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.</p><div class=\"mabout\" id=\"m-about\"><h4>Minh hoạ giàu biểu cảm và phát triển sáng tạo ổn định</h4><p>Krea 2 Medium là mô hình hình ảnh Krea 2 được huấn luyện từ đầu, dành cho minh hoạ giàu biểu cảm. Krea mô tả mô hình nhỏ hơn Large và được hậu huấn luyện sâu rộng hơn, với đặc tính ổn định hơn, đặc biệt phù hợp minh hoạ, anime và hội hoạ. Medium và Large dùng chung hệ thống tuỳ chọn được công bố; khác biệt phiên bản liên quan thiết kế mô hình và xu hướng hình ảnh, thay vì loại đầu ra khác nhau.</p><p>Dùng Medium để phát triển minh hoạ biên tập, cảnh truyện, ý tưởng hội hoạ và các định hướng hình ảnh đồng bộ. Bắt đầu bằng bản yêu cầu xác định chủ thể, hành động, bối cảnh, bố cục, bảng màu và chất liệu nghệ thuật. Ví dụ: “Một người đạp xe qua cây cầu ven sông yên tĩnh lúc bình minh, minh hoạ biên tập khổ rộng, các mảng gouache xếp lớp, bóng xanh dịu và một điểm nhấn san hô, khoảng trống phía trên sông dành cho tiêu đề.” Coi khoảng trống là yêu cầu bố cục, rồi đặt kiểu chữ cuối cùng trong thiết kế hoàn thiện.</p><h4>Chuẩn bị đầu vào văn bản và ảnh</h4><p>Giao diện tạo ảnh yêu cầu câu lệnh, tỷ lệ khung hình và độ phân giải. Văn bản cung cấp cảnh và định hướng sáng tạo. Ảnh nguồn tuỳ chọn cho phép tạo ảnh từ ảnh, bắt đầu từ ảnh đó thay vì nhiễu thuần. Cường độ khử nhiễu từ 0 đến 1: 0 giữ ảnh đầu vào, 1 thay hoàn toàn và mặc định được công bố là 0.99. Dùng ảnh nguồn khi bố cục khởi đầu quan trọng, rồi mô tả cách thể hiện mới và chọn mức biến đổi cho phép.</p><p>Tham chiếu phong cách bằng ảnh tác động đến cách thể hiện thị giác riêng với ảnh nguồn. Lược đồ riêng của mô hình giới hạn chuỗi URI ảnh nguồn và tham chiếu phong cách ở 1,024 ký tự. Lược đồ riêng của Medium nhận tối đa mười tham chiếu, với ảnh hưởng riêng từ 0 đến 1 và mặc định 0.5. Chuẩn bị bộ tham chiếu nhỏ có mục đích: một ảnh có thể xác lập nét cọ, ảnh khác xác lập bảng màu hoặc ánh sáng. Nêu quan hệ dự định trong bản yêu cầu thay vì dựa vào tập hợp hỗn hợp để ngầm tạo định hướng thống nhất.</p><p>Moodboard gom các tham chiếu liên quan quanh phong cách, bảng màu, kết cấu hoặc bố cục chung. Quy trình được công bố tạo moodboard trước rồi dùng mã định danh đã có trong yêu cầu tạo ảnh. Medium nhận một moodboard, với ảnh hưởng từ 0 đến 1 và mặc định 0.23 trong lược đồ yêu cầu. Phong cách đã huấn luyện, thường là LoRA, là đầu vào riêng được chọn bằng mã định danh và cường độ từ -2 đến 2. Chọn đầu vào phù hợp công việc: ảnh nguồn mở đầu cảnh, tham chiếu gợi diện mạo, còn moodboard hoặc phong cách đã huấn luyện cung cấp định hướng dùng lại được.</p><h4>Kiểm soát diễn giải và kết quả hình ảnh</h4><p>Creativity kiểm soát việc mở rộng câu lệnh. Raw tắt mở rộng; low bám sát bản yêu cầu theo nghĩa đen hơn, còn medium và high cho phép diễn giải nhiều hơn. Lược đồ yêu cầu riêng của Medium dùng low làm mặc định. Với minh hoạ được quy định chặt, viết định hướng đầy đủ và bắt đầu bằng mức mở rộng hạn chế. Khi khám phá ban đầu, thiết lập thoáng hơn có thể phát triển ý tưởng đơn giản thành cảnh phong phú hơn.</p><p>Ba thanh trượt độc lập định hình ảnh: Intensity, Complexity và Movement. Mỗi thanh nhận số nguyên từ -100 đến 100, với 0 trung tính. Intensity chuyển cách thể hiện giữa dịu và mạnh. Complexity chuyển giữa bố cục sạch, tối giản và chi tiết dày đặc. Movement thay đổi năng lượng thị giác, cử chỉ và chuyển động gợi ra. Movement vẫn là tuỳ chọn cho ảnh tĩnh; không tạo hoạt hình hoặc đoạn video. Các thanh trượt độc lập với mở rộng câu lệnh của creativity và có thể kết hợp đầu vào tham chiếu.</p><p>Quy trình minh hoạ thực tế xác lập cảnh trước, rồi điều chỉnh bảng màu và cách thể hiện, sau đó tinh chỉnh mật độ hoặc năng lượng. Ghi lại câu lệnh, bộ tham chiếu và seed tuỳ chọn trong khi mỗi lần đổi một tuỳ chọn. Với minh hoạ ven sông, complexity thấp hơn có thể đơn giản hoá nền, còn movement cao hơn có thể gợi tư thế đạp xe sinh động hơn. Đây là các định hướng sáng tạo cần kiểm tra trong kết quả hoàn chỉnh, không phải khoá bố cục hoặc tư thế chính xác.</p><h4>Định dạng, tạo ảnh và bàn giao</h4><p>Lược đồ tạo ảnh được công bố của Medium cung cấp mức độ phân giải 1K và chín tỷ lệ khung hình: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 3:4, 2:3 và 9:16. Chọn khung dự định trước khi tạo để bản yêu cầu mô tả bố cục tương ứng. Minh hoạ vuông, cảnh truyện rộng và bìa dọc cần vị trí chủ thể chính cùng chi tiết xung quanh khác nhau.</p><p>Quy trình tạo ảnh được công bố trả về tác vụ, ban đầu có thể ở trạng thái pending. Theo dõi trạng thái đến khi hoàn tất rồi lấy các địa chỉ ảnh kết quả. Lưu ảnh đã chọn cùng bản yêu cầu, ảnh đầu vào và thiết lập điều khiển. Kiểm tra hình dáng, bàn tay hoặc vật thể nhỏ, phối cảnh, bảng màu và mọi chữ nhìn thấy trước khi đưa vào ấn phẩm hoặc chiến dịch.</p><p>Trọng tâm minh hoạ của Medium là đặc điểm hữu ích để chọn phiên bản, không phải lời hứa kết quả giống nhau qua các câu lệnh. Tham chiếu thị giác có thể định hướng phong cách mà không sao chép hoàn hảo chủ thể hoặc bố cục, còn cường độ ảnh thành ảnh thay đổi mức giữ lại ảnh khởi đầu. Dùng chỉ dẫn rõ cho yếu tố bắt buộc, kiểm tra từng đầu ra hoàn chỉnh theo bản yêu cầu và thực hiện điều chỉnh bố cục, kiểu chữ cùng sản xuất cuối cùng trong trình biên tập.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Có trên Ailoot · đầu vào &amp; phương thức</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Ảnh</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Đầu vào</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Đầu ra</dt><dd><code>image</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Trường</th><th>Loại</th><th>Yêu cầu</th><th>Giá trị &amp; giới hạn</th><th>Mặc định</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>krea/krea-2-medium</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Độ dài tối thiểu: 1</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>1K</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>string</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>1:1, 4:3, 3:2, 16:9, 4:5, 2:3, 9:16</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>array</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span><div>Số mục tối thiểu: 0</div><div>Số mục tối đa: 1</div></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>object</code></td><td data-cell-label=\"Yêu cầu\"><span class=\"card-cell-label\">Yêu cầu</span>Không bắt buộc</td><td data-cell-label=\"Giá trị &amp; giới hạn\"><span class=\"card-cell-label\">Giá trị &amp; giới hạn</span></td><td data-cell-label=\"Mặc định\" data-default=\"unspecified\"><span class=\"card-cell-label\">Mặc định</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Tham số phương thức và vòng đời</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Tham số</th><th>Hợp đồng</th></tr></thead><tbody><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>content_type</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>application/json</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>required</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>model, prompt</td></tr><tr><th data-cell-label=\"Tham số\" scope=\"row\"><span class=\"card-cell-label\">Tham số</span><code>material_types</code></th><td data-cell-label=\"Hợp đồng\"><span class=\"card-cell-label\">Hợp đồng</span>text, image</td></tr></tbody></table></div><p>Vòng đời: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện</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\">Bảng giá</h3><div class=\"card-result-process\" data-billing-basis><h5>Cách tính phí cuối cùng</h5><p class=\"note-s\">Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Thông tin biểu giá không bổ sung tùy chọn yêu cầu. Các tham số được hỗ trợ nằm trong phương thức đã chọn.</p><dl data-price-conditions><dt>Chế độ nhanh</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ nhanh</span></dd><dt>Chế độ Flex</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi chọn chế độ flex</span></dd><dt>Mức độ suy luận tối đa</dt><dd>Chưa chỉ định <span class=\"note-s\">Khi áp dụng mức điều chỉnh mặc định (default) cho mức độ suy luận tối đa</span></dd></dl></div><div data-declared-tariff-pricing><h4>Mức phí ước tính để so sánh</h4><h4>Giá theo cấu hình</h4><p class=\"note-s\">Đối chiếu từng khoản phí với điều kiện hiển thị. Dùng một mức phí cho mỗi nhóm cấu hình thay thế.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Cấu hình</th><th>Biểu mức phí</th><th>Số lượng dự báo</th><th>Phí</th></tr></thead><tbody><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>Giá cơ sở cho token</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>Mức phí cơ bản</td><td data-cell-label=\"Số lượng dự báo\"><span class=\"card-cell-label\">Số lượng dự báo</span>—</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu vào · Token đầu vào · Ước tính chỉ để so sánh</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu ra · Token đầu ra · Ước tính chỉ để so sánh</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Đọc bộ nhớ đệm · Ước tính chỉ để so sánh</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm · Ước tính chỉ để so sánh</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Đầu vào · Ghi bộ nhớ đệm, 1 giờ · Ước tính chỉ để so sánh</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Cấu hình\" scope=\"row\"><span class=\"card-cell-label\">Cấu hình</span>Chi phí tạo ước tính</th><td data-cell-label=\"Biểu mức phí\"><span class=\"card-cell-label\">Biểu mức phí</span>—</td><td data-cell-label=\"Số lượng dự báo\"><span class=\"card-cell-label\">Số lượng dự báo</span>ước tính cho một lần tạo</td><td data-cell-label=\"Phí\"><span class=\"card-cell-label\">Phí</span><div><span>Đầu ra · Chi phí tạo ước tính · Ước tính chỉ để so sánh</span> <b>$0.06</b> <span class=\"price-unit\">ước tính trước khi tạo</span></div><p class=\"note-s\">Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. <a href=\"/docs/vi/billing/reserve/\">Cách hoạt động của cơ chế tạm giữ và quyết toán →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Ví dụ yêu cầu</h3><h4>Ailoot Ultra · Ảnh</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-1775-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1775-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><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-1775-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1775-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;krea/krea-2-medium&#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\">Nhận và lưu kết quả</h3><h4>Ailoot Ultra · Ảnh</h4><p class=\"note-s\">Tải xuống từng ảnh trả về hoặc lưu nội dung Base64 của ảnh</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>Lượt đọc nội dung khác</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Các phiên bản mã\"><button class=\"cg-tab\" id=\"model-code-1776-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1776-panel-0\" aria-selected=\"true\" tabindex=\"0\">Đọc tài nguyên hiện có thuộc về bạn</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Sao chép mã\"><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-1776-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1776-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>Lưu tất cả kết quả đã hoàn tất</h5><p class=\"note-s\">Lưu mọi ảnh đã hoàn tất; truy xuất từng URL trả về hoặc giải mã nội dung Base64 của ảnh.</p><p class=\"note-s\">Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Nếu cần kiểm tra phản hồi gốc</h5><p class=\"note-s\">Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo.</p></div><details class=\"card-about\" data-output-fields><summary>Trường phản hồi</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Trường</th><th>Loại</th></tr></thead><tbody><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span></td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">data[].url</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span></td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">data[].b64_json</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span></td></tr><tr><th data-cell-label=\"Trường\" scope=\"row\"><span class=\"card-cell-label\">Trường</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Bí danh</h3><h4>Bí danh mô hình</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=krea%2Fkrea-2-medium&amp;route=Ultra&amp;caller=krea%2Fkrea-2-medium&amp;fmt=images\"><code>krea/krea-2-medium</code></a></span></p><h4>Bí danh đường dẫn phương thức</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>ID gọi liên quan</h4><p class=\"note-s\"><a href=\"#m=krea%2Fkrea-2-medium&amp;route=Ultra&amp;caller=krea%2Fkrea-2-medium&amp;fmt=images\"><code>krea/krea-2-medium</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "krea/krea-2-medium",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "krea/krea-2-medium",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|krea%2Fkrea-2-medium",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.",
          "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": "Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo."
            },
            "outputs": {
              "all_results": "Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.",
              "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": [
                  "krea/krea-2-medium"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:2",
                  "16:9",
                  "4:5",
                  "2:3",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:2",
                    "16:9",
                    "4:5",
                    "2:3",
                    "9:16"
                  ],
                  "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "krea/krea-2-medium"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "1K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "krea/krea-2-medium",
                "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": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "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"
              }
            ]
          },
          {
            "basis": "Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Chi phí tạo ước tính",
            "units": [
              {
                "amount": "0.06",
                "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.06",
                "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': 'krea/krea-2-medium', '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": "Ảnh",
        "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"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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": "krea/krea-2-medium",
        "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.06",
            "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.06",
            "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": "krea/krea-2-medium",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "c8b2393cadebf86d4b0f147857a89b0fe957bf0638d9f3ac5095fae29278b225",
    "input_html_sha256": "14b07aee39e5ba62365ff3447468e85832375f4a7ab4007b10aac331bc02213b",
    "private_audit_sha256": "3941017a34cd24fe08cac9e3634661b9a761a46cef45655b84364259996ff5dc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/krea-krea-2-medium/",
    "description": "Krea 2 Medium tạo minh hoạ giàu biểu cảm từ văn bản và đầu vào thị giác tuỳ chọn. Giai đoạn hậu huấn luyện mở rộng hơn hướng tới kết quả ổn định trong minh hoạ, anime và hội hoạ, với tuỳ chọn phong cách, diễn giải câu lệnh, mật độ bố cục và năng lượng thị giác.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/krea-krea-2-medium/index.md",
    "title": "Krea: Krea 2 Medium — Ailoot",
    "url": "https://ailoot.ai/models/vi/krea-krea-2-medium/"
  },
  "rawModel": {
    "about": "### Minh hoạ giàu biểu cảm và phát triển sáng tạo ổn định\n\nKrea 2 Medium là mô hình hình ảnh Krea 2 được huấn luyện từ đầu, dành cho minh hoạ giàu biểu cảm. Krea mô tả mô hình nhỏ hơn Large và được hậu huấn luyện sâu rộng hơn, với đặc tính ổn định hơn, đặc biệt phù hợp minh hoạ, anime và hội hoạ. Medium và Large dùng chung hệ thống tuỳ chọn được công bố; khác biệt phiên bản liên quan thiết kế mô hình và xu hướng hình ảnh, thay vì loại đầu ra khác nhau.\n\nDùng Medium để phát triển minh hoạ biên tập, cảnh truyện, ý tưởng hội hoạ và các định hướng hình ảnh đồng bộ. Bắt đầu bằng bản yêu cầu xác định chủ thể, hành động, bối cảnh, bố cục, bảng màu và chất liệu nghệ thuật. Ví dụ: “Một người đạp xe qua cây cầu ven sông yên tĩnh lúc bình minh, minh hoạ biên tập khổ rộng, các mảng gouache xếp lớp, bóng xanh dịu và một điểm nhấn san hô, khoảng trống phía trên sông dành cho tiêu đề.” Coi khoảng trống là yêu cầu bố cục, rồi đặt kiểu chữ cuối cùng trong thiết kế hoàn thiện.\n\n### Chuẩn bị đầu vào văn bản và ảnh\n\nGiao diện tạo ảnh yêu cầu câu lệnh, tỷ lệ khung hình và độ phân giải. Văn bản cung cấp cảnh và định hướng sáng tạo. Ảnh nguồn tuỳ chọn cho phép tạo ảnh từ ảnh, bắt đầu từ ảnh đó thay vì nhiễu thuần. Cường độ khử nhiễu từ 0 đến 1: 0 giữ ảnh đầu vào, 1 thay hoàn toàn và mặc định được công bố là 0.99. Dùng ảnh nguồn khi bố cục khởi đầu quan trọng, rồi mô tả cách thể hiện mới và chọn mức biến đổi cho phép.\n\nTham chiếu phong cách bằng ảnh tác động đến cách thể hiện thị giác riêng với ảnh nguồn. Lược đồ riêng của mô hình giới hạn chuỗi URI ảnh nguồn và tham chiếu phong cách ở 1,024 ký tự. Lược đồ riêng của Medium nhận tối đa mười tham chiếu, với ảnh hưởng riêng từ 0 đến 1 và mặc định 0.5. Chuẩn bị bộ tham chiếu nhỏ có mục đích: một ảnh có thể xác lập nét cọ, ảnh khác xác lập bảng màu hoặc ánh sáng. Nêu quan hệ dự định trong bản yêu cầu thay vì dựa vào tập hợp hỗn hợp để ngầm tạo định hướng thống nhất.\n\nMoodboard gom các tham chiếu liên quan quanh phong cách, bảng màu, kết cấu hoặc bố cục chung. Quy trình được công bố tạo moodboard trước rồi dùng mã định danh đã có trong yêu cầu tạo ảnh. Medium nhận một moodboard, với ảnh hưởng từ 0 đến 1 và mặc định 0.23 trong lược đồ yêu cầu. Phong cách đã huấn luyện, thường là LoRA, là đầu vào riêng được chọn bằng mã định danh và cường độ từ -2 đến 2. Chọn đầu vào phù hợp công việc: ảnh nguồn mở đầu cảnh, tham chiếu gợi diện mạo, còn moodboard hoặc phong cách đã huấn luyện cung cấp định hướng dùng lại được.\n\n### Kiểm soát diễn giải và kết quả hình ảnh\n\nCreativity kiểm soát việc mở rộng câu lệnh. Raw tắt mở rộng; low bám sát bản yêu cầu theo nghĩa đen hơn, còn medium và high cho phép diễn giải nhiều hơn. Lược đồ yêu cầu riêng của Medium dùng low làm mặc định. Với minh hoạ được quy định chặt, viết định hướng đầy đủ và bắt đầu bằng mức mở rộng hạn chế. Khi khám phá ban đầu, thiết lập thoáng hơn có thể phát triển ý tưởng đơn giản thành cảnh phong phú hơn.\n\nBa thanh trượt độc lập định hình ảnh: Intensity, Complexity và Movement. Mỗi thanh nhận số nguyên từ -100 đến 100, với 0 trung tính. Intensity chuyển cách thể hiện giữa dịu và mạnh. Complexity chuyển giữa bố cục sạch, tối giản và chi tiết dày đặc. Movement thay đổi năng lượng thị giác, cử chỉ và chuyển động gợi ra. Movement vẫn là tuỳ chọn cho ảnh tĩnh; không tạo hoạt hình hoặc đoạn video. Các thanh trượt độc lập với mở rộng câu lệnh của creativity và có thể kết hợp đầu vào tham chiếu.\n\nQuy trình minh hoạ thực tế xác lập cảnh trước, rồi điều chỉnh bảng màu và cách thể hiện, sau đó tinh chỉnh mật độ hoặc năng lượng. Ghi lại câu lệnh, bộ tham chiếu và seed tuỳ chọn trong khi mỗi lần đổi một tuỳ chọn. Với minh hoạ ven sông, complexity thấp hơn có thể đơn giản hoá nền, còn movement cao hơn có thể gợi tư thế đạp xe sinh động hơn. Đây là các định hướng sáng tạo cần kiểm tra trong kết quả hoàn chỉnh, không phải khoá bố cục hoặc tư thế chính xác.\n\n### Định dạng, tạo ảnh và bàn giao\n\nLược đồ tạo ảnh được công bố của Medium cung cấp mức độ phân giải 1K và chín tỷ lệ khung hình: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 3:4, 2:3 và 9:16. Chọn khung dự định trước khi tạo để bản yêu cầu mô tả bố cục tương ứng. Minh hoạ vuông, cảnh truyện rộng và bìa dọc cần vị trí chủ thể chính cùng chi tiết xung quanh khác nhau.\n\nQuy trình tạo ảnh được công bố trả về tác vụ, ban đầu có thể ở trạng thái pending. Theo dõi trạng thái đến khi hoàn tất rồi lấy các địa chỉ ảnh kết quả. Lưu ảnh đã chọn cùng bản yêu cầu, ảnh đầu vào và thiết lập điều khiển. Kiểm tra hình dáng, bàn tay hoặc vật thể nhỏ, phối cảnh, bảng màu và mọi chữ nhìn thấy trước khi đưa vào ấn phẩm hoặc chiến dịch.\n\nTrọng tâm minh hoạ của Medium là đặc điểm hữu ích để chọn phiên bản, không phải lời hứa kết quả giống nhau qua các câu lệnh. Tham chiếu thị giác có thể định hướng phong cách mà không sao chép hoàn hảo chủ thể hoặc bố cục, còn cường độ ảnh thành ảnh thay đổi mức giữ lại ảnh khởi đầu. Dùng chỉ dẫn rõ cho yếu tố bắt buộc, kiểm tra từng đầu ra hoàn chỉnh theo bản yêu cầu và thực hiện điều chỉnh bố cục, kiểu chữ cùng sản xuất cuối cùng trong trình biên tập.\n\n",
    "alias_of": null,
    "aliases": [],
    "author": "Krea",
    "capabilities": {
      "context_length": 65536,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.06",
            "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.06",
            "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": "Giá theo cấu hình được trình bày đầy đủ trong phần chi tiết."
      }
    ],
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "krea/krea-2-medium",
    "input": [
      "text",
      "image"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Các đơn giá hiển thị dùng để ước tính chi phí trước khi tạo. Khoản phí cuối cùng được tính dựa trên chi phí ghi nhận cho lượt tạo gốc. Thời lượng đầu ra đo được và số lượng dự kiến không phải là số lượng cuối cùng dùng để tính phí.",
          "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": "Giữ lại X-Client-Request-ID đã trả về để đối soát. Chỉ truy xuất theo các giá trị task_id/asset_id thực tế đã trả về hoặc từ thư viện nội dung đa phương tiện thuộc quyền sở hữu của bạn; tuyệt đối không tạo URL tác vụ từ ID thao tác và không gửi lại yêu cầu tạo."
            },
            "outputs": {
              "all_results": "Giữ lại toàn bộ phản hồi và các header, mọi đầu ra thực tế, các định danh gốc đã trả về và mọi trường usage. Khôi phục thao tác gốc mà không gửi lại yêu cầu tạo.",
              "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": [
                  "krea/krea-2-medium"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:2",
                  "16:9",
                  "4:5",
                  "2:3",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 1,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "1:1",
                    "4:3",
                    "3:2",
                    "16:9",
                    "4:5",
                    "2:3",
                    "9:16"
                  ],
                  "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": 1,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "krea/krea-2-medium"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "1K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "krea/krea-2-medium",
                "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": "Giá trị task_id thực tế đã trả về hoặc bản ghi trong thư viện nội dung đa phương tiện",
                "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"
              }
            ]
          },
          {
            "basis": "Ước tính này không phải là khoản phí bổ sung hay mức giá cố định cho lượt tạo đã hoàn tất.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Chi phí tạo ước tính",
            "units": [
              {
                "amount": "0.06",
                "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.06",
                "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': 'krea/krea-2-medium', '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": "Ảnh",
        "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"
              }
            ]
          },
          {
            "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.06",
                "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.06",
                "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": "krea/krea-2-medium",
        "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.06",
            "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.06",
            "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": "krea/krea-2-medium",
        "request_model_id": "krea/krea-2-medium",
        "route_label": "Ultra"
      }
    ],
    "name": "Krea: Krea 2 Medium",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.06,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.06,
      "varies": false
    },
    "short": "Krea 2 Medium tạo minh hoạ giàu biểu cảm từ văn bản và đầu vào thị giác tuỳ chọn. Giai đoạn hậu huấn luyện mở rộng hơn hướng tới kết quả ổn định trong minh hoạ, anime và hội hoạ, với tuỳ chọn phong cách, diễn giải câu lệnh, mật độ bố cục và năng lượng thị giác."
  },
  "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": "Krea 2 Medium tạo minh hoạ giàu biểu cảm từ văn bản và đầu vào thị giác tuỳ chọn. Giai đoạn hậu huấn luyện mở rộng hơn hướng tới kết quả ổn định trong minh hoạ, anime và hội hoạ, với tuỳ chọn phong cách, diễn giải câu lệnh, mật độ bố cục và năng lượng thị giác.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "aa4371ed900956fcfd89c63db06a061a8f5e587182c065b81d44dba0413040ac",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "49e34da198b090820153c2e6351a0f46d684734cb9613e8d19546b8275412397"
}
