{
  "aboutHtml": "<p>GPT-4.1 Nano ialah anggota terpantas keluarga GPT-4.1 OpenAI, direka untuk mengikuti arahan dan membuat panggilan alat tanpa langkah penaakulan berasingan. Model ini menerima teks dan imej serta menghasilkan teks. Nano sesuai untuk operasi yang ditakrifkan dengan jelas apabila aplikasi memerlukan jawapan padat, set medan atau permintaan alat seterusnya dan bukannya penyiasatan yang luas.</p><p>Contoh yang berguna ialah mengisih mesej masuk mengikut set kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara mewakili mesej yang kabur atau di luar skop dan minta kategori bersama frasa sumber yang menyokongnya. Bagi pengekstrakan, takrifkan nama medan, nilai yang dibenarkan dan pengendalian maklumat yang tiada. Bagi tugas penulisan pendek, berikan fakta dan minta petikan khusus yang diperlukan oleh peringkat aplikasi seterusnya. Contoh serta kekangan perlu cukup kecil untuk kekal jelas walaupun koleksi sumber besar.</p><p>Pengeluar menyenaraikan tetingkap konteks 1047576 token, output maksimum 32768 token dan had pengetahuan 1 Jun 2024. Spesifikasi ini sepadan dengan tetingkap GPT-4.1 Mini sambil mengekalkan identiti model Nano yang berasingan dan peranannya yang berorientasikan respons pantas. Labelkan dokumen serta bahagian perbualan, sertakan hanya konteks yang relevan dengan operasi dan sediakan ruang untuk jawapan lengkap. Hasil carian atau teks rujukan yang diberikan boleh menyediakan fakta yang lebih baharu daripada pengetahuan yang dipelajari oleh model.</p><p>Nano menyokong penstriman dan Structured Outputs. Respons akhir yang dibatasi skema mempunyai tujuan berbeza daripada panggilan fungsi: satu memberikan aplikasi artifak lengkap, manakala satu lagi memintanya melaksanakan operasi. Structured Outputs menyokong subset JSON Schema; takrifkan sifat wajib dan perwakilan yang jelas bagi nilai yang tidak diketahui. Kendalikan penolakan dan respons tidak lengkap secara berasingan, serta semak nilai yang diekstrak berdasarkan input dan bukannya menyamakan bentuk yang sah dengan kesimpulan yang betul.</p><p>Set alat yang didokumenkan merangkumi panggilan fungsi, carian fail, pentafsiran kod, sambungan MCP dan alat penjanaan imej berasingan. Aplikasi memberikan huraian dan skema alat, melaksanakan fungsi tersuai serta mengembalikan hasil sebenar. Bagi snapshot Nano bertarikh 14 April 2025, OpenAI secara khusus mengesyorkan supaya panggilan alat selari dinyahaktifkan kerana model boleh meminta alat yang sama beberapa kali dalam satu giliran. Ini ialah pertimbangan pelaksanaan khusus snapshot, bukannya alasan untuk mentafsir beberapa panggilan yang dicadangkan sebagai tindakan yang telah selesai.</p><p>Input imej menambahkan bukti visual kepada tugas teks, seperti membaca label yang kelihatan atau menghuraikan keadaan dalam tangkapan skrin. Gunakan imej PNG, JPEG, WebP atau GIF tanpa animasi yang disokong, pastikan teks boleh dibaca dan jelaskan pemerhatian yang penting. Panduan penglihatan menyatakan kesukaran dengan teks kecil atau diputar, hubungan ruang yang tepat, kiraan objek dan sesetengah tulisan bukan Latin. Berikan konteks sekeliling apabila potongan imej sahaja akan menjadikan label atau rajah kabur. Respons Nano sendiri ialah teks; alat penjanaan imej mengembalikan artifaknya sendiri yang berasingan. Dalam aliran kerja penglihatan yang didokumenkan oleh OpenAI, jumlah muatan permintaan dihadkan kepada 512 MB dan satu permintaan boleh merangkumi sehingga 1500 imej; imej serta teks juga mesti muat dalam konteks model.</p><p>Dalam aliran kerja fail pengeluar, model yang berkeupayaan penglihatan menerima teks yang diekstrak dan imej halaman daripada PDF. Format dokumen lain menyumbang teks yang diekstrak, dan pengayaan hamparan mempertimbangkan sehingga 1000 baris pertama bagi setiap helaian. Fail mestilah di bawah 50 MB, dengan jumlah gabungan 50 MB bagi satu permintaan. Chat Completions menyokong bahagian fail PDF, manakala aliran kerja Responses yang didokumenkan menerima jenis fail tambahan. Carta terbenam dalam dokumen bukan PDF tidak dihantar sebagai kandungan imej, jadi perwakilan PDF berguna apabila bukti visual penting.</p><p>OpenAI mendokumenkan cache prompt bagi Nano dan Predicted Outputs bagi siri GPT-4.1 Nano. Cache prompt menggunakan semula awalan input yang layak dalam perkhidmatan pengeluar. Sebaliknya, Predicted Outputs memberikan teks output yang sebahagian besarnya telah diketahui untuk suntingan, seperti menyemak dokumen atau fail kod sambil mengekalkan bahagian yang tidak berubah. Laluan ramalan hanya untuk teks dan mengecualikan panggilan fungsi, logprobs dan max_completion_tokens, antara kawalan lain. Pilih laluan untuk operasi sebenar dan kekalkan kaitan hasil dengan sumber asal.</p><p>Pengeluar turut mendokumenkan fine-tuning terselia dan pengoptimuman keutamaan langsung bagi snapshot GPT-4.1 Nano yang dinamakan secara khusus. Contoh latihan dan respons yang diutamakan berbanding respons yang ditolak menyesuaikan model kepada tugas berulang; kedua-duanya berbeza daripada konteks yang diberikan kepada permintaan biasa. Bagi peringkat pengekstrakan atau pengelasan praktikal, mulakan dengan kategori yang jelas, contoh dan format akhir yang nyata, kemudian periksa sama ada medan yang dikembalikan mengekalkan fakta yang akan digunakan oleh peringkat seterusnya.</p>",
  "aboutText": "GPT-4.1 Nano ialah anggota terpantas keluarga GPT-4.1 OpenAI, direka untuk mengikuti arahan dan membuat panggilan alat tanpa langkah penaakulan berasingan. Model ini menerima teks dan imej serta menghasilkan teks. Nano sesuai untuk operasi yang ditakrifkan dengan jelas apabila aplikasi memerlukan jawapan padat, set medan atau permintaan alat seterusnya dan bukannya penyiasatan yang luas.\n\nContoh yang berguna ialah mengisih mesej masuk mengikut set kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara mewakili mesej yang kabur atau di luar skop dan minta kategori bersama frasa sumber yang menyokongnya. Bagi pengekstrakan, takrifkan nama medan, nilai yang dibenarkan dan pengendalian maklumat yang tiada. Bagi tugas penulisan pendek, berikan fakta dan minta petikan khusus yang diperlukan oleh peringkat aplikasi seterusnya. Contoh serta kekangan perlu cukup kecil untuk kekal jelas walaupun koleksi sumber besar.\n\nPengeluar menyenaraikan tetingkap konteks 1047576 token, output maksimum 32768 token dan had pengetahuan 1 Jun 2024. Spesifikasi ini sepadan dengan tetingkap GPT-4.1 Mini sambil mengekalkan identiti model Nano yang berasingan dan peranannya yang berorientasikan respons pantas. Labelkan dokumen serta bahagian perbualan, sertakan hanya konteks yang relevan dengan operasi dan sediakan ruang untuk jawapan lengkap. Hasil carian atau teks rujukan yang diberikan boleh menyediakan fakta yang lebih baharu daripada pengetahuan yang dipelajari oleh model.\n\nNano menyokong penstriman dan Structured Outputs. Respons akhir yang dibatasi skema mempunyai tujuan berbeza daripada panggilan fungsi: satu memberikan aplikasi artifak lengkap, manakala satu lagi memintanya melaksanakan operasi. Structured Outputs menyokong subset JSON Schema; takrifkan sifat wajib dan perwakilan yang jelas bagi nilai yang tidak diketahui. Kendalikan penolakan dan respons tidak lengkap secara berasingan, serta semak nilai yang diekstrak berdasarkan input dan bukannya menyamakan bentuk yang sah dengan kesimpulan yang betul.\n\nSet alat yang didokumenkan merangkumi panggilan fungsi, carian fail, pentafsiran kod, sambungan MCP dan alat penjanaan imej berasingan. Aplikasi memberikan huraian dan skema alat, melaksanakan fungsi tersuai serta mengembalikan hasil sebenar. Bagi snapshot Nano bertarikh 14 April 2025, OpenAI secara khusus mengesyorkan supaya panggilan alat selari dinyahaktifkan kerana model boleh meminta alat yang sama beberapa kali dalam satu giliran. Ini ialah pertimbangan pelaksanaan khusus snapshot, bukannya alasan untuk mentafsir beberapa panggilan yang dicadangkan sebagai tindakan yang telah selesai.\n\nInput imej menambahkan bukti visual kepada tugas teks, seperti membaca label yang kelihatan atau menghuraikan keadaan dalam tangkapan skrin. Gunakan imej PNG, JPEG, WebP atau GIF tanpa animasi yang disokong, pastikan teks boleh dibaca dan jelaskan pemerhatian yang penting. Panduan penglihatan menyatakan kesukaran dengan teks kecil atau diputar, hubungan ruang yang tepat, kiraan objek dan sesetengah tulisan bukan Latin. Berikan konteks sekeliling apabila potongan imej sahaja akan menjadikan label atau rajah kabur. Respons Nano sendiri ialah teks; alat penjanaan imej mengembalikan artifaknya sendiri yang berasingan. Dalam aliran kerja penglihatan yang didokumenkan oleh OpenAI, jumlah muatan permintaan dihadkan kepada 512 MB dan satu permintaan boleh merangkumi sehingga 1500 imej; imej serta teks juga mesti muat dalam konteks model.\n\nDalam aliran kerja fail pengeluar, model yang berkeupayaan penglihatan menerima teks yang diekstrak dan imej halaman daripada PDF. Format dokumen lain menyumbang teks yang diekstrak, dan pengayaan hamparan mempertimbangkan sehingga 1000 baris pertama bagi setiap helaian. Fail mestilah di bawah 50 MB, dengan jumlah gabungan 50 MB bagi satu permintaan. Chat Completions menyokong bahagian fail PDF, manakala aliran kerja Responses yang didokumenkan menerima jenis fail tambahan. Carta terbenam dalam dokumen bukan PDF tidak dihantar sebagai kandungan imej, jadi perwakilan PDF berguna apabila bukti visual penting.\n\nOpenAI mendokumenkan cache prompt bagi Nano dan Predicted Outputs bagi siri GPT-4.1 Nano. Cache prompt menggunakan semula awalan input yang layak dalam perkhidmatan pengeluar. Sebaliknya, Predicted Outputs memberikan teks output yang sebahagian besarnya telah diketahui untuk suntingan, seperti menyemak dokumen atau fail kod sambil mengekalkan bahagian yang tidak berubah. Laluan ramalan hanya untuk teks dan mengecualikan panggilan fungsi, logprobs dan max_completion_tokens, antara kawalan lain. Pilih laluan untuk operasi sebenar dan kekalkan kaitan hasil dengan sumber asal.\n\nPengeluar turut mendokumenkan fine-tuning terselia dan pengoptimuman keutamaan langsung bagi snapshot GPT-4.1 Nano yang dinamakan secara khusus. Contoh latihan dan respons yang diutamakan berbanding respons yang ditolak menyesuaikan model kepada tugas berulang; kedua-duanya berbeza daripada konteks yang diberikan kepada permintaan biasa. Bagi peringkat pengekstrakan atau pengelasan praktikal, mulakan dengan kategori yang jelas, contoh dan format akhir yang nyata, kemudian periksa sama ada medan yang dikembalikan mengekalkan fakta yang akan digunakan oleh peringkat seterusnya.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "e304cc250b84bcb47dd5b3bb2b7c5f54b1c46a7f75eca45dc5b76678e61bd231",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ms",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">O</span><h2 id=\"sheet-title\">OpenAI: GPT-4.1 Nano (batch)</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Tutup\">×</button></div><div class=\"idline\"><span>OpenAI /</span><code>openai/gpt-4.1-nano:batch</code><button type=\"button\" id=\"copy-id\">Salin ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Bahagian kad model\"><button type=\"button\" data-card-jump=\"overview\">Pengenalan</button><button type=\"button\" data-card-jump=\"methods\">Input &amp; kaedah</button><button type=\"button\" data-card-jump=\"pricing\">Pelan harga</button><button type=\"button\" data-card-jump=\"examples\">Contoh</button><button type=\"button\" data-card-jump=\"results\">Hasil</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Kaedah 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-4.1-nano%3Abatch\">Kelompok</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\">Pengenalan</h3><p class=\"mdesc-full\">GPT-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus.</p><dl class=\"card-io\" data-card-io><div><dt>Input yang diterima</dt><dd>Teks</dd></div><div><dt>Hasil</dt><dd>Teks</dd></div></dl><details class=\"card-about\"><summary>Tentang model</summary><p class=\"note-s\" data-model-method-boundary>Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.</p><div class=\"mabout\" id=\"m-about\"><p>GPT-4.1 Nano ialah anggota terpantas keluarga GPT-4.1 OpenAI, direka untuk mengikuti arahan dan membuat panggilan alat tanpa langkah penaakulan berasingan. Model ini menerima teks dan imej serta menghasilkan teks. Nano sesuai untuk operasi yang ditakrifkan dengan jelas apabila aplikasi memerlukan jawapan padat, set medan atau permintaan alat seterusnya dan bukannya penyiasatan yang luas.</p><p>Contoh yang berguna ialah mengisih mesej masuk mengikut set kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara mewakili mesej yang kabur atau di luar skop dan minta kategori bersama frasa sumber yang menyokongnya. Bagi pengekstrakan, takrifkan nama medan, nilai yang dibenarkan dan pengendalian maklumat yang tiada. Bagi tugas penulisan pendek, berikan fakta dan minta petikan khusus yang diperlukan oleh peringkat aplikasi seterusnya. Contoh serta kekangan perlu cukup kecil untuk kekal jelas walaupun koleksi sumber besar.</p><p>Pengeluar menyenaraikan tetingkap konteks 1047576 token, output maksimum 32768 token dan had pengetahuan 1 Jun 2024. Spesifikasi ini sepadan dengan tetingkap GPT-4.1 Mini sambil mengekalkan identiti model Nano yang berasingan dan peranannya yang berorientasikan respons pantas. Labelkan dokumen serta bahagian perbualan, sertakan hanya konteks yang relevan dengan operasi dan sediakan ruang untuk jawapan lengkap. Hasil carian atau teks rujukan yang diberikan boleh menyediakan fakta yang lebih baharu daripada pengetahuan yang dipelajari oleh model.</p><p>Nano menyokong penstriman dan Structured Outputs. Respons akhir yang dibatasi skema mempunyai tujuan berbeza daripada panggilan fungsi: satu memberikan aplikasi artifak lengkap, manakala satu lagi memintanya melaksanakan operasi. Structured Outputs menyokong subset JSON Schema; takrifkan sifat wajib dan perwakilan yang jelas bagi nilai yang tidak diketahui. Kendalikan penolakan dan respons tidak lengkap secara berasingan, serta semak nilai yang diekstrak berdasarkan input dan bukannya menyamakan bentuk yang sah dengan kesimpulan yang betul.</p><p>Set alat yang didokumenkan merangkumi panggilan fungsi, carian fail, pentafsiran kod, sambungan MCP dan alat penjanaan imej berasingan. Aplikasi memberikan huraian dan skema alat, melaksanakan fungsi tersuai serta mengembalikan hasil sebenar. Bagi snapshot Nano bertarikh 14 April 2025, OpenAI secara khusus mengesyorkan supaya panggilan alat selari dinyahaktifkan kerana model boleh meminta alat yang sama beberapa kali dalam satu giliran. Ini ialah pertimbangan pelaksanaan khusus snapshot, bukannya alasan untuk mentafsir beberapa panggilan yang dicadangkan sebagai tindakan yang telah selesai.</p><p>Input imej menambahkan bukti visual kepada tugas teks, seperti membaca label yang kelihatan atau menghuraikan keadaan dalam tangkapan skrin. Gunakan imej PNG, JPEG, WebP atau GIF tanpa animasi yang disokong, pastikan teks boleh dibaca dan jelaskan pemerhatian yang penting. Panduan penglihatan menyatakan kesukaran dengan teks kecil atau diputar, hubungan ruang yang tepat, kiraan objek dan sesetengah tulisan bukan Latin. Berikan konteks sekeliling apabila potongan imej sahaja akan menjadikan label atau rajah kabur. Respons Nano sendiri ialah teks; alat penjanaan imej mengembalikan artifaknya sendiri yang berasingan. Dalam aliran kerja penglihatan yang didokumenkan oleh OpenAI, jumlah muatan permintaan dihadkan kepada 512 MB dan satu permintaan boleh merangkumi sehingga 1500 imej; imej serta teks juga mesti muat dalam konteks model.</p><p>Dalam aliran kerja fail pengeluar, model yang berkeupayaan penglihatan menerima teks yang diekstrak dan imej halaman daripada PDF. Format dokumen lain menyumbang teks yang diekstrak, dan pengayaan hamparan mempertimbangkan sehingga 1000 baris pertama bagi setiap helaian. Fail mestilah di bawah 50 MB, dengan jumlah gabungan 50 MB bagi satu permintaan. Chat Completions menyokong bahagian fail PDF, manakala aliran kerja Responses yang didokumenkan menerima jenis fail tambahan. Carta terbenam dalam dokumen bukan PDF tidak dihantar sebagai kandungan imej, jadi perwakilan PDF berguna apabila bukti visual penting.</p><p>OpenAI mendokumenkan cache prompt bagi Nano dan Predicted Outputs bagi siri GPT-4.1 Nano. Cache prompt menggunakan semula awalan input yang layak dalam perkhidmatan pengeluar. Sebaliknya, Predicted Outputs memberikan teks output yang sebahagian besarnya telah diketahui untuk suntingan, seperti menyemak dokumen atau fail kod sambil mengekalkan bahagian yang tidak berubah. Laluan ramalan hanya untuk teks dan mengecualikan panggilan fungsi, logprobs dan max_completion_tokens, antara kawalan lain. Pilih laluan untuk operasi sebenar dan kekalkan kaitan hasil dengan sumber asal.</p><p>Pengeluar turut mendokumenkan fine-tuning terselia dan pengoptimuman keutamaan langsung bagi snapshot GPT-4.1 Nano yang dinamakan secara khusus. Contoh latihan dan respons yang diutamakan berbanding respons yang ditolak menyesuaikan model kepada tugas berulang; kedua-duanya berbeza daripada konteks yang diberikan kepada permintaan biasa. Bagi peringkat pengekstrakan atau pengelasan praktikal, mulakan dengan kategori yang jelas, contoh dan format akhir yang nyata, kemudian periksa sama ada medan yang dikembalikan mengekalkan fakta yang akan digunakan oleh peringkat seterusnya.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Tersedia di Ailoot · input &amp; kaedah</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Kelompok</b> <code>POST /v1/batches</code></summary><dl class=\"method-capabilities\"><div><dt>Input</dt><dd><code>text</code></dd></div><div><dt>Output</dt><dd><code>text</code></dd></div><div><dt>Format output</dt><dd>JSON results[].response.body sebaris</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Medan</th><th>Jenis</th><th>Keperluan</th><th>Nilai &amp; had</th><th>Lalai</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>/v1/chat/completions</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>openai/gpt-4.1-nano:batch</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">requests</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>batch_item[]</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>Item minimum: 1</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">requests[].custom_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">requests[].body.messages</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>message[]</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Diperlukan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">completion_window</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>24h</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>object|null</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">requests[].body.model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">provider.only</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>string[]</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>openai</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">provider.allow_fallbacks</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span><code>boolean|null</code></td><td data-cell-label=\"Keperluan\"><span class=\"card-cell-label\">Keperluan</span>Pilihan</td><td data-cell-label=\"Nilai &amp; had\"><span class=\"card-cell-label\">Nilai &amp; had</span><div>false, null</div></td><td data-cell-label=\"Lalai\" data-default=\"unspecified\"><span class=\"card-cell-label\">Lalai</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Parameter kaedah dan kitar hayat</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Kontrak</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>endpoint, model, requests</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>representation</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>requests[] sebaris; setiap item mempunyai custom_id dan body</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>request_endpoint_profile</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>/v1/chat/completions</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>file_material</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>Pemanggil boleh membaca JSONL UTF-8 sebenar secara setempat ke dalam requests[]. Tiada tujuan muat naik, input_file_id atau rujukan fail digunakan. Bahan pelanggan yang tiada atau kosong menghentikan persediaan sebelum POST.</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>serialization_order</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>endpoint, model, provider (jika dibekalkan), completion_window (jika dibekalkan), requests di akhir</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>provider.only, provider.allow_fallbacks, completion_window</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>schema_scope</code></th><td data-cell-label=\"Kontrak\"><span class=\"card-cell-label\">Kontrak</span>Badan permintaan Chat Completions teks dalam pembungkus Batch sebaris yang didokumenkan.</td></tr></tbody></table></div><p>Kitar hayat: <code>asynchronous</code></p><p class=\"note-s\"><code>GET /v1/batches/{operation_id}</code> · response.id sebenar daripada respons penciptaan asal; pengguna/kunci/kumpulan yang sama</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Pelan harga</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.</p><dl data-price-conditions><dt>Mod pantas</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila mod pantas dipilih</span></dd><dt>Mod flex</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila mod flex dipilih</span></dd><dt>Usaha penaakulan maksimum</dt><dd>Tidak dinyatakan <span class=\"note-s\">Apabila usaha penaakulan maksimum menggunakan pelarasan default</span></dd><dt>Harga cache eksplisit</dt><dd>Tidak diaktifkan <span class=\"note-s\">Apabila cache eksplisit diminta</span></dd></dl></div><div data-declared-tariff-pricing><h4>Kadar Ailoot</h4><h4>Harga mengikut konfigurasi</h4><p class=\"note-s\">Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfigurasi</th><th>Jadual kadar</th><th>Token konteks, melebihi</th><th>Token konteks, sehingga dan termasuk</th><th>Caj</th></tr></thead><tbody><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Kadar asas token</th><td data-cell-label=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>Kadar asas</td><td data-cell-label=\"Token konteks, melebihi\"><span class=\"card-cell-label\">Token konteks, melebihi</span>—</td><td data-cell-label=\"Token konteks, sehingga dan termasuk\"><span class=\"card-cell-label\">Token konteks, sehingga dan termasuk</span>Tiada had atas</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input · Token input</span> <b>$0.0001</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token output</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Bacaan cache</span> <b>$0.000025</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Penulisan cache, 1 jam</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Konfigurasi\" scope=\"row\"><span class=\"card-cell-label\">Konfigurasi</span>Tahap panjang permintaan 1</th><td data-cell-label=\"Jadual kadar\"><span class=\"card-cell-label\">Jadual kadar</span>—</td><td data-cell-label=\"Token konteks, melebihi\"><span class=\"card-cell-label\">Token konteks, melebihi</span>0</td><td data-cell-label=\"Token konteks, sehingga dan termasuk\"><span class=\"card-cell-label\">Token konteks, sehingga dan termasuk</span>Tiada had atas</td><td data-cell-label=\"Caj\"><span class=\"card-cell-label\">Caj</span><div><span>Input · Token input</span> <b>$0.0001</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Output · Token output</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Bacaan cache</span> <b>$0.000025</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Penulisan cache</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Input · Penulisan cache, 1 jam</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. <a href=\"/docs/ms/billing/reserve/\">Cara rizab dan penyelesaian caj berfungsi →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Contoh permintaan</h3><h4>Ailoot Ultra · Kelompok</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-2034-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2034-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · data ujian yang disimpan</button><button class=\"cg-tab\" id=\"model-code-2034-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2034-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python HTTP · JSONL sebenar pelanggan</button><button class=\"cg-tab\" id=\"model-code-2034-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2034-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · simpan setiap hasil yang telah siap</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kod\"><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-2034-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2034-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-4.1-nano: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-2034-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2034-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-4.1-nano:batch&#39;, &#39;openai/gpt-4.1-nano&#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-4.1-nano: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-2034-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2034-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\">Terima dan simpan hasil</h3><h4>Ailoot Ultra · Kelompok</h4><p class=\"note-s\">JSON results[].response.body sebaris</p><ul class=\"card-result-paths\"><li><code>GET /v1/batches/{operation_id}</code></li></ul><h5>Semak status tugas</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Pilihan kod\"><button class=\"cg-tab\" id=\"model-code-2035-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2035-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · status operasi asal</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Salin kod\"><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-2035-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2035-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>Simpan semua hasil yang selesai</h5><p class=\"note-s\">Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.</p><p class=\"note-s\">Simpan keseluruhan JSON status asal, setiap hasil/custom_id serta badan respons atau ralat yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penapisan.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Jika respons asal perlu disemak</h5><p class=\"note-s\">Simpan ID operasi asal. 503 result_pending_check mempunyai X-Should-Retry:false; jangan sekali-kali hantar semula kelompok asal yang hasilnya tidak diketahui.</p></div><details class=\"card-about\" data-output-fields><summary>Medan respons</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Medan</th><th>Jenis</th></tr></thead><tbody><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].custom_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].response.body.choices[].message.content</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string|null</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].error</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>object|null</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>object|null</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">endpoint</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">request_counts</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>object</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].response.status_code</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>integer</td></tr><tr><th data-cell-label=\"Medan\" scope=\"row\"><span class=\"card-cell-label\">Medan</span><code class=\"card-field-name\">results[].response.request_id</code></th><td data-cell-label=\"Jenis\" data-field-type><span class=\"card-cell-label\">Jenis</span>string</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ralat dan langkah seterusnya</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Respons</th><th>Syarat</th><th>Langkah seterusnya</th></tr></thead><tbody><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Pembungkus sebaris yang didokumenkan tidak sah, kunci berulang, identiti item atau keupayaan model yang dikonfigurasikan bercanggah.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Betulkan medan yang dinyatakan sebelum sebarang penghantaran baharu.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Kunci API tidak sah.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Gunakan kunci Ailoot yang dibenarkan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>403 · <code>permission_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Kumpulan kelompok tidak tersedia.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Semak hak akses kunci/kumpulan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Kelompok menggunakan pengebilan baki; penciptaan melalui langganan ditolak.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Gunakan kumpulan yang dibenarkan untuk pengebilan melalui baki.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Sebut harga tidak dapat diberikan untuk input kelompok.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan respons; gunakan input keluarga API yang didokumenkan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>402 · <code>billing_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Rizab kelompok tidak tersedia.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Selesaikan isu penerimaan permintaan sebelum menghantar permintaan baharu.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code>price_unavailable</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Harga kaedah kelompok/kadar natif tidak tersedia.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan respons; jangan gantikan harga.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code>api_error</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Laluan pembekal yang tepat tidak tersedia.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan respons untuk pembaikan laluan.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Hasil asal memerlukan semakan; X-Should-Retry:false.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Simpan operation_id/id asal dan baca statusnya; jangan sekali-kali ulang POST asal.</td></tr><tr><th data-cell-label=\"Respons\" scope=\"row\"><span class=\"card-cell-label\">Respons</span>404 · <code>not_found</code></th><td data-cell-label=\"Syarat\"><span class=\"card-cell-label\">Syarat</span>Operasi status kelompok tiada atau dimiliki oleh identiti lain.</td><td data-cell-label=\"Langkah seterusnya\"><span class=\"card-cell-label\">Langkah seterusnya</span>Gunakan id asal yang tepat serta pengguna/kunci/kumpulan yang sama.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias model</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=openai%2Fgpt-4.1-nano%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4.1-nano%3Abatch&amp;fmt=batches\"><code>openai/gpt-4.1-nano:batch</code></a></span></p><h4>Alias laluan kaedah</h4><p class=\"note-s\">Gunakan laluan kaedah yang dipaparkan di atas.</p><h4>ID pemanggil berkaitan</h4><p class=\"note-s\"><a href=\"#m=openai%2Fgpt-4.1-nano%3Abatch&amp;route=Ultra&amp;caller=openai%2Fgpt-4.1-nano%3Abatch&amp;fmt=batches\"><code>openai/gpt-4.1-nano:batch</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "openai/gpt-4.1-nano:batch",
        "fmt": "batches",
        "http": "POST",
        "path": "/v1/batches",
        "request_model_id": "openai/gpt-4.1-nano:batch",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|batches|/v1/batches|openai%2Fgpt-4.1-nano%3Abatch",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": 0.025,
        "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": "Pembungkus sebaris yang didokumenkan tidak sah, kunci berulang, identiti item atau keupayaan model yang dikonfigurasikan bercanggah.",
                "http_status": 400,
                "recovery": "Betulkan medan yang dinyatakan sebelum sebarang penghantaran baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Kunci API tidak sah.",
                "http_status": 401,
                "recovery": "Gunakan kunci Ailoot yang dibenarkan.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Kumpulan kelompok tidak tersedia.",
                "http_status": 403,
                "recovery": "Semak hak akses kunci/kumpulan.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Kelompok menggunakan pengebilan baki; penciptaan melalui langganan ditolak.",
                "http_status": 422,
                "recovery": "Gunakan kumpulan yang dibenarkan untuk pengebilan melalui baki.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Sebut harga tidak dapat diberikan untuk input kelompok.",
                "http_status": 422,
                "recovery": "Simpan respons; gunakan input keluarga API yang didokumenkan.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Rizab kelompok tidak tersedia.",
                "http_status": 402,
                "recovery": "Selesaikan isu penerimaan permintaan sebelum menghantar permintaan baharu.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Harga kaedah kelompok/kadar natif tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons; jangan gantikan harga.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Laluan pembekal yang tepat tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons untuk pembaikan laluan.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Hasil asal memerlukan semakan; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Simpan operation_id/id asal dan baca statusnya; jangan sekali-kali ulang POST asal.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Operasi status kelompok tiada atau dimiliki oleh identiti lain.",
                "http_status": 404,
                "recovery": "Gunakan id asal yang tepat serta pengguna/kunci/kumpulan yang sama.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1-nano: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": "Simpan keseluruhan JSON status asal, setiap hasil/custom_id serta badan respons atau ralat yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penapisan.",
              "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": "JSON results[].response.body sebaris"
            },
            "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-4.1-nano: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-4.1-nano:batch",
                  "openai/gpt-4.1-nano"
                ],
                "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-4.1-nano: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-4.1-nano:batch",
                              "openai/gpt-4.1-nano"
                            ],
                            "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-4.1-nano: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": "Pemanggil boleh membaca JSONL UTF-8 sebenar secara setempat ke dalam requests[]. Tiada tujuan muat naik, input_file_id atau rujukan fail digunakan. Bahan pelanggan yang tiada atau kosong menghentikan persediaan sebelum POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "requests[] sebaris; setiap item mempunyai custom_id dan body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Badan permintaan Chat Completions teks dalam pembungkus Batch sebaris yang didokumenkan.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jika dibekalkan)",
              "completion_window (jika dibekalkan)",
              "requests di akhir"
            ]
          },
          "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 sebenar daripada respons penciptaan asal; pengguna/kunci/kumpulan yang sama",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Simpan ID operasi asal. 503 result_pending_check mempunyai X-Should-Retry:false; jangan sekali-kali hantar semula kelompok asal yang hasilnya tidak diketahui."
          },
          "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": "Kadar asas token",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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": "Tahap panjang permintaan 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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-4.1-nano: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-4.1-nano:batch', 'openai/gpt-4.1-nano']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4.1-nano: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": 0.1,
        "input": [
          "text"
        ],
        "label": "Kelompok",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.4,
        "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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-4.1-nano:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.025,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.1,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.4,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.000025000",
            "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.000000025",
            "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-4.1-nano:batch",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "374e40295d84a5c241d1189de0077bcb54cdc89a3dc502d79abb06f2275d89ce",
    "input_html_sha256": "387ac9fb46a465477d588c42fac55180c56eff57b5ea21423a012387312f747b",
    "private_audit_sha256": "e93dc943b3c70f48ac8fc9aa35da8ec78eab8c09eff4e1ec5751795de158979d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ms/openai-gpt-4-1-nano-u003a-batch/",
    "description": "GPT-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus.",
    "locale": "ms",
    "md_url": "https://ailoot.ai/models/ms/openai-gpt-4-1-nano-u003a-batch/index.md",
    "title": "OpenAI: GPT-4.1 Nano (batch) — Ailoot",
    "url": "https://ailoot.ai/models/ms/openai-gpt-4-1-nano-u003a-batch/"
  },
  "rawModel": {
    "about": "GPT-4.1 Nano ialah anggota terpantas keluarga GPT-4.1 OpenAI, direka untuk mengikuti arahan dan membuat panggilan alat tanpa langkah penaakulan berasingan. Model ini menerima teks dan imej serta menghasilkan teks. Nano sesuai untuk operasi yang ditakrifkan dengan jelas apabila aplikasi memerlukan jawapan padat, set medan atau permintaan alat seterusnya dan bukannya penyiasatan yang luas.\n\nContoh yang berguna ialah mengisih mesej masuk mengikut set kategori yang diberikan. Jelaskan setiap kategori, tunjukkan cara mewakili mesej yang kabur atau di luar skop dan minta kategori bersama frasa sumber yang menyokongnya. Bagi pengekstrakan, takrifkan nama medan, nilai yang dibenarkan dan pengendalian maklumat yang tiada. Bagi tugas penulisan pendek, berikan fakta dan minta petikan khusus yang diperlukan oleh peringkat aplikasi seterusnya. Contoh serta kekangan perlu cukup kecil untuk kekal jelas walaupun koleksi sumber besar.\n\nPengeluar menyenaraikan tetingkap konteks 1047576 token, output maksimum 32768 token dan had pengetahuan 1 Jun 2024. Spesifikasi ini sepadan dengan tetingkap GPT-4.1 Mini sambil mengekalkan identiti model Nano yang berasingan dan peranannya yang berorientasikan respons pantas. Labelkan dokumen serta bahagian perbualan, sertakan hanya konteks yang relevan dengan operasi dan sediakan ruang untuk jawapan lengkap. Hasil carian atau teks rujukan yang diberikan boleh menyediakan fakta yang lebih baharu daripada pengetahuan yang dipelajari oleh model.\n\nNano menyokong penstriman dan Structured Outputs. Respons akhir yang dibatasi skema mempunyai tujuan berbeza daripada panggilan fungsi: satu memberikan aplikasi artifak lengkap, manakala satu lagi memintanya melaksanakan operasi. Structured Outputs menyokong subset JSON Schema; takrifkan sifat wajib dan perwakilan yang jelas bagi nilai yang tidak diketahui. Kendalikan penolakan dan respons tidak lengkap secara berasingan, serta semak nilai yang diekstrak berdasarkan input dan bukannya menyamakan bentuk yang sah dengan kesimpulan yang betul.\n\nSet alat yang didokumenkan merangkumi panggilan fungsi, carian fail, pentafsiran kod, sambungan MCP dan alat penjanaan imej berasingan. Aplikasi memberikan huraian dan skema alat, melaksanakan fungsi tersuai serta mengembalikan hasil sebenar. Bagi snapshot Nano bertarikh 14 April 2025, OpenAI secara khusus mengesyorkan supaya panggilan alat selari dinyahaktifkan kerana model boleh meminta alat yang sama beberapa kali dalam satu giliran. Ini ialah pertimbangan pelaksanaan khusus snapshot, bukannya alasan untuk mentafsir beberapa panggilan yang dicadangkan sebagai tindakan yang telah selesai.\n\nInput imej menambahkan bukti visual kepada tugas teks, seperti membaca label yang kelihatan atau menghuraikan keadaan dalam tangkapan skrin. Gunakan imej PNG, JPEG, WebP atau GIF tanpa animasi yang disokong, pastikan teks boleh dibaca dan jelaskan pemerhatian yang penting. Panduan penglihatan menyatakan kesukaran dengan teks kecil atau diputar, hubungan ruang yang tepat, kiraan objek dan sesetengah tulisan bukan Latin. Berikan konteks sekeliling apabila potongan imej sahaja akan menjadikan label atau rajah kabur. Respons Nano sendiri ialah teks; alat penjanaan imej mengembalikan artifaknya sendiri yang berasingan. Dalam aliran kerja penglihatan yang didokumenkan oleh OpenAI, jumlah muatan permintaan dihadkan kepada 512 MB dan satu permintaan boleh merangkumi sehingga 1500 imej; imej serta teks juga mesti muat dalam konteks model.\n\nDalam aliran kerja fail pengeluar, model yang berkeupayaan penglihatan menerima teks yang diekstrak dan imej halaman daripada PDF. Format dokumen lain menyumbang teks yang diekstrak, dan pengayaan hamparan mempertimbangkan sehingga 1000 baris pertama bagi setiap helaian. Fail mestilah di bawah 50 MB, dengan jumlah gabungan 50 MB bagi satu permintaan. Chat Completions menyokong bahagian fail PDF, manakala aliran kerja Responses yang didokumenkan menerima jenis fail tambahan. Carta terbenam dalam dokumen bukan PDF tidak dihantar sebagai kandungan imej, jadi perwakilan PDF berguna apabila bukti visual penting.\n\nOpenAI mendokumenkan cache prompt bagi Nano dan Predicted Outputs bagi siri GPT-4.1 Nano. Cache prompt menggunakan semula awalan input yang layak dalam perkhidmatan pengeluar. Sebaliknya, Predicted Outputs memberikan teks output yang sebahagian besarnya telah diketahui untuk suntingan, seperti menyemak dokumen atau fail kod sambil mengekalkan bahagian yang tidak berubah. Laluan ramalan hanya untuk teks dan mengecualikan panggilan fungsi, logprobs dan max_completion_tokens, antara kawalan lain. Pilih laluan untuk operasi sebenar dan kekalkan kaitan hasil dengan sumber asal.\n\nPengeluar turut mendokumenkan fine-tuning terselia dan pengoptimuman keutamaan langsung bagi snapshot GPT-4.1 Nano yang dinamakan secara khusus. Contoh latihan dan respons yang diutamakan berbanding respons yang ditolak menyesuaikan model kepada tugas berulang; kedua-duanya berbeza daripada konteks yang diberikan kepada permintaan biasa. Bagi peringkat pengekstrakan atau pengelasan praktikal, mulakan dengan kategori yang jelas, contoh dan format akhir yang nyata, kemudian periksa sama ada medan yang dikembalikan mengekalkan fakta yang akan digunakan oleh peringkat seterusnya.",
    "alias_of": null,
    "aliases": [],
    "author": "OpenAI",
    "capabilities": {
      "context_length": 1047576,
      "manufacturer_input": [
        "image",
        "text",
        "file"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "Maklumat lengkap tentang harga konfigurasi terdapat dalam butiran."
      }
    ],
    "ctx": null,
    "formats": [
      "batches"
    ],
    "id": "openai/gpt-4.1-nano:batch",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": 0.025,
        "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": "Pembungkus sebaris yang didokumenkan tidak sah, kunci berulang, identiti item atau keupayaan model yang dikonfigurasikan bercanggah.",
                "http_status": 400,
                "recovery": "Betulkan medan yang dinyatakan sebelum sebarang penghantaran baharu.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Kunci API tidak sah.",
                "http_status": 401,
                "recovery": "Gunakan kunci Ailoot yang dibenarkan.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Kumpulan kelompok tidak tersedia.",
                "http_status": 403,
                "recovery": "Semak hak akses kunci/kumpulan.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "Kelompok menggunakan pengebilan baki; penciptaan melalui langganan ditolak.",
                "http_status": 422,
                "recovery": "Gunakan kumpulan yang dibenarkan untuk pengebilan melalui baki.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Sebut harga tidak dapat diberikan untuk input kelompok.",
                "http_status": 422,
                "recovery": "Simpan respons; gunakan input keluarga API yang didokumenkan.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Rizab kelompok tidak tersedia.",
                "http_status": 402,
                "recovery": "Selesaikan isu penerimaan permintaan sebelum menghantar permintaan baharu.",
                "type": "billing_error"
              },
              {
                "code": null,
                "condition": "Harga kaedah kelompok/kadar natif tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons; jangan gantikan harga.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Laluan pembekal yang tepat tidak tersedia.",
                "http_status": 503,
                "recovery": "Simpan respons untuk pembaikan laluan.",
                "type": "api_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Hasil asal memerlukan semakan; X-Should-Retry:false.",
                "http_status": 503,
                "recovery": "Simpan operation_id/id asal dan baca statusnya; jangan sekali-kali ulang POST asal.",
                "type": null
              },
              {
                "code": "not_found",
                "condition": "Operasi status kelompok tiada atau dimiliki oleh identiti lain.",
                "http_status": 404,
                "recovery": "Gunakan id asal yang tepat serta pengguna/kunci/kumpulan yang sama.",
                "type": null
              }
            ],
            "example_body": {
              "endpoint": "/v1/chat/completions",
              "model": "openai/gpt-4.1-nano: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": "Simpan keseluruhan JSON status asal, setiap hasil/custom_id serta badan respons atau ralat yang lengkap. Simpan results[] yang telah selesai sebagai JSONL tanpa penapisan.",
              "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": "JSON results[].response.body sebaris"
            },
            "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-4.1-nano: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-4.1-nano:batch",
                  "openai/gpt-4.1-nano"
                ],
                "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-4.1-nano: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-4.1-nano:batch",
                              "openai/gpt-4.1-nano"
                            ],
                            "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-4.1-nano: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": "Pemanggil boleh membaca JSONL UTF-8 sebenar secara setempat ke dalam requests[]. Tiada tujuan muat naik, input_file_id atau rujukan fail digunakan. Bahan pelanggan yang tiada atau kosong menghentikan persediaan sebelum POST.",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "provider.only",
              "provider.allow_fallbacks",
              "completion_window"
            ],
            "representation": "requests[] sebaris; setiap item mempunyai custom_id dan body",
            "request_endpoint_profile": "/v1/chat/completions",
            "required": [
              "endpoint",
              "model",
              "requests"
            ],
            "schema_scope": "Badan permintaan Chat Completions teks dalam pembungkus Batch sebaris yang didokumenkan.",
            "serialization_order": [
              "endpoint",
              "model",
              "provider (jika dibekalkan)",
              "completion_window (jika dibekalkan)",
              "requests di akhir"
            ]
          },
          "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 sebenar daripada respons penciptaan asal; pengguna/kunci/kumpulan yang sama",
              "path": "/v1/batches/{operation_id}"
            },
            "terminal": [
              "completed",
              "failed",
              "expired",
              "cancelled"
            ],
            "unknown": "Simpan ID operasi asal. 503 result_pending_check mempunyai X-Should-Retry:false; jangan sekali-kali hantar semula kelompok asal yang hasilnya tidak diketahui."
          },
          "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": "Kadar asas token",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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": "Tahap panjang permintaan 1",
            "units": [
              {
                "amount": "0.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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-4.1-nano: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-4.1-nano:batch', 'openai/gpt-4.1-nano']: raise ValueError(\"body.model must be an exact documented caller or wire ID\")\n    return {\"endpoint\":\"/v1/chat/completions\", \"model\":\"openai/gpt-4.1-nano: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": 0.1,
        "input": [
          "text"
        ],
        "label": "Kelompok",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": 0.4,
        "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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.0001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000001",
                "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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.000025000",
                "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.000000025",
                "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-4.1-nano:batch",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/batches/{operation_id}"
        ],
        "tiers": [
          {
            "cache_read": 0.025,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.1,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.4,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.0001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000001",
            "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.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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.000025000",
            "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.000000025",
            "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-4.1-nano:batch",
        "request_model_id": "openai/gpt-4.1-nano:batch",
        "route_label": "Ultra"
      }
    ],
    "name": "OpenAI: GPT-4.1 Nano (batch)",
    "price": {
      "in": 0.1,
      "in_label": null,
      "out": 0.4,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.1,
      "sort_out": 0.4,
      "varies": true
    },
    "short": "GPT-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus."
  },
  "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-4.1 Nano ialah anggota keluarga GPT-4.1 yang padat dan responsif untuk tugas teks dan imej yang ditetapkan dengan ketat. Konteks besar, Structured Outputs dan panggilan fungsi menyokong pengelasan, pengekstrakan dan langkah aplikasi yang terfokus.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "273fe16ce7de2bc5a87043bf8d222fb012d9fd66ca61e53803871c915cf70950",
    "renderer_sha256": "1dab5ba62521e9568c8b7c82005622cabbf330a075df7cce1f83274a04009460"
  },
  "sourceRevision": "9e576ddec415d965042f3e68ce4ac2c4ce5b75902c6ccd090e8d0c68a9990389"
}
