Source: https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/
Canonical: https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/
Language: id

# Mistral: Mistral Medium 3.5 (batch)

[Markdown](https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/index.md) · [JSON](https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/facts.json)

## [Mistral: Mistral Medium 3.5 (batch)](https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/)

Mistral Medium 3.5 menggabungkan kepatuhan terhadap instruksi, penalaran, dan pemrograman dalam model teks dan gambar dense 128B. Model ini memiliki konteks 256k dari pembuatnya, pengaturan penalaran per permintaan, pemanggilan fungsi bawaan, dan keluaran terstruktur untuk alur dokumen serta agen.

- [**Ailoot Ultra · Batch** `POST /v1/batches` `mistralai/mistral-medium-3-5:batch`](https://ailoot.ai/models/id/mistralai-mistral-medium-3-5-u003a-batch/#method-0)

Tentang model

Deskripsi ini mencakup kemampuan model. Masukan, keluaran, dan opsi yang tersedia di Ailoot tercantum di bawah untuk metode yang dipilih.

Mistral Medium 3.5 adalah model dense 128B dari Mistral AI yang menggabungkan kepatuhan terhadap instruksi, penalaran, dan pemrograman dalam satu set bobot. Model ini menerima teks dan gambar serta mengembalikan teks. Pembuatnya menempatkan model ini untuk tugas agen dan pemrograman, sementara checkpoint yang sama dapat menghasilkan jawaban percakapan langsung atau menggunakan mode penalaran yang terdokumentasi untuk tugas yang lebih rumit.

Model terpadu dan kemampuan visual

Kartu yang dirilis menetapkan 128 miliar parameter dense dan jendela konteks 256k. Encoder visualnya dilatih untuk menangani berbagai ukuran dan rasio aspek gambar. Gambar dapat menjadi bukti bagi tugas pemrograman atau dokumen: tangkapan layar antarmuka, diagram yang menyertai persyaratan, atau halaman yang memuat informasi yang harus ditafsirkan model. Hasilnya dapat berupa penjelasan tertulis, kode, atau bidang terstruktur, bukan gambar yang dihasilkan.

Pembuatnya menjelaskan dukungan multibahasa untuk puluhan bahasa, termasuk Inggris, Prancis, Spanyol, Jerman, Italia, Portugis, Belanda, Mandarin, Jepang, Korea, dan Arab. Kepatuhan terhadap prompt sistem dan pemanggilan fungsi bawaan dengan keluaran JSON juga ditonjolkan. Tetapkan audiens, bahasa, dan aturan respons secara terpisah dari materi yang diperiksa agar redaksi dokumen sumber tetap berperan sebagai bukti untuk tugas.

Pengaturan penalaran

Kartu model mendokumentasikan dua nilai upaya penalaran per permintaan. Nilai none menghasilkan jawaban bergaya instruksi tanpa mode penalaran; high mengaktifkan penalaran dan direkomendasikan untuk prompt kompleks serta pemrograman berbasis agen. Ini adalah pilihan mode dalam checkpoint Medium 3.5 yang sama, bukan identitas model yang berbeda.

Untuk upaya penalaran high, pembuatnya merekomendasikan temperature 0.7 dan top-p 0.95. Untuk none, dokumentasinya menyebut temperature antara 0.0 dan 0.7 sesuai tugas, dengan top-p tidak diatur atau ditetapkan ke 1.0. Ini adalah rekomendasi rilis. Pilih tujuan keluaran terlebih dahulu: ekstraksi bidang yang ringkas, perubahan kode beserta penjelasan, atau perbandingan yang memerlukan beberapa keputusan beralasan.

Tugas penalaran praktis dapat menyediakan persyaratan, implementasi, dan masukan yang menunjukkan ketidaksesuaian. Minta model mengidentifikasi jalur yang relevan, menjelaskan perbedaannya, dan mengusulkan perubahan terkecil yang mempertahankan antarmuka publik. Minta kode yang direvisi secara terpisah dari asumsi dan contohnya. Model menghasilkan usulan; kompilasi, menjalankan, dan menerapkannya memerlukan lingkungan pengembangan yang terhubung dengan agen.

Alat, dokumen, dan penyuntingan yang dapat diprediksi

Kartu layanan dari pembuatnya juga mencantumkan keluaran terstruktur, predicted outputs, pertanyaan dokumen, prefiks respons, pemrosesan batch, dan percakapan agen. Untuk ekstraksi, tetapkan nama bidang, tipe, dan penanganan nilai yang tidak tersedia. Mode JSON menyediakan representasi terstruktur, sedangkan skema khusus menetapkan bentuk yang lebih spesifik dalam antarmuka yang terhubung. Minta hanya rekaman ketika program akan mengurainya, dan penjelasan terpisah ketika seseorang perlu memeriksa penafsirannya.

Tanya jawab dokumen menggabungkan teks dan struktur yang disiapkan melalui OCR dengan pemahaman model bahasa. Untuk perbandingan, identifikasi dokumen dan kondisi yang dinilai, lalu minta setiap temuan beserta lokasi sumbernya. Keluaran yang berguna dapat memisahkan persyaratan bersama, perbedaan pendapat, dan pertanyaan terbuka. Pertanyaan gambar langsung dapat berfokus pada label bagan atau elemen antarmuka; mempertahankan judul, satuan, dan peran gambar membantu menjaga jawaban tetap terkait dengan materi yang diberikan.

Predicted outputs didokumentasikan untuk tugas yang sebagian besar jawabannya sudah diketahui, seperti menghasilkan ulang berkas kode atau dokumen dengan penyuntingan terbatas. Berikan konten yang ada dan identifikasi perubahan spesifik, sambil mempertahankan bagian yang harus tetap sama. Ini berbeda dari meminta artefak yang sepenuhnya baru atau melanjutkan dari prefiks respons yang sudah diketahui. Fitur layanan menjelaskan opsi pengiriman dan pemformatan; fitur tersebut tidak mengubah masukan teks dan gambar atau keluaran teks model.

Dalam alur berbantuan alat, aplikasi menyediakan deskripsi fungsi dan parameter, model memilih fungsi serta menyiapkan argumen, dan aplikasi menjalankannya serta mengembalikan hasil. Alat perhitungan dapat menerima nilai yang dibaca dari gambar yang diberikan, sedangkan alat pencarian dapat menyediakan informasi yang belum tersedia untuk jawaban berikutnya. Jaga hasil alat tetap terkait dengan operasi yang menghasilkannya. Penalaran berbasis agen bergantung pada lingkungan tersebut, bukan pada generasi teks semata untuk menjalankan tindakan eksternal.

Menyiapkan sesi panjang

Gunakan konteks 256k untuk kode sumber, dokumen, dan riwayat percakapan yang berkaitan, serta pastikan tujuan aktual tetap eksplisit. Sesi pemrograman dapat mempertahankan modul, pemanggilnya, dan persyaratan sambil meminta satu perubahan yang terdefinisi. Sesi dokumen dapat menyatukan bagian yang relevan sambil mengembalikan tabel singkat atau bagian teks yang direvisi. Kapasitas konteks tidak menetapkan panjang jawaban maksimum yang terpisah; contoh generasi 1.024 token dalam kartu model adalah ilustrasi, bukan batas tersebut.

Pembuatnya mencatat bahwa konfigurasi rilis terdahulu mengandung kesalahan konteks panjang yang telah diperbaiki, termasuk relevansinya bagi checkpoint turunan. Pertahankan konfigurasi rilis yang telah diperbaiki saat menggunakan bobot untuk sesi panjang. Mode hibrida dan arsitektur 128B Medium 3.5 tidak boleh dilekatkan pada Medium 3.1 atau checkpoint draft-head yang bernama terpisah hanya karena namanya berada dalam keluarga yang sama.

**Ailoot Ultra · Batch** `POST /v1/batches` `mistralai/mistral-medium-3-5:batch`

[`mistralai/mistral-medium-3-5:batch`](https://ailoot.ai/models/id/#m=mistralai%2Fmistral-medium-3-5%3Abatch&route=Ultra&caller=mistralai%2Fmistral-medium-3-5%3Abatch&fmt=batches)

Mistral /`mistralai/mistral-medium-3-5:batch`

### Mulai

Mistral Medium 3.5 menggabungkan kepatuhan terhadap instruksi, penalaran, dan pemrograman dalam model teks dan gambar dense 128B. Model ini memiliki konteks 256k dari pembuatnya, pengaturan penalaran per permintaan, pemanggilan fungsi bawaan, dan keluaran terstruktur untuk alur dokumen serta agen.

Masukan yang diterima

Teks

Hasil

Teks

### Tersedia di Ailoot · masukan & metode

**Ailoot Ultra · Batch** `POST /v1/batches`

Masukan

`text`

Keluaran

`text`

Format keluaran

JSON inline pada results\[\].response.body

| Kolom | Jenis | Persyaratan | Nilai & batasan | Bawaan |
| --- | --- | --- | --- | --- |
| Kolom`endpoint` | Jenis`string` | PersyaratanWajib | Nilai & batasan /v1/chat/completions | Bawaan— |
| Kolom`model` | Jenis`string` | PersyaratanWajib | Nilai & batasan mistralai/mistral-medium-3-5:batch | Bawaan— |
| Kolom`requests` | Jenis`batch_item[]` | PersyaratanWajib | Nilai & batasan Item minimum: 1 | Bawaan— |
| Kolom`requests[].custom_id` | Jenis`string` | PersyaratanWajib | Nilai & batasan | Bawaan— |
| Kolom`requests[].body.messages` | Jenis`message[]` | PersyaratanWajib | Nilai & batasan | Bawaan— |
| Kolom`completion_window` | Jenis`string` | PersyaratanOpsional | Nilai & batasan 24h | Bawaan— |
| Kolom`provider` | Jenis`object\|null` | PersyaratanOpsional | Nilai & batasan | Bawaan— |
| Kolom`requests[].body.model` | Jenis`string` | PersyaratanOpsional | Nilai & batasan mistralai/mistral-medium-3-5:batch, mistralai/mistral-medium-3-5 | Bawaan— |
| Kolom`provider.only` | Jenis`string[]` | PersyaratanOpsional | Nilai & batasan mistral | Bawaan— |
| Kolom`provider.allow_fallbacks` | Jenis`boolean\|null` | PersyaratanOpsional | Nilai & batasan false, null | Bawaan— |

Parameter metode dan siklus hidup

| Parameter | Kontrak |
| --- | --- |
| Parameter`content_type` | Kontrakapplication/json |
| Parameter`required` | Kontrakendpoint, model, requests |
| Parameter`material_types` | Kontraktext |
| Parameter`representation` | Kontrakrequests\[\] inline; setiap item memiliki custom\_id dan body |
| Parameter`request_endpoint_profile` | Kontrak/v1/chat/completions |
| Parameter`file_material` | KontrakPemanggil dapat membaca JSONL UTF-8 aktual secara lokal ke dalam requests\[\]. Tidak menggunakan purpose unggahan, input\_file\_id, atau referensi file. Materi pelanggan yang tidak ada atau kosong menghentikan persiapan sebelum POST. |
| Parameter`serialization_order` | Kontrakendpoint, model, provider (jika disertakan), completion\_window (jika disertakan), requests paling akhir |
| Parameter`optional_controls` | Kontrakprovider.only, provider.allow\_fallbacks, completion\_window |
| Parameter`schema_scope` | Kontrakbody teks Chat Completions dalam envelope Batch inline yang didokumentasikan. |

Siklus hidup: `asynchronous`

`GET /v1/batches/{operation_id}` · response.id aktual dari operasi create awal; user/key/group yang sama

### Paket

Referensi tarif tidak menambah opsi permintaan. Parameter yang didukung tercantum pada metode yang dipilih.

Mode Fast

Tidak ditentukan Saat mode fast dipilih

Mode Flex

Tidak ditentukan Saat mode flex dipilih

Upaya penalaran maksimum

Tidak ditentukan Saat upaya penalaran maksimum menggunakan penyesuaian default

Harga cache eksplisit

Tidak diaktifkan Saat cache eksplisit diminta

#### Tarif Ailoot

#### Harga menurut konfigurasi

Cocokkan setiap biaya dengan kondisi yang ditampilkan. Gunakan satu tarif untuk setiap kelompok konfigurasi alternatif.

| Konfigurasi | Jadwal tarif | Token konteks, lebih dari | Token konteks, hingga dan termasuk | Biaya |
| --- | --- | --- | --- | --- |
| KonfigurasiTarif dasar token | Jadwal tarifTarif dasar | Token konteks, lebih dari— | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0015** / 1K token Keluaran · Token keluaran **$0.0075** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 1K token Masukan · Penulisan cache, 1 jam **—** / 1K token |
| KonfigurasiPanjang permintaan · tingkat 1 | Jadwal tarif— | Token konteks, lebih dari0 | Token konteks, hingga dan termasukTanpa batas atas | Biaya Masukan · Token masukan **$0.0015** / 1K token Keluaran · Token keluaran **$0.0075** / 1K token Masukan · Pembacaan cache **—** / 1K token Masukan · Penulisan cache **—** / 1K token Masukan · Penulisan cache, 1 jam **—** / 1K token |

Ailoot mencadangkan perkiraan dana sebelum permintaan. Setelah hasil diterima, tagihan akhir diselesaikan berdasarkan penggunaan yang terukur. Penyelesaian tagihan streaming menggunakan catatan penggunaan akhir. [Cara kerja cadangan dan penyelesaian tagihan →](https://ailoot.ai/docs/id/billing/reserve/)

### Contoh permintaan

#### Ailoot Ultra · Batch

curl · fixture yang disimpanPython HTTP · JSONL pelanggan yang sebenarnyaPython · simpan setiap hasil yang telah selesai

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"mistralai/mistral-medium-3-5:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
```

```python
import json, os
from pathlib import Path
from urllib.request import Request, urlopen

def prepare_requests(customer_path):
    path = Path(customer_path)
    if not path.is_file(): raise ValueError("Customer JSONL file is missing")
    items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
    if not items: raise ValueError("Customer JSONL contains no requests")
    ids = set()
    for item in items:
        if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
        cid = item["custom_id"]
        if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
        ids.add(cid)
        if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
        supplied_model = item["body"].get("model")
        if supplied_model is not None and supplied_model not in ['mistralai/mistral-medium-3-5:batch', 'mistralai/mistral-medium-3-5']: raise ValueError("body.model must be an exact documented caller or wire ID")
    return {"endpoint":"/v1/chat/completions", "model":"mistralai/mistral-medium-3-5:batch", "requests":items}

if __name__ == "__main__":
    material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
    if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
    body = prepare_requests(material)
    key = os.environ.get("AILOOT_API_KEY", "")
    if not key: raise SystemExit("Set AILOOT_API_KEY")
    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")
    with urlopen(request) as response:
        raw = response.read()
        Path("batch-create-response.json").write_bytes(raw)
        print(raw.decode("utf-8"))
```

```python
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
    raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
    raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
```

### Terima dan simpan hasil

#### Ailoot Ultra · Batch

JSON inline pada results\[\].response.body

- `GET /v1/batches/{operation_id}`

##### Periksa status tugas

curl · status operasi asli

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
```

##### Simpan semua hasil yang selesai

Simpan setiap respons lengkap, berkas, dan bagian konten yang dikembalikan.

Pertahankan JSON status asli secara lengkap, setiap result/custom\_id, serta body response atau error yang lengkap. Simpan results\[\] yang telah selesai sebagai JSONL tanpa penyaringan.

##### Jika respons asli perlu diperiksa

Pertahankan ID operasi asli. 503 result\_pending\_check memiliki X-Should-Retry:false; jangan pernah kirim ulang batch asli yang statusnya tidak diketahui.

Kolom respons

| Kolom | Jenis |
| --- | --- |
| Kolom`results[].custom_id` | Jenisstring |
| Kolom`results[].response.body.choices[].message.content` | Jenisstring\|null |
| Kolom`results[].error` | Jenisobject\|null |
| Kolom`usage` | Jenisobject\|null |
| Kolom`id` | Jenisstring |
| Kolom`model` | Jenisstring |
| Kolom`endpoint` | Jenisstring |
| Kolom`status` | Jenisstring |
| Kolom`request_counts` | Jenisobject |
| Kolom`results[].id` | Jenisstring |
| Kolom`results[].response.status_code` | Jenisinteger |
| Kolom`results[].response.request_id` | Jenisstring |

Kesalahan dan langkah berikutnya

| Respons | Kondisi | Langkah berikutnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | KondisiEnvelope inline yang didokumentasikan tidak valid, ada kunci duplikat, atau terdapat konflik pada identitas item atau kemampuan model yang dikonfigurasi. | Langkah berikutnyaPerbaiki kolom yang ditunjukkan sebelum pengiriman baru apa pun. |
| Respons401 · `authentication_error` | KondisiKunci API tidak valid. | Langkah berikutnyaGunakan kunci Ailoot yang berizin. |
| Respons403 · `permission_error` | KondisiGrup Batch tidak tersedia. | Langkah berikutnyaPeriksa hak akses key/group. |
| Respons422 · `invalid_request_error` | KondisiBatch menggunakan penagihan dari saldo; pembuatan dengan langganan ditolak. | Langkah berikutnyaGunakan grup berizin yang ditagih dari saldo. |
| Respons422 · `price_unavailable` | KondisiPenawaran harga untuk input Batch tidak dapat dibuat. | Langkah berikutnyaSimpan respons; gunakan input keluarga API yang didokumentasikan. |
| Respons402 · `billing_error` | KondisiCadangan Batch tidak tersedia. | Langkah berikutnyaSelesaikan kendala penerimaan sebelum mengirim permintaan baru. |
| Respons503 · `price_unavailable` | KondisiHarga metode Batch/tarif native tidak tersedia. | Langkah berikutnyaSimpan respons; jangan mengganti harga. |
| Respons503 · `api_error` | KondisiRute pemasok yang tepat tidak tersedia. | Langkah berikutnyaSimpan respons untuk perbaikan rute. |
| Respons503 · `result_pending_check` | KondisiHasil asli perlu diperiksa; X-Should-Retry:false. | Langkah berikutnyaSimpan operation\_id/id asli dan baca statusnya; jangan pernah mengulangi POST asli. |
| Respons404 · `not_found` | KondisiOperasi status Batch tidak ada atau dimiliki oleh identitas lain. | Langkah berikutnyaGunakan id asli yang persis sama dan user/key/group yang sama. |

### Alias

#### Alias model

**Ailoot Ultra** [`mistralai/mistral-medium-3-5:batch`](https://ailoot.ai/models/id/#m=mistralai%2Fmistral-medium-3-5%3Abatch&route=Ultra&caller=mistralai%2Fmistral-medium-3-5%3Abatch&fmt=batches)

#### Alias jalur metode

Gunakan jalur metode yang ditampilkan di atas.

#### ID pemanggil terkait

[`mistralai/mistral-medium-3-5:batch`](https://ailoot.ai/models/id/#m=mistralai%2Fmistral-medium-3-5%3Abatch&route=Ultra&caller=mistralai%2Fmistral-medium-3-5%3Abatch&fmt=batches)

FAQ · Mistral: Mistral Medium 3.5 (batch)

Input dan hasil apa yang tersedia?

`POST /v1/batches` · `mistralai/mistral-medium-3-5:batch`: `text` → `text`

Kolom apa yang digunakan permintaan?

`POST /v1/batches` · `mistralai/mistral-medium-3-5:batch`: `endpoint`, `model`, `requests`, `completion_window`, `provider`

Batasan apa yang berlaku?

`POST /v1/batches` · `mistralai/mistral-medium-3-5:batch`: `requests.min_items`: `1`

Hubungkan Ailoot ke Claude Code, OpenCode, Hermes, atau aplikasi Anda.

## Perusahaan dan portofolio proyeknya

Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.

## Beli token dengan diskon.

Diskon langganan untuk pekerjaan rutin. Kode promo — hingga 50% untuk pembelian token.

Langganan

Pilih paket dengan diskon untuk permintaan rutin Anda.

Kode promo hingga 50%

Masukkan kode saat membeli. Harga dihitung ulang sesuai promosi aktif.

Biaya dalam riwayat

Model, token, dan jumlah tagihan disimpan untuk setiap permintaan.

[Pilih langganan](https://ailoot.ai/docs/id/billing/subscriptions/) · [Lihat harga model](https://ailoot.ai/models/id/)

## Hubungkan API ke produk yang Anda jual.

SaaS, aplikasi, dan bot — sesuai penawaran dan perjanjian lisensi Ailoot. Untuk penjualan kembali, mintalah lisensi reseller.

Aplikasi komersial

Integrasikan pembuatan teks, gambar, video, dan suara dalam fitur berbayar layanan Anda.

Lisensi reseller

Kirim deskripsi proyek dan skema akses. Mintalah ketentuan penggunaan dan penjualan kembali secara tertulis.

Dokumen di situs

Penawaran, perjanjian lisensi, dan kebijakan pemrosesan data tersedia sebelum koneksi.

[Minta lisensi reseller](mailto:support@ailoot.ai) · [Penawaran dan perjanjian lisensi](https://ailoot.ai/legal/offer?lang=id)

## Ailoot · Perusahaan dan portofolio proyeknya





Ailoot bertumpu pada pengalaman operasional yang teruji, basis pelanggan yang besar, layanan yang stabil, dan pemantauan KPI berkelanjutan.





Perusahaan dan portofolio proyeknya: jutaan pelanggan; penjualan miliaran setiap bulan.





Ailoot memanfaatkan pengalaman operasional ini untuk akses API ke fitur AI dalam produk pelanggan, agen, aplikasi, dan otomatisasi.
