{
  "aboutHtml": "<p>Microsoft AI MAI-Image-2.6 là phiên bản chú trọng độ chính xác trong dòng hình ảnh 2.6, được thiết kế để tạo ảnh từ văn bản và chỉnh sửa có kiểm soát các tài nguyên thị giác có sẵn. Thẻ mô hình mô tả mô hình khuếch tán dùng flow matching, có 20 tỷ tham số không tính embedding và ngữ cảnh 32K token. Đầu ra dự định là hình ảnh: bố cục sản phẩm, chân dung, minh hoạ thương hiệu hoặc hình ảnh đã sửa có bố cục và chủ thể chính vẫn thống nhất khi một yếu tố xác định thay đổi.</p><p>Khi tạo ảnh, mô tả chủ thể, bố cục, chất liệu, ánh sáng, góc nhìn và phong cách thị giác. Đưa nội dung chính xác khi cần có nhãn, tiêu đề hoặc biển trong ảnh, và mô tả vị trí chữ. Nhà sản xuất nhấn mạnh khả năng kết xuất chữ, chân dung, hình ảnh 3D và đầu ra thương mại hoặc chân thực như ảnh chụp được cải thiện trong phiên bản này. Bản yêu cầu hữu ích xác định vài quan hệ làm nên hiệu quả hình ảnh: vật thể nào nổi bật ở tiền cảnh, cách nó nằm trong cảnh và nơi khán giả cần nhìn đầu tiên. Kiểm tra chữ nhỏ và chi tiết nhỏ trong ảnh hoàn chỉnh.</p><p>Khi chỉnh sửa, cung cấp tài nguyên nguồn và nêu thay đổi cùng phần cần giữ. Tác vụ được công bố gồm xoá hoặc thay vật thể, đổi thuộc tính, vẽ bù vùng ảnh, điều chỉnh bố cục, cập nhật chữ và làm sạch lỗi như nhoè chuyển động. Thẻ mô hình nhấn mạnh suy luận về tỷ lệ, phối cảnh, ánh sáng và vị trí không gian để lần sửa phù hợp cảnh có sẵn. Khi chuẩn bị, xác định rõ vật thể hoặc vùng ảnh và giải thích mục tiêu là sửa cục bộ, sắp xếp khác hay đổi phong cách rộng hơn.</p><p>Hướng dẫn chỉnh sửa ảnh của nhà sản xuất nhận tối đa năm tham chiếu JPEG hoặc PNG. Giao cho từng ảnh vai trò riêng, như sản phẩm, người, bối cảnh, bố cục hoặc phong cách thị giác. Với chỉnh sửa ánh sáng, đặt đèn từ một tham chiếu lên bàn trong tham chiếu khác, giữ phối cảnh bàn và làm cho bóng đổ của đèn phù hợp với ánh sáng trong phòng. Một lần sửa riêng có thể cập nhật nhãn ngắn trong khi giữ hình dạng và vị trí sản phẩm. Kiểm tra quan hệ giữa các tham chiếu trong kết quả thay vì chấp nhận một vật thể có vẻ hợp lý nhưng khác vật thể cung cấp.</p><p>Dòng 2.6 bổ sung tuỳ chọn dùng web làm căn cứ và chọn tỷ lệ khung hình do mô hình quyết định. Dùng web làm căn cứ cung cấp ngữ cảnh hiện tại liên quan khi diễn giải yêu cầu về địa điểm thực, vật thể hoặc thông tin thay đổi. Đây là đầu vào sáng tạo, nên hãy kiểm tra chi tiết hình ảnh mang tính dữ kiện theo chủ thể dự định. Tự chọn tỷ lệ cho phép mô hình cân nhắc câu lệnh và ảnh khi chọn hình dạng bố cục. Bản yêu cầu thiết kế có thể nêu nơi sử dụng và bố cục cần thiết: chẳng hạn ảnh sản phẩm chủ đạo rộng với khoảng thoáng một bên, hoặc ảnh dọc xây quanh chủ thể đứng.</p><p>Kích thước đầu ra được giới hạn theo tổng diện tích. Thẻ mô hình cụ thể và hướng dẫn ảnh liệt kê tối đa 2,359,296 pixel, tương đương hình vuông 1536×1536. Giao diện ảnh được công bố yêu cầu cả chiều rộng và chiều cao ít nhất 768 pixel, và một trong hai chiều có thể vượt 1536 nếu tổng vẫn trong giới hạn diện tích. Điều này cho phép bố cục ngang hoặc dọc dài hơn, thay vì áp mức tối đa 1536 pixel cho mỗi cạnh. Ví dụ, đích 1024×2048 có 2,097,152 pixel và phù hợp quy tắc diện tích được công bố đó. Kiểm tra kích thước cuối cùng cho bố cục sẽ sử dụng ảnh.</p><p>Hướng dẫn của nhà sản xuất trả kết quả tạo và chỉnh sửa dưới dạng dữ liệu ảnh PNG. Lưu ảnh hoàn chỉnh cùng bản yêu cầu và tham chiếu nguồn khi chuẩn bị lần sửa thiết kế. Thẻ mô hình nêu ngữ cảnh 32K token, còn hướng dẫn phục vụ mô hình quy định ngữ cảnh câu lệnh tối đa 32,000 token; giữ đúng phạm vi công bố đó khi chuẩn bị bản yêu cầu dài thay vì coi chúng là kích thước ảnh. Tài nguyên sản xuất hữu ích là hình ảnh đã giải mã, có thể kiểm tra và đặt vào trang, slide hoặc bố cục. Ghi vùng cắt và vị trí chữ dự định cùng ảnh để lần sửa sau không vô tình thay mục đích thiết kế.</p><p>Trong dòng này, MAI-Image-2.6 nhấn mạnh kiểm soát chính xác và cải tiến mới nhất về chi tiết thị giác. MAI-Image-2.6-Flash cung cấp cùng khả năng tạo ảnh, chỉnh sửa, dùng thông tin làm căn cứ và chọn tỷ lệ trong phiên bản tối ưu cho sản xuất phản hồi nhanh, lặp lại nhiều lần. Dòng 2.5 dùng giới hạn diện tích đầu ra được công bố nhỏ hơn và không kế thừa tuỳ chọn dùng thông tin làm căn cứ hay tự chọn tỷ lệ của 2.6. Chọn phiên bản theo hình ảnh và quy trình sửa cần thiết, thay vì mặc định tên dòng chung khiến mọi thiết lập giống nhau.</p><p>Đối chiếu lần sửa với toàn bộ nguồn: khuôn mặt được giữ, danh tính vật thể, hình học, bóng, chữ và bố cục dự định đều quan trọng. Một bức ảnh thuyết phục vẫn có thể chứa dấu đánh dấu sai, phản chiếu không nhất quán hoặc đặc điểm bị đổi ngoài vùng chỉnh sửa yêu cầu. Giữ lần sửa tiếp theo cụ thể, như nhãn, vị trí vật thể hoặc một lỗi nhất định. Cách này làm chỉnh sửa lặp lại hữu ích trong khi giữ chủ thể và bố cục của bản yêu cầu gốc.</p>",
  "aboutText": "Microsoft AI MAI-Image-2.6 là phiên bản chú trọng độ chính xác trong dòng hình ảnh 2.6, được thiết kế để tạo ảnh từ văn bản và chỉnh sửa có kiểm soát các tài nguyên thị giác có sẵn. Thẻ mô hình mô tả mô hình khuếch tán dùng flow matching, có 20 tỷ tham số không tính embedding và ngữ cảnh 32K token. Đầu ra dự định là hình ảnh: bố cục sản phẩm, chân dung, minh hoạ thương hiệu hoặc hình ảnh đã sửa có bố cục và chủ thể chính vẫn thống nhất khi một yếu tố xác định thay đổi.\n\nKhi tạo ảnh, mô tả chủ thể, bố cục, chất liệu, ánh sáng, góc nhìn và phong cách thị giác. Đưa nội dung chính xác khi cần có nhãn, tiêu đề hoặc biển trong ảnh, và mô tả vị trí chữ. Nhà sản xuất nhấn mạnh khả năng kết xuất chữ, chân dung, hình ảnh 3D và đầu ra thương mại hoặc chân thực như ảnh chụp được cải thiện trong phiên bản này. Bản yêu cầu hữu ích xác định vài quan hệ làm nên hiệu quả hình ảnh: vật thể nào nổi bật ở tiền cảnh, cách nó nằm trong cảnh và nơi khán giả cần nhìn đầu tiên. Kiểm tra chữ nhỏ và chi tiết nhỏ trong ảnh hoàn chỉnh.\n\nKhi chỉnh sửa, cung cấp tài nguyên nguồn và nêu thay đổi cùng phần cần giữ. Tác vụ được công bố gồm xoá hoặc thay vật thể, đổi thuộc tính, vẽ bù vùng ảnh, điều chỉnh bố cục, cập nhật chữ và làm sạch lỗi như nhoè chuyển động. Thẻ mô hình nhấn mạnh suy luận về tỷ lệ, phối cảnh, ánh sáng và vị trí không gian để lần sửa phù hợp cảnh có sẵn. Khi chuẩn bị, xác định rõ vật thể hoặc vùng ảnh và giải thích mục tiêu là sửa cục bộ, sắp xếp khác hay đổi phong cách rộng hơn.\n\nHướng dẫn chỉnh sửa ảnh của nhà sản xuất nhận tối đa năm tham chiếu JPEG hoặc PNG. Giao cho từng ảnh vai trò riêng, như sản phẩm, người, bối cảnh, bố cục hoặc phong cách thị giác. Với chỉnh sửa ánh sáng, đặt đèn từ một tham chiếu lên bàn trong tham chiếu khác, giữ phối cảnh bàn và làm cho bóng đổ của đèn phù hợp với ánh sáng trong phòng. Một lần sửa riêng có thể cập nhật nhãn ngắn trong khi giữ hình dạng và vị trí sản phẩm. Kiểm tra quan hệ giữa các tham chiếu trong kết quả thay vì chấp nhận một vật thể có vẻ hợp lý nhưng khác vật thể cung cấp.\n\nDòng 2.6 bổ sung tuỳ chọn dùng web làm căn cứ và chọn tỷ lệ khung hình do mô hình quyết định. Dùng web làm căn cứ cung cấp ngữ cảnh hiện tại liên quan khi diễn giải yêu cầu về địa điểm thực, vật thể hoặc thông tin thay đổi. Đây là đầu vào sáng tạo, nên hãy kiểm tra chi tiết hình ảnh mang tính dữ kiện theo chủ thể dự định. Tự chọn tỷ lệ cho phép mô hình cân nhắc câu lệnh và ảnh khi chọn hình dạng bố cục. Bản yêu cầu thiết kế có thể nêu nơi sử dụng và bố cục cần thiết: chẳng hạn ảnh sản phẩm chủ đạo rộng với khoảng thoáng một bên, hoặc ảnh dọc xây quanh chủ thể đứng.\n\nKích thước đầu ra được giới hạn theo tổng diện tích. Thẻ mô hình cụ thể và hướng dẫn ảnh liệt kê tối đa 2,359,296 pixel, tương đương hình vuông 1536×1536. Giao diện ảnh được công bố yêu cầu cả chiều rộng và chiều cao ít nhất 768 pixel, và một trong hai chiều có thể vượt 1536 nếu tổng vẫn trong giới hạn diện tích. Điều này cho phép bố cục ngang hoặc dọc dài hơn, thay vì áp mức tối đa 1536 pixel cho mỗi cạnh. Ví dụ, đích 1024×2048 có 2,097,152 pixel và phù hợp quy tắc diện tích được công bố đó. Kiểm tra kích thước cuối cùng cho bố cục sẽ sử dụng ảnh.\n\nHướng dẫn của nhà sản xuất trả kết quả tạo và chỉnh sửa dưới dạng dữ liệu ảnh PNG. Lưu ảnh hoàn chỉnh cùng bản yêu cầu và tham chiếu nguồn khi chuẩn bị lần sửa thiết kế. Thẻ mô hình nêu ngữ cảnh 32K token, còn hướng dẫn phục vụ mô hình quy định ngữ cảnh câu lệnh tối đa 32,000 token; giữ đúng phạm vi công bố đó khi chuẩn bị bản yêu cầu dài thay vì coi chúng là kích thước ảnh. Tài nguyên sản xuất hữu ích là hình ảnh đã giải mã, có thể kiểm tra và đặt vào trang, slide hoặc bố cục. Ghi vùng cắt và vị trí chữ dự định cùng ảnh để lần sửa sau không vô tình thay mục đích thiết kế.\n\nTrong dòng này, MAI-Image-2.6 nhấn mạnh kiểm soát chính xác và cải tiến mới nhất về chi tiết thị giác. MAI-Image-2.6-Flash cung cấp cùng khả năng tạo ảnh, chỉnh sửa, dùng thông tin làm căn cứ và chọn tỷ lệ trong phiên bản tối ưu cho sản xuất phản hồi nhanh, lặp lại nhiều lần. Dòng 2.5 dùng giới hạn diện tích đầu ra được công bố nhỏ hơn và không kế thừa tuỳ chọn dùng thông tin làm căn cứ hay tự chọn tỷ lệ của 2.6. Chọn phiên bản theo hình ảnh và quy trình sửa cần thiết, thay vì mặc định tên dòng chung khiến mọi thiết lập giống nhau.\n\nĐối chiếu lần sửa với toàn bộ nguồn: khuôn mặt được giữ, danh tính vật thể, hình học, bóng, chữ và bố cục dự định đều quan trọng. Một bức ảnh thuyết phục vẫn có thể chứa dấu đánh dấu sai, phản chiếu không nhất quán hoặc đặc điểm bị đổi ngoài vùng chỉnh sửa yêu cầu. Giữ lần sửa tiếp theo cụ thể, như nhãn, vị trí vật thể hoặc một lỗi nhất định. Cách này làm chỉnh sửa lặp lại hữu ích trong khi giữ chủ thể và bố cục của bản yêu cầu gốc.\n\n",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "1b74194ebd445c9a682988111d80039492105d24e1562765dfd482c2649c3b80",
    "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\">Microsoft AI: MAI-Image-2.6</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Đóng\">×</button></div><div class=\"idline\"><span>Microsoft AI /</span><code>microsoft/mai-image-2.6</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|microsoft%2Fmai-image-2.6\">Ả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\">Microsoft AI MAI-Image-2.6 tạo và chỉnh sửa ảnh cho công việc thiết kế chính xác. Mô hình kết hợp văn bản với tối đa năm tham chiếu thị giác, hỗ trợ tuỳ chọn dùng web làm căn cứ và tự chọn kích thước bố cục, đồng thời tạo ảnh PNG tối đa 2,359,296 pixel. Trọng tâm là chỉnh sửa có kiểm soát, chữ, chân dung và hình ảnh thương mại.</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\"><p>Microsoft AI MAI-Image-2.6 là phiên bản chú trọng độ chính xác trong dòng hình ảnh 2.6, được thiết kế để tạo ảnh từ văn bản và chỉnh sửa có kiểm soát các tài nguyên thị giác có sẵn. Thẻ mô hình mô tả mô hình khuếch tán dùng flow matching, có 20 tỷ tham số không tính embedding và ngữ cảnh 32K token. Đầu ra dự định là hình ảnh: bố cục sản phẩm, chân dung, minh hoạ thương hiệu hoặc hình ảnh đã sửa có bố cục và chủ thể chính vẫn thống nhất khi một yếu tố xác định thay đổi.</p><p>Khi tạo ảnh, mô tả chủ thể, bố cục, chất liệu, ánh sáng, góc nhìn và phong cách thị giác. Đưa nội dung chính xác khi cần có nhãn, tiêu đề hoặc biển trong ảnh, và mô tả vị trí chữ. Nhà sản xuất nhấn mạnh khả năng kết xuất chữ, chân dung, hình ảnh 3D và đầu ra thương mại hoặc chân thực như ảnh chụp được cải thiện trong phiên bản này. Bản yêu cầu hữu ích xác định vài quan hệ làm nên hiệu quả hình ảnh: vật thể nào nổi bật ở tiền cảnh, cách nó nằm trong cảnh và nơi khán giả cần nhìn đầu tiên. Kiểm tra chữ nhỏ và chi tiết nhỏ trong ảnh hoàn chỉnh.</p><p>Khi chỉnh sửa, cung cấp tài nguyên nguồn và nêu thay đổi cùng phần cần giữ. Tác vụ được công bố gồm xoá hoặc thay vật thể, đổi thuộc tính, vẽ bù vùng ảnh, điều chỉnh bố cục, cập nhật chữ và làm sạch lỗi như nhoè chuyển động. Thẻ mô hình nhấn mạnh suy luận về tỷ lệ, phối cảnh, ánh sáng và vị trí không gian để lần sửa phù hợp cảnh có sẵn. Khi chuẩn bị, xác định rõ vật thể hoặc vùng ảnh và giải thích mục tiêu là sửa cục bộ, sắp xếp khác hay đổi phong cách rộng hơn.</p><p>Hướng dẫn chỉnh sửa ảnh của nhà sản xuất nhận tối đa năm tham chiếu JPEG hoặc PNG. Giao cho từng ảnh vai trò riêng, như sản phẩm, người, bối cảnh, bố cục hoặc phong cách thị giác. Với chỉnh sửa ánh sáng, đặt đèn từ một tham chiếu lên bàn trong tham chiếu khác, giữ phối cảnh bàn và làm cho bóng đổ của đèn phù hợp với ánh sáng trong phòng. Một lần sửa riêng có thể cập nhật nhãn ngắn trong khi giữ hình dạng và vị trí sản phẩm. Kiểm tra quan hệ giữa các tham chiếu trong kết quả thay vì chấp nhận một vật thể có vẻ hợp lý nhưng khác vật thể cung cấp.</p><p>Dòng 2.6 bổ sung tuỳ chọn dùng web làm căn cứ và chọn tỷ lệ khung hình do mô hình quyết định. Dùng web làm căn cứ cung cấp ngữ cảnh hiện tại liên quan khi diễn giải yêu cầu về địa điểm thực, vật thể hoặc thông tin thay đổi. Đây là đầu vào sáng tạo, nên hãy kiểm tra chi tiết hình ảnh mang tính dữ kiện theo chủ thể dự định. Tự chọn tỷ lệ cho phép mô hình cân nhắc câu lệnh và ảnh khi chọn hình dạng bố cục. Bản yêu cầu thiết kế có thể nêu nơi sử dụng và bố cục cần thiết: chẳng hạn ảnh sản phẩm chủ đạo rộng với khoảng thoáng một bên, hoặc ảnh dọc xây quanh chủ thể đứng.</p><p>Kích thước đầu ra được giới hạn theo tổng diện tích. Thẻ mô hình cụ thể và hướng dẫn ảnh liệt kê tối đa 2,359,296 pixel, tương đương hình vuông 1536×1536. Giao diện ảnh được công bố yêu cầu cả chiều rộng và chiều cao ít nhất 768 pixel, và một trong hai chiều có thể vượt 1536 nếu tổng vẫn trong giới hạn diện tích. Điều này cho phép bố cục ngang hoặc dọc dài hơn, thay vì áp mức tối đa 1536 pixel cho mỗi cạnh. Ví dụ, đích 1024×2048 có 2,097,152 pixel và phù hợp quy tắc diện tích được công bố đó. Kiểm tra kích thước cuối cùng cho bố cục sẽ sử dụng ảnh.</p><p>Hướng dẫn của nhà sản xuất trả kết quả tạo và chỉnh sửa dưới dạng dữ liệu ảnh PNG. Lưu ảnh hoàn chỉnh cùng bản yêu cầu và tham chiếu nguồn khi chuẩn bị lần sửa thiết kế. Thẻ mô hình nêu ngữ cảnh 32K token, còn hướng dẫn phục vụ mô hình quy định ngữ cảnh câu lệnh tối đa 32,000 token; giữ đúng phạm vi công bố đó khi chuẩn bị bản yêu cầu dài thay vì coi chúng là kích thước ảnh. Tài nguyên sản xuất hữu ích là hình ảnh đã giải mã, có thể kiểm tra và đặt vào trang, slide hoặc bố cục. Ghi vùng cắt và vị trí chữ dự định cùng ảnh để lần sửa sau không vô tình thay mục đích thiết kế.</p><p>Trong dòng này, MAI-Image-2.6 nhấn mạnh kiểm soát chính xác và cải tiến mới nhất về chi tiết thị giác. MAI-Image-2.6-Flash cung cấp cùng khả năng tạo ảnh, chỉnh sửa, dùng thông tin làm căn cứ và chọn tỷ lệ trong phiên bản tối ưu cho sản xuất phản hồi nhanh, lặp lại nhiều lần. Dòng 2.5 dùng giới hạn diện tích đầu ra được công bố nhỏ hơn và không kế thừa tuỳ chọn dùng thông tin làm căn cứ hay tự chọn tỷ lệ của 2.6. Chọn phiên bản theo hình ảnh và quy trình sửa cần thiết, thay vì mặc định tên dòng chung khiến mọi thiết lập giống nhau.</p><p>Đối chiếu lần sửa với toàn bộ nguồn: khuôn mặt được giữ, danh tính vật thể, hình học, bóng, chữ và bố cục dự định đều quan trọng. Một bức ảnh thuyết phục vẫn có thể chứa dấu đánh dấu sai, phản chiếu không nhất quán hoặc đặc điểm bị đổi ngoài vùng chỉnh sửa yêu cầu. Giữ lần sửa tiếp theo cụ thể, như nhãn, vị trí vật thể hoặc một lỗi nhất định. Cách này làm chỉnh sửa lặp lại hữu ích trong khi giữ chủ thể và bố cục của bản yêu cầu gốc.</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>microsoft/mai-image-2.6</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\">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:4, 16:9, 9:16, 3:2, 2:3, auto</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\">n</code></th><td data-cell-label=\"Loại\" data-field-type><span class=\"card-cell-label\">Loại</span><code>integer</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>Tối thiểu: 1</div><div>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\">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: 5</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.311296</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-1841-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1841-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-1841-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1841-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;microsoft/mai-image-2.6&#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-1842-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1842-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-1842-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1842-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=microsoft%2Fmai-image-2.6&amp;route=Ultra&amp;caller=microsoft%2Fmai-image-2.6&amp;fmt=images\"><code>microsoft/mai-image-2.6</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=microsoft%2Fmai-image-2.6&amp;route=Ultra&amp;caller=microsoft%2Fmai-image-2.6&amp;fmt=images\"><code>microsoft/mai-image-2.6</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "microsoft/mai-image-2.6",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "microsoft/mai-image-2.6",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|microsoft%2Fmai-image-2.6",
      "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": [
                  "microsoft/mai-image-2.6"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "3:2",
                  "2:3",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 5,
                "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:4",
                    "16:9",
                    "9:16",
                    "3:2",
                    "2:3",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 5,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "microsoft/mai-image-2.6"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "microsoft/mai-image-2.6",
                "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.311296",
                "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.311296",
                "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': 'microsoft/mai-image-2.6', '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.311296",
                "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.311296",
                "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": "microsoft/mai-image-2.6",
        "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.311296",
            "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.311296",
            "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": "microsoft/mai-image-2.6",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "b8d23e1cfc516a5bcc93c0b7fd61fa863f0ec0de493e0ace5c0ed7cafcdc0c2e",
    "input_html_sha256": "47ed2d4c0dca678344e879167bbce43a3d32ec92be3a3576535037ffc3007efe",
    "private_audit_sha256": "a6c21642f0a49191428d1f504a9eeb62e3f21fbd297fff27c5320371a35024df",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/vi/microsoft-mai-image-2-6/",
    "description": "Microsoft AI MAI-Image-2.6 tạo và chỉnh sửa ảnh cho công việc thiết kế chính xác. Mô hình kết hợp văn bản với tối đa năm tham chiếu thị giác, hỗ trợ tuỳ chọn dùng web làm căn cứ và tự chọn kích thước bố cục, đồng thời tạo ảnh PNG tối đa 2,359,296 pixel. Trọng tâm là chỉnh sửa có kiểm soát, chữ, chân dung và hình ảnh thương mại.",
    "locale": "vi",
    "md_url": "https://ailoot.ai/models/vi/microsoft-mai-image-2-6/index.md",
    "title": "Microsoft AI: MAI-Image-2.6 — Ailoot",
    "url": "https://ailoot.ai/models/vi/microsoft-mai-image-2-6/"
  },
  "rawModel": {
    "about": "Microsoft AI MAI-Image-2.6 là phiên bản chú trọng độ chính xác trong dòng hình ảnh 2.6, được thiết kế để tạo ảnh từ văn bản và chỉnh sửa có kiểm soát các tài nguyên thị giác có sẵn. Thẻ mô hình mô tả mô hình khuếch tán dùng flow matching, có 20 tỷ tham số không tính embedding và ngữ cảnh 32K token. Đầu ra dự định là hình ảnh: bố cục sản phẩm, chân dung, minh hoạ thương hiệu hoặc hình ảnh đã sửa có bố cục và chủ thể chính vẫn thống nhất khi một yếu tố xác định thay đổi.\n\nKhi tạo ảnh, mô tả chủ thể, bố cục, chất liệu, ánh sáng, góc nhìn và phong cách thị giác. Đưa nội dung chính xác khi cần có nhãn, tiêu đề hoặc biển trong ảnh, và mô tả vị trí chữ. Nhà sản xuất nhấn mạnh khả năng kết xuất chữ, chân dung, hình ảnh 3D và đầu ra thương mại hoặc chân thực như ảnh chụp được cải thiện trong phiên bản này. Bản yêu cầu hữu ích xác định vài quan hệ làm nên hiệu quả hình ảnh: vật thể nào nổi bật ở tiền cảnh, cách nó nằm trong cảnh và nơi khán giả cần nhìn đầu tiên. Kiểm tra chữ nhỏ và chi tiết nhỏ trong ảnh hoàn chỉnh.\n\nKhi chỉnh sửa, cung cấp tài nguyên nguồn và nêu thay đổi cùng phần cần giữ. Tác vụ được công bố gồm xoá hoặc thay vật thể, đổi thuộc tính, vẽ bù vùng ảnh, điều chỉnh bố cục, cập nhật chữ và làm sạch lỗi như nhoè chuyển động. Thẻ mô hình nhấn mạnh suy luận về tỷ lệ, phối cảnh, ánh sáng và vị trí không gian để lần sửa phù hợp cảnh có sẵn. Khi chuẩn bị, xác định rõ vật thể hoặc vùng ảnh và giải thích mục tiêu là sửa cục bộ, sắp xếp khác hay đổi phong cách rộng hơn.\n\nHướng dẫn chỉnh sửa ảnh của nhà sản xuất nhận tối đa năm tham chiếu JPEG hoặc PNG. Giao cho từng ảnh vai trò riêng, như sản phẩm, người, bối cảnh, bố cục hoặc phong cách thị giác. Với chỉnh sửa ánh sáng, đặt đèn từ một tham chiếu lên bàn trong tham chiếu khác, giữ phối cảnh bàn và làm cho bóng đổ của đèn phù hợp với ánh sáng trong phòng. Một lần sửa riêng có thể cập nhật nhãn ngắn trong khi giữ hình dạng và vị trí sản phẩm. Kiểm tra quan hệ giữa các tham chiếu trong kết quả thay vì chấp nhận một vật thể có vẻ hợp lý nhưng khác vật thể cung cấp.\n\nDòng 2.6 bổ sung tuỳ chọn dùng web làm căn cứ và chọn tỷ lệ khung hình do mô hình quyết định. Dùng web làm căn cứ cung cấp ngữ cảnh hiện tại liên quan khi diễn giải yêu cầu về địa điểm thực, vật thể hoặc thông tin thay đổi. Đây là đầu vào sáng tạo, nên hãy kiểm tra chi tiết hình ảnh mang tính dữ kiện theo chủ thể dự định. Tự chọn tỷ lệ cho phép mô hình cân nhắc câu lệnh và ảnh khi chọn hình dạng bố cục. Bản yêu cầu thiết kế có thể nêu nơi sử dụng và bố cục cần thiết: chẳng hạn ảnh sản phẩm chủ đạo rộng với khoảng thoáng một bên, hoặc ảnh dọc xây quanh chủ thể đứng.\n\nKích thước đầu ra được giới hạn theo tổng diện tích. Thẻ mô hình cụ thể và hướng dẫn ảnh liệt kê tối đa 2,359,296 pixel, tương đương hình vuông 1536×1536. Giao diện ảnh được công bố yêu cầu cả chiều rộng và chiều cao ít nhất 768 pixel, và một trong hai chiều có thể vượt 1536 nếu tổng vẫn trong giới hạn diện tích. Điều này cho phép bố cục ngang hoặc dọc dài hơn, thay vì áp mức tối đa 1536 pixel cho mỗi cạnh. Ví dụ, đích 1024×2048 có 2,097,152 pixel và phù hợp quy tắc diện tích được công bố đó. Kiểm tra kích thước cuối cùng cho bố cục sẽ sử dụng ảnh.\n\nHướng dẫn của nhà sản xuất trả kết quả tạo và chỉnh sửa dưới dạng dữ liệu ảnh PNG. Lưu ảnh hoàn chỉnh cùng bản yêu cầu và tham chiếu nguồn khi chuẩn bị lần sửa thiết kế. Thẻ mô hình nêu ngữ cảnh 32K token, còn hướng dẫn phục vụ mô hình quy định ngữ cảnh câu lệnh tối đa 32,000 token; giữ đúng phạm vi công bố đó khi chuẩn bị bản yêu cầu dài thay vì coi chúng là kích thước ảnh. Tài nguyên sản xuất hữu ích là hình ảnh đã giải mã, có thể kiểm tra và đặt vào trang, slide hoặc bố cục. Ghi vùng cắt và vị trí chữ dự định cùng ảnh để lần sửa sau không vô tình thay mục đích thiết kế.\n\nTrong dòng này, MAI-Image-2.6 nhấn mạnh kiểm soát chính xác và cải tiến mới nhất về chi tiết thị giác. MAI-Image-2.6-Flash cung cấp cùng khả năng tạo ảnh, chỉnh sửa, dùng thông tin làm căn cứ và chọn tỷ lệ trong phiên bản tối ưu cho sản xuất phản hồi nhanh, lặp lại nhiều lần. Dòng 2.5 dùng giới hạn diện tích đầu ra được công bố nhỏ hơn và không kế thừa tuỳ chọn dùng thông tin làm căn cứ hay tự chọn tỷ lệ của 2.6. Chọn phiên bản theo hình ảnh và quy trình sửa cần thiết, thay vì mặc định tên dòng chung khiến mọi thiết lập giống nhau.\n\nĐối chiếu lần sửa với toàn bộ nguồn: khuôn mặt được giữ, danh tính vật thể, hình học, bóng, chữ và bố cục dự định đều quan trọng. Một bức ảnh thuyết phục vẫn có thể chứa dấu đánh dấu sai, phản chiếu không nhất quán hoặc đặc điểm bị đổi ngoài vùng chỉnh sửa yêu cầu. Giữ lần sửa tiếp theo cụ thể, như nhãn, vị trí vật thể hoặc một lỗi nhất định. Cách này làm chỉnh sửa lặp lại hữu ích trong khi giữ chủ thể và bố cục của bản yêu cầu gốc.\n\n",
    "alias_of": null,
    "aliases": [],
    "author": "Microsoft AI",
    "capabilities": {
      "context_length": 4096,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.311296",
            "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.311296",
            "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": "microsoft/mai-image-2.6",
    "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": [
                  "microsoft/mai-image-2.6"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "1:1",
                  "4:3",
                  "3:4",
                  "16:9",
                  "9:16",
                  "3:2",
                  "2:3",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 5,
                "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:4",
                    "16:9",
                    "9:16",
                    "3:2",
                    "2:3",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 5,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "microsoft/mai-image-2.6"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "microsoft/mai-image-2.6",
                "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.311296",
                "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.311296",
                "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': 'microsoft/mai-image-2.6', '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.311296",
                "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.311296",
                "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": "microsoft/mai-image-2.6",
        "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.311296",
            "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.311296",
            "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": "microsoft/mai-image-2.6",
        "request_model_id": "microsoft/mai-image-2.6",
        "route_label": "Ultra"
      }
    ],
    "name": "Microsoft AI: MAI-Image-2.6",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.311296,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.311296,
      "varies": false
    },
    "short": "Microsoft AI MAI-Image-2.6 tạo và chỉnh sửa ảnh cho công việc thiết kế chính xác. Mô hình kết hợp văn bản với tối đa năm tham chiếu thị giác, hỗ trợ tuỳ chọn dùng web làm căn cứ và tự chọn kích thước bố cục, đồng thời tạo ảnh PNG tối đa 2,359,296 pixel. Trọng tâm là chỉnh sửa có kiểm soát, chữ, chân dung và hình ảnh thương mại."
  },
  "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": "Microsoft AI MAI-Image-2.6 tạo và chỉnh sửa ảnh cho công việc thiết kế chính xác. Mô hình kết hợp văn bản với tối đa năm tham chiếu thị giác, hỗ trợ tuỳ chọn dùng web làm căn cứ và tự chọn kích thước bố cục, đồng thời tạo ảnh PNG tối đa 2,359,296 pixel. Trọng tâm là chỉnh sửa có kiểm soát, chữ, chân dung và hình ảnh thương mại.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "fd78fb1bbb38cd81e6098458907047860c04946f80b073bb7a60b884372d72df",
    "renderer_sha256": "64a62299639eb843877e9ec5c95e32bf22bac3acfe230f6f502c5c3aa186f9c1"
  },
  "sourceRevision": "7f70fe9b6e425494d46f89e9a770fea8cf707497849206b850d2ddd98390152c"
}
