{
  "aboutHtml": "<p>GPT-4o 是 OpenAI 用於文字與圖片理解、寫作及應用程式工作的多用途 GPT 模型。「o」代表「omni」，而這個有文件記載的模型接受文字與圖片，回傳包含 Structured Outputs 在內的文字。實際請求可以結合書面需求與照片、螢幕截圖或文件頁面，要求清楚解釋、編輯後的成品，或供下一個應用程式階段使用的定義欄位。</p><p>撰寫報告時，提供來源文件及報告應支持的決策。指出相關日期、單位與證據標籤，再要求比較，區分觀察、假設與缺少的資訊。視覺任務中，指出重要的物件、圖表或介面狀態，並提供周圍脈絡。修改程式碼時，提供受影響的程式碼、預期行為與必須維持的限制。這些是具體運用模型文字與圖片能力的方法，不必依賴提示詞暗示整個任務。</p><p>OpenAI 目前的 GPT-4o 設定檔列出 128,000 個 token 的上下文視窗、16,384 個 token 的最大輸出，以及 2023 年 10 月 1 日的知識截止日。開發商另外列出多個具日期的 GPT-4o 快照。對話、輸入素材與生成答案共用上下文額度，因此大量文件仍需要整理，並為最終成品留出空間。會變動或來自私人系統的事實，應直接提供，或透過明確設定的工具取得。</p><p>視覺指南接受 PNG、JPEG、WebP 及非動畫 GIF。GPT-4o 支援 low、high 與 auto 圖片詳細程度；high 與 auto 採分塊處理。解讀圖表時，放大小標籤、保持文字正向，並保留圖例或周圍圖解。文件記載的限制包括精確空間定位、粗略物件計數、部分非拉丁文字，以及全景或魚眼視角。模型也可能錯誤描述圖片，因此應保留來源，並要求指出支持解讀的具體觀察。在 OpenAI 有文件記載的視覺工作流程中，請求總酬載上限為 512 MB，每個請求最多可包含 1,500 張圖片；圖片與文字也必須容納於模型上下文。</p><p>OpenAI 的檔案輸入流程會同時向具視覺能力的模型提供 PDF 擷取文字與頁面圖片。非 PDF 辦公室文件提供擷取文字，而非其中的內嵌圖表；試算表則從每個工作表前最多 1,000 列補充資訊。每個檔案必須小於 50 MB，單次請求的合計上限為 50 MB。Chat Completions 支援 PDF 檔案部分；文件記載的 Responses 流程接受其他檔案格式。視覺忠實度重要時，選擇 PDF 表示形式，並在結果中保留可見的來源識別碼。</p><p>串流可在回應生成時逐步回傳。Structured Outputs 將完成的回應限制在 JSON Schema 支援的子集內，適合文件擷取或具有定義欄位的應用程式物件。JSON 模式只處理 JSON 有效性。定義預期型別、允許值及缺少證據時的處理方式，再將明確拒絕或未完成回應分開處理。Schema 無法證明值在事實上正確，因此所要求的欄位應能追溯至提供的素材。</p><p>開發商支援函式呼叫、網頁搜尋、檔案搜尋、程式碼執行與 MCP 連線。自訂函式需要有意義的說明與引數 schema；應用程式執行要求的動作，並將結果回傳供下一個模型步驟使用。GPT-4o 也能在已設定的 Responses 流程中指揮獨立的圖片生成工具。工具建立的圖片是獨立成品，而 GPT-4o 文件記載的原生回應是文字。代理的最終解釋應使用實際擷取或計算的觀察，不應將提議的工具呼叫視為已完成操作。</p><p>GPT-4o 可在稍作修改後重新生成大部分已知的文字或程式碼時使用 Predicted Outputs。提供現有內容與精確變更，再檢查回傳成品。這條純文字路徑無法與函式呼叫結合，且排除 logprobs、max_completion_tokens 及其他若干控制項。當答案依賴外部操作取得的新資訊時，工具請求是另一個選項。</p><p>OpenAI 有 GPT-4o 微調文件，其最佳化指南明確指定 2024 年 8 月 6 日快照，用於採用圖片範例的視覺微調。這種特定快照的客製化流程，與對模型別名的一般請求不同。日常寫作、分析或擷取可以從有用的需求說明與預期輸出範例開始。後續請求可以解決一項缺少的事實、修改欄位或精修同一個成品，同時保留任務的證據與限制。</p>",
  "aboutText": "GPT-4o 是 OpenAI 用於文字與圖片理解、寫作及應用程式工作的多用途 GPT 模型。「o」代表「omni」，而這個有文件記載的模型接受文字與圖片，回傳包含 Structured Outputs 在內的文字。實際請求可以結合書面需求與照片、螢幕截圖或文件頁面，要求清楚解釋、編輯後的成品，或供下一個應用程式階段使用的定義欄位。\n\n撰寫報告時，提供來源文件及報告應支持的決策。指出相關日期、單位與證據標籤，再要求比較，區分觀察、假設與缺少的資訊。視覺任務中，指出重要的物件、圖表或介面狀態，並提供周圍脈絡。修改程式碼時，提供受影響的程式碼、預期行為與必須維持的限制。這些是具體運用模型文字與圖片能力的方法，不必依賴提示詞暗示整個任務。\n\nOpenAI 目前的 GPT-4o 設定檔列出 128,000 個 token 的上下文視窗、16,384 個 token 的最大輸出，以及 2023 年 10 月 1 日的知識截止日。開發商另外列出多個具日期的 GPT-4o 快照。對話、輸入素材與生成答案共用上下文額度，因此大量文件仍需要整理，並為最終成品留出空間。會變動或來自私人系統的事實，應直接提供，或透過明確設定的工具取得。\n\n視覺指南接受 PNG、JPEG、WebP 及非動畫 GIF。GPT-4o 支援 low、high 與 auto 圖片詳細程度；high 與 auto 採分塊處理。解讀圖表時，放大小標籤、保持文字正向，並保留圖例或周圍圖解。文件記載的限制包括精確空間定位、粗略物件計數、部分非拉丁文字，以及全景或魚眼視角。模型也可能錯誤描述圖片，因此應保留來源，並要求指出支持解讀的具體觀察。在 OpenAI 有文件記載的視覺工作流程中，請求總酬載上限為 512 MB，每個請求最多可包含 1,500 張圖片；圖片與文字也必須容納於模型上下文。\n\nOpenAI 的檔案輸入流程會同時向具視覺能力的模型提供 PDF 擷取文字與頁面圖片。非 PDF 辦公室文件提供擷取文字，而非其中的內嵌圖表；試算表則從每個工作表前最多 1,000 列補充資訊。每個檔案必須小於 50 MB，單次請求的合計上限為 50 MB。Chat Completions 支援 PDF 檔案部分；文件記載的 Responses 流程接受其他檔案格式。視覺忠實度重要時，選擇 PDF 表示形式，並在結果中保留可見的來源識別碼。\n\n串流可在回應生成時逐步回傳。Structured Outputs 將完成的回應限制在 JSON Schema 支援的子集內，適合文件擷取或具有定義欄位的應用程式物件。JSON 模式只處理 JSON 有效性。定義預期型別、允許值及缺少證據時的處理方式，再將明確拒絕或未完成回應分開處理。Schema 無法證明值在事實上正確，因此所要求的欄位應能追溯至提供的素材。\n\n開發商支援函式呼叫、網頁搜尋、檔案搜尋、程式碼執行與 MCP 連線。自訂函式需要有意義的說明與引數 schema；應用程式執行要求的動作，並將結果回傳供下一個模型步驟使用。GPT-4o 也能在已設定的 Responses 流程中指揮獨立的圖片生成工具。工具建立的圖片是獨立成品，而 GPT-4o 文件記載的原生回應是文字。代理的最終解釋應使用實際擷取或計算的觀察，不應將提議的工具呼叫視為已完成操作。\n\nGPT-4o 可在稍作修改後重新生成大部分已知的文字或程式碼時使用 Predicted Outputs。提供現有內容與精確變更，再檢查回傳成品。這條純文字路徑無法與函式呼叫結合，且排除 logprobs、max_completion_tokens 及其他若干控制項。當答案依賴外部操作取得的新資訊時，工具請求是另一個選項。\n\nOpenAI 有 GPT-4o 微調文件，其最佳化指南明確指定 2024 年 8 月 6 日快照，用於採用圖片範例的視覺微調。這種特定快照的客製化流程，與對模型別名的一般請求不同。日常寫作、分析或擷取可以從有用的需求說明與預期輸出範例開始。後續請求可以解決一項缺少的事實、修改欄位或精修同一個成品，同時保留任務的證據與限制。",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "218ff79b42a9d27980c23987285f44b2f09d54ce95c52f03a6158d30075366c4",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "zh-hant-tw",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">OpenAI: GPT-4o (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"關閉\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4o:batch</code><button type=\"button\" id=\"copy-id\">複製 ID</button></div><nav class=\"card-jump-nav\" aria-label=\"模型卡片區段\"><button type=\"button\" data-card-jump=\"overview\">入門</button><button type=\"button\" data-card-jump=\"methods\">輸入與方法</button><button type=\"button\" data-card-jump=\"pricing\">方案</button><button type=\"button\" data-card-jump=\"examples\">範例</button><button type=\"button\" data-card-jump=\"results\">結果</button><button type=\"button\" data-card-jump=\"aliases\">別名</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API 方法\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|batches|/v1/batches|openai%2Fgpt-4o%3Abatch\">批次</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">入門</h3><p class=\"mdesc-full\">GPT-4o 將文字與圖片理解結合寫作、程式設計、Structured Outputs 及應用程式工具。可用來撰寫有證據支持的回應、解讀視覺素材，或從大量來源資料中回傳定義好的欄位。</p><dl class=\"card-io\" data-card-io><div><dt>接受的輸入</dt><dd>文字</dd></div><div><dt>結果</dt><dd>文字</dd></div></dl><details class=\"card-about\"><summary>關於模型</summary><p class=\"note-s\" data-model-method-boundary>此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項，依所選方法列於下方。</p><div class=\"mabout\" id=\"m-about\"><p>GPT-4o 是 OpenAI 用於文字與圖片理解、寫作及應用程式工作的多用途 GPT 模型。「o」代表「omni」，而這個有文件記載的模型接受文字與圖片，回傳包含 Structured Outputs 在內的文字。實際請求可以結合書面需求與照片、螢幕截圖或文件頁面，要求清楚解釋、編輯後的成品，或供下一個應用程式階段使用的定義欄位。</p><p>撰寫報告時，提供來源文件及報告應支持的決策。指出相關日期、單位與證據標籤，再要求比較，區分觀察、假設與缺少的資訊。視覺任務中，指出重要的物件、圖表或介面狀態，並提供周圍脈絡。修改程式碼時，提供受影響的程式碼、預期行為與必須維持的限制。這些是具體運用模型文字與圖片能力的方法，不必依賴提示詞暗示整個任務。</p><p>OpenAI 目前的 GPT-4o 設定檔列出 128,000 個 token 的上下文視窗、16,384 個 token 的最大輸出，以及 2023 年 10 月 1 日的知識截止日。開發商另外列出多個具日期的 GPT-4o 快照。對話、輸入素材與生成答案共用上下文額度，因此大量文件仍需要整理，並為最終成品留出空間。會變動或來自私人系統的事實，應直接提供，或透過明確設定的工具取得。</p><p>視覺指南接受 PNG、JPEG、WebP 及非動畫 GIF。GPT-4o 支援 low、high 與 auto 圖片詳細程度；high 與 auto 採分塊處理。解讀圖表時，放大小標籤、保持文字正向，並保留圖例或周圍圖解。文件記載的限制包括精確空間定位、粗略物件計數、部分非拉丁文字，以及全景或魚眼視角。模型也可能錯誤描述圖片，因此應保留來源，並要求指出支持解讀的具體觀察。在 OpenAI 有文件記載的視覺工作流程中，請求總酬載上限為 512 MB，每個請求最多可包含 1,500 張圖片；圖片與文字也必須容納於模型上下文。</p><p>OpenAI 的檔案輸入流程會同時向具視覺能力的模型提供 PDF 擷取文字與頁面圖片。非 PDF 辦公室文件提供擷取文字，而非其中的內嵌圖表；試算表則從每個工作表前最多 1,000 列補充資訊。每個檔案必須小於 50 MB，單次請求的合計上限為 50 MB。Chat Completions 支援 PDF 檔案部分；文件記載的 Responses 流程接受其他檔案格式。視覺忠實度重要時，選擇 PDF 表示形式，並在結果中保留可見的來源識別碼。</p><p>串流可在回應生成時逐步回傳。Structured Outputs 將完成的回應限制在 JSON Schema 支援的子集內，適合文件擷取或具有定義欄位的應用程式物件。JSON 模式只處理 JSON 有效性。定義預期型別、允許值及缺少證據時的處理方式，再將明確拒絕或未完成回應分開處理。Schema 無法證明值在事實上正確，因此所要求的欄位應能追溯至提供的素材。</p><p>開發商支援函式呼叫、網頁搜尋、檔案搜尋、程式碼執行與 MCP 連線。自訂函式需要有意義的說明與引數 schema；應用程式執行要求的動作，並將結果回傳供下一個模型步驟使用。GPT-4o 也能在已設定的 Responses 流程中指揮獨立的圖片生成工具。工具建立的圖片是獨立成品，而 GPT-4o 文件記載的原生回應是文字。代理的最終解釋應使用實際擷取或計算的觀察，不應將提議的工具呼叫視為已完成操作。</p><p>GPT-4o 可在稍作修改後重新生成大部分已知的文字或程式碼時使用 Predicted Outputs。提供現有內容與精確變更，再檢查回傳成品。這條純文字路徑無法與函式呼叫結合，且排除 logprobs、max_completion_tokens 及其他若干控制項。當答案依賴外部操作取得的新資訊時，工具請求是另一個選項。</p><p>OpenAI 有 GPT-4o 微調文件，其最佳化指南明確指定 2024 年 8 月 6 日快照，用於採用圖片範例的視覺微調。這種特定快照的客製化流程，與對模型別名的一般請求不同。日常寫作、分析或擷取可以從有用的需求說明與預期輸出範例開始。後續請求可以解決一項缺少的事實、修改欄位或精修同一個成品，同時保留任務的證據與限制。</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Ailoot 可用 · 輸入與方法</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · 批次處理（Batch）</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>輸入</dt><dd><code>text</code></dd></div><div><dt>輸出</dt><dd><code>text</code></dd></div><div><dt>輸出格式</dt><dd>內嵌的 results[].response.body JSON</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>欄位</th><th>類型</th><th>要求</th><th>值與限制</th><th>預設值</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>必填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>/v1/chat/completions</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>必填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>openai/gpt-4o:batch</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">requests</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>batch_item[]</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>必填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>項目數下限: 1</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">requests[].custom_id</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>必填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">requests[].body.messages</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>message[]</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>必填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">completion_window</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>選填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>24h</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>object|null</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>選填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">requests[].body.model</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>選填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>openai/gpt-4o:batch, openai/gpt-4o</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">provider.only</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>string[]</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>選填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>openai</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">provider.allow_fallbacks</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span><code>boolean|null</code></td><td data-cell-label=\"要求\"><span class=\"card-cell-label\">要求</span>選填</td><td data-cell-label=\"值與限制\"><span class=\"card-cell-label\">值與限制</span><div>false, null</div></td><td data-cell-label=\"預設值\" data-default=\"unspecified\"><span class=\"card-cell-label\">預設值</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>方法參數與生命週期</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>參數</th><th>規格</th></tr></thead><tbody><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>content_type</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>application/json</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>required</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>endpoint, model, requests</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>material_types</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>text</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>representation</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>內嵌的 requests[]；每個項目皆含 custom_id 與 body</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>request_endpoint_profile</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>file_material</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>呼叫端可在本機將實際的 UTF-8 JSONL 讀入 requests[]。此流程不使用上傳用途、input_file_id 或檔案參照。若缺少客戶素材或素材為空，應在 POST 前停止準備。</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>serialization_order</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>endpoint, model, provider（如有提供）, completion_window（如有提供）, requests 放在最後</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>optional_controls</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"參數\" scope=\"row\"><span class=\"card-cell-label\">參數</span><code>schema_scope</code></th><td data-cell-label=\"規格\"><span class=\"card-cell-label\">規格</span>依文件規定的內嵌 Batch 封裝格式提供文字 Chat Completions 請求主體。</td></tr></tbody></table></div><p>生命週期： <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · 原始建立回應中實際回傳的 response.id；使用相同使用者／金鑰／群組</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">方案</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>費率資訊不會增加請求選項。支援的參數列於所選方法中。</p><dl data-price-conditions><dt>快速模式</dt><dd>未指定 <span class=\"note-s\">選取快速模式時</span></dd><dt>flex 模式</dt><dd>未指定 <span class=\"note-s\">選取 flex 模式時</span></dd><dt>最高推理強度</dt><dd>未指定 <span class=\"note-s\">最高推理強度採用 default 調整值時</span></dd><dt>顯式快取計價</dt><dd>未啟用 <span class=\"note-s\">請求顯式快取時</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot 費率</h4><h4>各設定的價格</h4><p class=\"note-s\">請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>設定</th><th>費率表</th><th>上下文 Token 數大於</th><th>上下文 Token 數小於或等於</th><th>費用</th></tr></thead><tbody><tr><th data-cell-label=\"設定\" scope=\"row\"><span class=\"card-cell-label\">設定</span>詞元基本費率</th><td data-cell-label=\"費率表\"><span class=\"card-cell-label\">費率表</span>基本費率</td><td data-cell-label=\"上下文 Token 數大於\"><span class=\"card-cell-label\">上下文 Token 數大於</span>—</td><td data-cell-label=\"上下文 Token 數小於或等於\"><span class=\"card-cell-label\">上下文 Token 數小於或等於</span>無上限</td><td data-cell-label=\"費用\"><span class=\"card-cell-label\">費用</span><div><span>輸入 · 輸入 Token</span> <b>$0.0025</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸出 · 輸出 Token</span> <b>$0.01</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 讀取快取</span> <b>$0.00125</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取，1 小時</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div></td></tr><tr><th data-cell-label=\"設定\" scope=\"row\"><span class=\"card-cell-label\">設定</span>請求長度級距 1</th><td data-cell-label=\"費率表\"><span class=\"card-cell-label\">費率表</span>—</td><td data-cell-label=\"上下文 Token 數大於\"><span class=\"card-cell-label\">上下文 Token 數大於</span>0</td><td data-cell-label=\"上下文 Token 數小於或等於\"><span class=\"card-cell-label\">上下文 Token 數小於或等於</span>無上限</td><td data-cell-label=\"費用\"><span class=\"card-cell-label\">費用</span><div><span>輸入 · 輸入 Token</span> <b>$0.0025</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸出 · 輸出 Token</span> <b>$0.01</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 讀取快取</span> <b>$0.00125</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div><div><span>輸入 · 寫入快取，1 小時</span> <b>—</b> <span class=\"price-unit\">/ 1K Token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot 會在請求前預留估算金額。取得結果後，依實測用量結算最終費用。串流結算採用最終用量紀錄。<a href=\"/docs/zh-hant-tw/billing/reserve/\">預留金額與結算的運作方式 →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">請求範例</h3><h4>Ailoot Ultra · 批次處理（Batch）</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"程式碼版本\"><button class=\"cg-tab\" id=\"model-code-2052-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 保留的測試資料</button><button class=\"cg-tab\" id=\"model-code-2052-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · 客戶實際的 JSONL</button><button class=\"cg-tab\" id=\"model-code-2052-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2052-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · 儲存每個已完成的結果</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"複製程式碼\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2052-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json\nfrom pathlib import Path\nbody=json.loads(&#39;{&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;,&quot;model&quot;:&quot;openai/gpt-4o:batch&quot;,&quot;requests&quot;:[{&quot;custom_id&quot;:&quot;req-0001&quot;,&quot;body&quot;:{&quot;messages&quot;:[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Hello!&quot;}],&quot;max_tokens&quot;:16}}]}&#39;)\nPath(&quot;batch-request.json&quot;).write_text(json.dumps(body,ensure_ascii=False),encoding=&quot;utf-8&quot;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2052-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-tab-1\" hidden><pre data-lang=\"python\"><code>import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(&quot;Customer JSONL file is missing&quot;)\n    items = [json.loads(line) for line in path.read_text(encoding=&quot;utf-8&quot;).splitlines() if line.strip()]\n    if not items: raise ValueError(&quot;Customer JSONL contains no requests&quot;)\n    ids = set()\n    for item in items:\n        if set(item) != {&quot;custom_id&quot;, &quot;body&quot;}: raise ValueError(&quot;Each item needs custom_id and body&quot;)\n        cid = item[&quot;custom_id&quot;]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(&quot;custom_id must be nonempty and unique&quot;)\n        ids.add(cid)\n        if not isinstance(item[&quot;body&quot;], dict) or not item[&quot;body&quot;].get(&quot;messages&quot;): raise ValueError(&quot;Supply actual text messages&quot;)\n        supplied_model = item[&quot;body&quot;].get(&quot;model&quot;)\n        if supplied_model is not None and supplied_model not in [&#39;openai/gpt-4o:batch&#39;, &#39;openai/gpt-4o&#39;]: raise ValueError(&quot;body.model must be an exact documented caller or wire ID&quot;)\n    return {&quot;endpoint&quot;:&quot;/v1/chat/completions&quot;, &quot;model&quot;:&quot;openai/gpt-4o:batch&quot;, &quot;requests&quot;:items}\n\nif __name__ == &quot;__main__&quot;:\n    material = os.environ.get(&quot;AILOOT_BATCH_REQUESTS_JSONL&quot;, &quot;&quot;)\n    if not material: raise SystemExit(&quot;Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file&quot;)\n    body = prepare_requests(material)\n    key = os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;)\n    if not key: raise SystemExit(&quot;Set AILOOT_API_KEY&quot;)\n    request = Request(&quot;https://api.ailoot.ai/v1/batches&quot;, data=json.dumps(body, ensure_ascii=False).encode(&quot;utf-8&quot;), headers={&quot;Authorization&quot;:&quot;Bearer &quot; + key, &quot;Content-Type&quot;:&quot;application/json&quot;}, method=&quot;POST&quot;)\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(&quot;batch-create-response.json&quot;).write_bytes(raw)\n        print(raw.decode(&quot;utf-8&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2052-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2052-tab-2\" hidden><pre data-lang=\"python\"><code>import json\nfrom pathlib import Path\nraw = Path(&quot;batch-status-response.json&quot;).read_bytes()\nresponse = json.loads(raw)\nif response.get(&quot;status&quot;) != &quot;completed&quot;:\n    raise SystemExit(&quot;Keep the original operation; read its status without resubmitting&quot;)\nresults = response.get(&quot;results&quot;)\nif not isinstance(results, list) or not results:\n    raise SystemExit(&quot;Preserve the original response; completed results are missing&quot;)\nPath(&quot;batch-results.jsonl&quot;).write_text(&quot;&quot;.join(json.dumps(item, ensure_ascii=False) + &quot;\\n&quot; for item in results), encoding=&quot;utf-8&quot;)\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">接收並儲存結果</h3><h4>Ailoot Ultra · 批次處理（Batch）</h4><p class=\"note-s\">內嵌的 results[].response.body JSON</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</code></li></ul><h5>查看工作狀態</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"程式碼版本\"><button class=\"cg-tab\" id=\"model-code-2053-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2053-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · 原始作業狀態</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"複製程式碼\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2053-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2053-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nBATCH_OPERATION_ID=&quot;$(python3 - &lt;&lt;&#39;PY_ID&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(&quot;batch-create-response.json&quot;).read_text(encoding=&quot;utf-8&quot;))\noperation = response.get(&quot;id&quot;)\nif not isinstance(operation, str) or not operation: raise SystemExit(&quot;No actual original operation ID; preserve the response and do not resubmit&quot;)\nprint(quote(operation, safe=&quot;&quot;))\nPY_ID\n)&quot;\ncurl --fail-with-body --silent --show-error &quot;https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o batch-status-response.json\n</code></pre></div></div></div><div class=\"card-result-process\" data-all-results><h5>保留所有已完成的結果</h5><p class=\"note-s\">請保留所有完整傳回的回應、檔案與內容區塊。</p><p class=\"note-s\">保留完整的原始狀態 JSON、每個結果／custom_id，以及完整的回應或錯誤主體。將已完成的 results[] 儲存為 JSONL，不得篩除任何項目。</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>需要檢查原始回應時</h5><p class=\"note-s\">保留原始作業 ID。503 result_pending_check 回應帶有 X-Should-Retry:false；請勿重新提交狀態不明的原始批次。</p></div><details class=\"card-about\" data-output-fields><summary>回應欄位</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>欄位</th><th>類型</th></tr></thead><tbody><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].custom_id</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string|null</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>object|null</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>object|null</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">request_counts</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>object</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].id</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].response.status_code</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>integer</td></tr><tr><th data-cell-label=\"欄位\" scope=\"row\"><span class=\"card-cell-label\">欄位</span><code class=\"card-field-name\">results[].response.request_id</code></th><td data-cell-label=\"類型\" data-field-type><span class=\"card-cell-label\">類型</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>錯誤與後續步驟</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>回應</th><th>條件</th><th>下一步</th></tr></thead><tbody><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>文件規定的內嵌封裝格式無效、索引鍵重複、項目識別有誤，或與已設定的模型能力衝突。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>再次提交前，請先修正指出的欄位。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>401 · <code>authentication_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>API 金鑰無效。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>使用已獲授權的 Ailoot 金鑰。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>403 · <code>permission_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>批次處理群組無法使用。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>檢查金鑰／群組的使用權限。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>批次處理採用餘額計費；透過訂閱建立批次的請求會遭拒絕。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>使用已獲授權、以餘額計費的群組。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>無法為批次輸入估價。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>保留回應；使用文件規定的該 API 家族輸入格式。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>402 · <code>billing_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>批次處理的預留額度無法取得。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>提交新請求前，請先解決請求受理問題。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>批次處理方法的價格／原生費率無法取得。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>保留回應；請勿替換價格。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>503 · <code>api_error</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>指定的供應商路由無法使用。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>保留回應，以供修復路由。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>原始結果需要檢查；X-Should-Retry:false。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>保留原始 operation_id/id 並讀取其狀態；請勿重複原始 POST。</td></tr><tr><th data-cell-label=\"回應\" scope=\"row\"><span class=\"card-cell-label\">回應</span>404 · <code>not_found</code></th><td data-cell-label=\"條件\"><span class=\"card-cell-label\">條件</span>查詢批次狀態所需的作業不存在，或屬於其他身分。</td><td data-cell-label=\"下一步\"><span class=\"card-cell-label\">下一步</span>使用完全相同的原始 id，以及相同的使用者／金鑰／群組。</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">別名</h3><h4>模型別名</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-4o%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4o%3Abatch&amp;fmt=batches\"><code>openai/gpt-4o:batch</code></a></span></p><h4>方法路徑別名</h4><p class=\"note-s\">請使用上方列出的 API 方法路徑。</p><h4>相關呼叫用 ID</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4o%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4o%3Abatch&amp;fmt=batches\"><code>openai/gpt-4o:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4o:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|openai%2Fgpt-4o%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 1.25,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "文件規定的內嵌封裝格式無效、索引鍵重複、項目識別有誤，或與已設定的模型能力衝突。",
                "http_status": 400,
                "recovery": "再次提交前，請先修正指出的欄位。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "API 金鑰無效。",
                "http_status": 401,
                "recovery": "使用已獲授權的 Ailoot 金鑰。",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "批次處理群組無法使用。",
                "http_status": 403,
                "recovery": "檢查金鑰／群組的使用權限。",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "批次處理採用餘額計費；透過訂閱建立批次的請求會遭拒絕。",
                "http_status": 422,
                "recovery": "使用已獲授權、以餘額計費的群組。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "無法為批次輸入估價。",
                "http_status": 422,
                "recovery": "保留回應；使用文件規定的該 API 家族輸入格式。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "批次處理的預留額度無法取得。",
                "http_status": 402,
                "recovery": "提交新請求前，請先解決請求受理問題。",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "批次處理方法的價格／原生費率無法取得。",
                "http_status": 503,
                "recovery": "保留回應；請勿替換價格。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "指定的供應商路由無法使用。",
                "http_status": 503,
                "recovery": "保留回應，以供修復路由。",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "原始結果需要檢查；X-Should-Retry:false。",
                "http_status": 503,
                "recovery": "保留原始 operation_id/id 並讀取其狀態；請勿重複原始 POST。",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "查詢批次狀態所需的作業不存在，或屬於其他身分。",
                "http_status": 404,
                "recovery": "使用完全相同的原始 id，以及相同的使用者／金鑰／群組。",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4o:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "保留完整的原始狀態 JSON、每個結果／custom_id，以及完整的回應或錯誤主體。將已完成的 results[] 儲存為 JSONL，不得篩除任何項目。",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "內嵌的 results[].response.body JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o:batch",
                  "openai/gpt-4o"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "openai"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "openai"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "openai/gpt-4o:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "openai"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "openai"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "openai/gpt-4o:batch",
                              "openai/gpt-4o"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4o:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "呼叫端可在本機將實際的 UTF-8 JSONL 讀入 requests[]。此流程不使用上傳用途、input_file_id 或檔案參照。若缺少客戶素材或素材為空，應在 POST 前停止準備。",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "內嵌的 requests[]；每個項目皆含 custom_id 與 body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "依文件規定的內嵌 Batch 封裝格式提供文字 Chat Completions 請求主體。",
            "serialization_order": [
              "endpoint",
              "model",
              "provider（如有提供）",
              "completion_window（如有提供）",
              "requests 放在最後"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "原始建立回應中實際回傳的 response.id；使用相同使用者／金鑰／群組",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "保留原始作業 ID。503 result_pending_check 回應帶有 X-Should-Retry:false；請勿重新提交狀態不明的原始批次。"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "詞元基本費率",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "請求長度級距 1",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"openai/gpt-4o:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['openai/gpt-4o:batch', 'openai/gpt-4o']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4o:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 2.5,
        "input": [
          "text"
        ],
        "label": "批次處理（Batch）",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 10,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "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"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 1.25,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2.5,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 10,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.00125000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.00000125",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "openai/gpt-4o:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "022a7f62e8d2c9006646a9cdaed704c939383ba420f61dfda54fe0f7e4ef69f4",
    "input_html_sha256": "7a52bef0ac13ee97e75921debeca68c423bc758e95ba8527e3f90b40083e36f5",
    "private_audit_sha256": "7b4881cd2ed119ae171f2b36844eb82b414c66c78f183b6c047f02c6482c2737",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/zh-hant-tw/openai-gpt-4o-u003a-batch/",
    "description": "GPT-4o 將文字與圖片理解結合寫作、程式設計、Structured Outputs 及應用程式工具。可用來撰寫有證據支持的回應、解讀視覺素材，或從大量來源資料中回傳定義好的欄位。",
    "locale": "zh-hant-tw",
    "md_url": "https://ailoot.ai/models/zh-hant-tw/openai-gpt-4o-u003a-batch/index.md",
    "title": "OpenAI: GPT-4o (batch) — Ailoot",
    "url": "https://ailoot.ai/models/zh-hant-tw/openai-gpt-4o-u003a-batch/"
  },
  "rawModel": {
    "about": "GPT-4o 是 OpenAI 用於文字與圖片理解、寫作及應用程式工作的多用途 GPT 模型。「o」代表「omni」，而這個有文件記載的模型接受文字與圖片，回傳包含 Structured Outputs 在內的文字。實際請求可以結合書面需求與照片、螢幕截圖或文件頁面，要求清楚解釋、編輯後的成品，或供下一個應用程式階段使用的定義欄位。\n\n撰寫報告時，提供來源文件及報告應支持的決策。指出相關日期、單位與證據標籤，再要求比較，區分觀察、假設與缺少的資訊。視覺任務中，指出重要的物件、圖表或介面狀態，並提供周圍脈絡。修改程式碼時，提供受影響的程式碼、預期行為與必須維持的限制。這些是具體運用模型文字與圖片能力的方法，不必依賴提示詞暗示整個任務。\n\nOpenAI 目前的 GPT-4o 設定檔列出 128,000 個 token 的上下文視窗、16,384 個 token 的最大輸出，以及 2023 年 10 月 1 日的知識截止日。開發商另外列出多個具日期的 GPT-4o 快照。對話、輸入素材與生成答案共用上下文額度，因此大量文件仍需要整理，並為最終成品留出空間。會變動或來自私人系統的事實，應直接提供，或透過明確設定的工具取得。\n\n視覺指南接受 PNG、JPEG、WebP 及非動畫 GIF。GPT-4o 支援 low、high 與 auto 圖片詳細程度；high 與 auto 採分塊處理。解讀圖表時，放大小標籤、保持文字正向，並保留圖例或周圍圖解。文件記載的限制包括精確空間定位、粗略物件計數、部分非拉丁文字，以及全景或魚眼視角。模型也可能錯誤描述圖片，因此應保留來源，並要求指出支持解讀的具體觀察。在 OpenAI 有文件記載的視覺工作流程中，請求總酬載上限為 512 MB，每個請求最多可包含 1,500 張圖片；圖片與文字也必須容納於模型上下文。\n\nOpenAI 的檔案輸入流程會同時向具視覺能力的模型提供 PDF 擷取文字與頁面圖片。非 PDF 辦公室文件提供擷取文字，而非其中的內嵌圖表；試算表則從每個工作表前最多 1,000 列補充資訊。每個檔案必須小於 50 MB，單次請求的合計上限為 50 MB。Chat Completions 支援 PDF 檔案部分；文件記載的 Responses 流程接受其他檔案格式。視覺忠實度重要時，選擇 PDF 表示形式，並在結果中保留可見的來源識別碼。\n\n串流可在回應生成時逐步回傳。Structured Outputs 將完成的回應限制在 JSON Schema 支援的子集內，適合文件擷取或具有定義欄位的應用程式物件。JSON 模式只處理 JSON 有效性。定義預期型別、允許值及缺少證據時的處理方式，再將明確拒絕或未完成回應分開處理。Schema 無法證明值在事實上正確，因此所要求的欄位應能追溯至提供的素材。\n\n開發商支援函式呼叫、網頁搜尋、檔案搜尋、程式碼執行與 MCP 連線。自訂函式需要有意義的說明與引數 schema；應用程式執行要求的動作，並將結果回傳供下一個模型步驟使用。GPT-4o 也能在已設定的 Responses 流程中指揮獨立的圖片生成工具。工具建立的圖片是獨立成品，而 GPT-4o 文件記載的原生回應是文字。代理的最終解釋應使用實際擷取或計算的觀察，不應將提議的工具呼叫視為已完成操作。\n\nGPT-4o 可在稍作修改後重新生成大部分已知的文字或程式碼時使用 Predicted Outputs。提供現有內容與精確變更，再檢查回傳成品。這條純文字路徑無法與函式呼叫結合，且排除 logprobs、max_completion_tokens 及其他若干控制項。當答案依賴外部操作取得的新資訊時，工具請求是另一個選項。\n\nOpenAI 有 GPT-4o 微調文件，其最佳化指南明確指定 2024 年 8 月 6 日快照，用於採用圖片範例的視覺微調。這種特定快照的客製化流程，與對模型別名的一般請求不同。日常寫作、分析或擷取可以從有用的需求說明與預期輸出範例開始。後續請求可以解決一項缺少的事實、修改欄位或精修同一個成品，同時保留任務的證據與限制。",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 128000,
      "manufacturer_input": [
        "text",
        "image",
        "file"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "完整的設定價格資訊請見詳細資料。"
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "openai/gpt-4o:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 1.25,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Preserve full JSON and every result; provider real IDs are only read from actual returned responses.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "文件規定的內嵌封裝格式無效、索引鍵重複、項目識別有誤，或與已設定的模型能力衝突。",
                "http_status": 400,
                "recovery": "再次提交前，請先修正指出的欄位。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "API 金鑰無效。",
                "http_status": 401,
                "recovery": "使用已獲授權的 Ailoot 金鑰。",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "批次處理群組無法使用。",
                "http_status": 403,
                "recovery": "檢查金鑰／群組的使用權限。",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "批次處理採用餘額計費；透過訂閱建立批次的請求會遭拒絕。",
                "http_status": 422,
                "recovery": "使用已獲授權、以餘額計費的群組。",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "無法為批次輸入估價。",
                "http_status": 422,
                "recovery": "保留回應；使用文件規定的該 API 家族輸入格式。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "批次處理的預留額度無法取得。",
                "http_status": 402,
                "recovery": "提交新請求前，請先解決請求受理問題。",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "批次處理方法的價格／原生費率無法取得。",
                "http_status": 503,
                "recovery": "保留回應；請勿替換價格。",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "指定的供應商路由無法使用。",
                "http_status": 503,
                "recovery": "保留回應，以供修復路由。",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "原始結果需要檢查；X-Should-Retry:false。",
                "http_status": 503,
                "recovery": "保留原始 operation_id/id 並讀取其狀態；請勿重複原始 POST。",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "查詢批次狀態所需的作業不存在，或屬於其他身分。",
                "http_status": 404,
                "recovery": "使用完全相同的原始 id，以及相同的使用者／金鑰／群組。",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4o:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "input_constraints": [
              "Use the exact shown :batch model ID.",
              "Each custom_id must be nonempty and unique within the batch.",
              "Keep requests last in the serialized body; duplicate JSON keys are rejected.",
              "Each body.model is omitted or equals the exact batch caller or its documented base ID.",
              "Per-item provider, service_tier and input_type are outside this batch profile.",
              "stream is omitted or false.",
              "Supply text messages for this Chat batch profile; image/audio/file/video objects, hosted tools and cache-control fields are outside this profile.",
              "If body.model is present, use only the exact caller or wire ID listed here; no suffix conversion is needed.",
              "For google/ wire IDs, all items use an identical response_format."
            ],
            "outputs": {
              "all_results": "保留完整的原始狀態 JSON、每個結果／custom_id，以及完整的回應或錯誤主體。將已完成的 results[] 儲存為 JSONL，不得篩除任何項目。",
              "enclosing_family": "batch",
              "family": "text",
              "fields": [
                {
                  "name": "results[].custom_id",
                  "type": "string"
                },
                {
                  "name": "results[].response.body.choices[].message.content",
                  "type": "string|null"
                },
                {
                  "name": "results[].error",
                  "type": "object|null"
                },
                {
                  "name": "usage",
                  "type": "object|null"
                },
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "endpoint",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "request_counts",
                  "type": "object"
                },
                {
                  "description": null,
                  "name": "results[].id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "results[].response.status_code",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "results[].response.request_id",
                  "type": "string"
                }
              ],
              "format": "內嵌的 results[].response.body JSON"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "/v1/chat/completions"
                ],
                "enum_known": true,
                "name": "endpoint",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o:batch"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "requests",
                "required": true,
                "type": "batch_item[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].custom_id",
                "required": true,
                "type": "string",
                "unique_within_batch": true
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "requests[].body.messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "24h"
                ],
                "enum_known": true,
                "name": "completion_window",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "openai/gpt-4o:batch",
                  "openai/gpt-4o"
                ],
                "enum_known": true,
                "name": "requests[].body.model",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  [
                    "openai"
                  ]
                ],
                "enum_known": true,
                "name": "provider.only",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  null
                ],
                "enum_known": true,
                "name": "provider.allow_fallbacks",
                "required": false,
                "type": "boolean|null"
              }
            ],
            "provider_policy": {
              "allow_fallbacks": false,
              "configured_only": [
                "openai"
              ],
              "per_item_override": false,
              "when_omitted": "Current Source injects the exact persisted declaration before fresh submission."
            },
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "completion_window": {
                  "enum": [
                    "24h"
                  ],
                  "type": "string"
                },
                "endpoint": {
                  "enum": [
                    "/v1/chat/completions"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "openai/gpt-4o:batch"
                  ],
                  "type": "string"
                },
                "provider": {
                  "additionalProperties": false,
                  "properties": {
                    "allow_fallbacks": {
                      "enum": [
                        false,
                        null
                      ],
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "only": {
                      "enum": [
                        [
                          "openai"
                        ]
                      ],
                      "items": {
                        "enum": [
                          "openai"
                        ],
                        "type": "string"
                      },
                      "maxItems": 1,
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "requests": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "body": {
                        "additionalProperties": true,
                        "properties": {
                          "max_tokens": {
                            "minimum": 1,
                            "type": "integer"
                          },
                          "messages": {
                            "items": {
                              "properties": {
                                "content": {
                                  "type": "string"
                                },
                                "role": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "role",
                                "content"
                              ],
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          },
                          "model": {
                            "enum": [
                              "openai/gpt-4o:batch",
                              "openai/gpt-4o"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "messages"
                        ],
                        "type": "object"
                      },
                      "custom_id": {
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "custom_id",
                      "body"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "endpoint",
                "model",
                "requests"
              ],
              "type": "object"
            },
            "schema_template": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4o:batch",
              "requests": [
                {
                  "body": {
                    "max_tokens": 16,
                    "messages": [
                      {
                        "content": "Hello!",
                        "role": "user"
                      }
                    ]
                  },
                  "custom_id": "req-0001"
                }
              ]
            },
            "unsupported": [
              "Files/input_file_id batch upload workflow",
              "active cancel route",
              "public batch list/delete/result-download route",
              "model-name-derived capability or weights equivalence"
            ]
          },
          "input": {
            "content_type": "application/json",
            "file_material": "呼叫端可在本機將實際的 UTF-8 JSONL 讀入 requests[]。此流程不使用上傳用途、input_file_id 或檔案參照。若缺少客戶素材或素材為空，應在 POST 前停止準備。",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "內嵌的 requests[]；每個項目皆含 custom_id 與 body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "依文件規定的內嵌 Batch 封裝格式提供文字 Chat Completions 請求主體。",
            "serialization_order": [
              "endpoint",
              "model",
              "provider（如有提供）",
              "completion_window（如有提供）",
              "requests 放在最後"
            ]
          },
          "lifecycle": {
            "cancel": null,
            "create": {
              "accepted_status": 202,
              "http": "POST",
              "path": "/v1/batches"
            },
            "delete": null,
            "file_upload": null,
            "mode": "asynchronous",
            "observed_status_values": [
              "validating",
              "in_progress",
              "finalizing",
              "completed",
              "failed",
              "expired",
              "cancelling",
              "cancelled"
            ],
            "owned_results": {
              "behavior": "Completed results are saved as owned JSONL, read back byte-for-byte and registered in the existing media library before publication after settlement. Status returns inline results; no separate Batch download route is added.",
              "format": "application/x-ndjson",
              "public_url_field_in_status": null
            },
            "status": {
              "http": "GET",
              "id_source": "原始建立回應中實際回傳的 response.id；使用相同使用者／金鑰／群組",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "保留原始作業 ID。503 result_pending_check 回應帶有 X-Should-Retry:false；請勿重新提交狀態不明的原始批次。"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/batches"
          },
          "output": {
            "all_results": "Preserve the full original status JSON, every result/custom_id and complete response or error body. Save completed results[] as JSONL without filtering.",
            "family": "batch",
            "format": "JSON; completed results[] are returned inline and can be saved as JSONL."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "詞元基本費率",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "請求長度級距 1",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json\nfrom pathlib import Path\nbody=json.loads('{\"endpoint\":\"/v1/chat/completions\",\"model\":\"openai/gpt-4o:batch\",\"requests\":[{\"custom_id\":\"req-0001\",\"body\":{\"messages\":[{\"role\":\"user\",\"content\":\"Hello!\"}],\"max_tokens\":16}}]}')\nPath(\"batch-request.json\").write_text(json.dumps(body,ensure_ascii=False),encoding=\"utf-8\")\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json\n",
            "label": "curl · retained fixture",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\nfrom urllib.request import Request, urlopen\n\ndef prepare_requests(customer_path):\n    path = Path(customer_path)\n    if not path.is_file(): raise ValueError(\"Customer JSONL file is missing\")\n    items = [json.loads(line) for line in path.read_text(encoding=\"utf-8\").splitlines() if line.strip()]\n    if not items: raise ValueError(\"Customer JSONL contains no requests\")\n    ids = set()\n    for item in items:\n        if set(item) != {\"custom_id\", \"body\"}: raise ValueError(\"Each item needs custom_id and body\")\n        cid = item[\"custom_id\"]\n        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError(\"custom_id must be nonempty and unique\")\n        ids.add(cid)\n        if not isinstance(item[\"body\"], dict) or not item[\"body\"].get(\"messages\"): raise ValueError(\"Supply actual text messages\")\n        supplied_model = item[\"body\"].get(\"model\")\n        if supplied_model is not None and supplied_model not in ['openai/gpt-4o:batch', 'openai/gpt-4o']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4o:batch\", \"requests\":items}\n\nif __name__ == \"__main__\":\n    material = os.environ.get(\"AILOOT_BATCH_REQUESTS_JSONL\", \"\")\n    if not material: raise SystemExit(\"Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file\")\n    body = prepare_requests(material)\n    key = os.environ.get(\"AILOOT_API_KEY\", \"\")\n    if not key: raise SystemExit(\"Set AILOOT_API_KEY\")\n    request = Request(\"https://api.ailoot.ai/v1/batches\", data=json.dumps(body, ensure_ascii=False).encode(\"utf-8\"), headers={\"Authorization\":\"Bearer \" + key, \"Content-Type\":\"application/json\"}, method=\"POST\")\n    with urlopen(request) as response:\n        raw = response.read()\n        Path(\"batch-create-response.json\").write_bytes(raw)\n        print(raw.decode(\"utf-8\"))\n",
            "label": "Python HTTP · actual customer JSONL",
            "language": "python"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nBATCH_OPERATION_ID=\"$(python3 - <<'PY_ID'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nresponse = json.loads(Path(\"batch-create-response.json\").read_text(encoding=\"utf-8\"))\noperation = response.get(\"id\")\nif not isinstance(operation, str) or not operation: raise SystemExit(\"No actual original operation ID; preserve the response and do not resubmit\")\nprint(quote(operation, safe=\"\"))\nPY_ID\n)\"\ncurl --fail-with-body --silent --show-error \"https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o batch-status-response.json\n",
            "label": "curl · original operation status",
            "language": "bash"
          },
          {
            "code": "import json\nfrom pathlib import Path\nraw = Path(\"batch-status-response.json\").read_bytes()\nresponse = json.loads(raw)\nif response.get(\"status\") != \"completed\":\n    raise SystemExit(\"Keep the original operation; read its status without resubmitting\")\nresults = response.get(\"results\")\nif not isinstance(results, list) or not results:\n    raise SystemExit(\"Preserve the original response; completed results are missing\")\nPath(\"batch-results.jsonl\").write_text(\"\".join(json.dumps(item, ensure_ascii=False) + \"\\n\" for item in results), encoding=\"utf-8\")\n# Preserve batch-status-response.json with aggregate usage and every result/error.\n",
            "label": "Python · save every completed result",
            "language": "python"
          }
        ],
        "family": "batch",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "batches",
        "hints": [
          "Read your actual request items before submission; inline requests are required.",
          "Keep the returned operation ID and every result. Never replay an unknown submission."
        ],
        "http": "POST",
        "in": 2.5,
        "input": [
          "text"
        ],
        "label": "批次處理（Batch）",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 10,
        "output": [
          "text"
        ],
        "path": "/v1/batches",
        "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"
          },
          {
            "label": "Explicit cache pricing",
            "value": "Not enabled",
            "when": "When explicit cache is requested"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.0025000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000025",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.01000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00001",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": "0.00125000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": "0.00000125",
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "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": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 1.25,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 2.5,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 10,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0025000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000025",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.01000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00001",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": "0.00125000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": "0.00000125",
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "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": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "openai/gpt-4o:batch",
        "request_model_id": "openai/gpt-4o:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT-4o (batch)",
    "price": {
      "in": 2.5,
      "in_label": null,
      "out": 10,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 2.5,
      "sort_out": 10,
      "varies": true
    },
    "short": "GPT-4o 將文字與圖片理解結合寫作、程式設計、Structured Outputs 及應用程式工具。可用來撰寫有證據支持的回應、解讀視覺素材，或從大量來源資料中回傳定義好的欄位。"
  },
  "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": "GPT-4o 將文字與圖片理解結合寫作、程式設計、Structured Outputs 及應用程式工具。可用來撰寫有證據支持的回應、解讀視覺素材，或從大量來源資料中回傳定義好的欄位。",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d05fa601e6e6b1c071a3fc913cb7e99299ddab1673e681d2a795ad5d0a4a868f",
    "renderer_sha256": "13a3fc1b22d07359278e2249d630bfc9bb9e6416c71ba53def933fb5a903660b"
  },
  "sourceRevision": "1f09529aff4d8116e2445bf0d866452cb392dce7489d7ebcce478eee7efe1629"
}
