Perubahan API
Aturannya
- Kolom atau endpoint baru bisa ditambahkan kapan saja, tanpa pemberitahuan. Abaikan kolom yang belum kamu kenal.
- Yang dihapus atau diganti namanya diumumkan di halaman ini paling lambat 30 hari sebelum berlaku.
- Model AI yang dimatikan atau diubah harganya juga diumumkan di sini paling lambat 30 hari sebelumnya. Model yang dipakai sebuah bacaan selalu tercatat di bacaan itu.
- Kode kesalahan tidak diubah tanpa dicatat di halaman ini. Kode yang selama ini salah menjawab kekeliruan pemanggil diperbaiki dan dicatat di sini pada hari berlakunya; kalimat pesannya untuk dibaca orang dan bisa berubah.
2026-10-27
- DitambahGenerator gambar (izin baru images:generate), perintah bebas dulu: kirim "prompt" ke POST /v1/images/generations dan AI menggambarnya di latar belakang, dengan bentuk 1:1, 4:5, atau 9:16 dan model pilihan dari GET /v1/images/models. Kabar lewat webhook image_generation.succeeded dan image_generation.failed; hasil di GET /v1/images/generations/{id}, filenya di …/{id}/image. Dibayar dari saldo toko; di sandbox gratis.
- DiubahAlamat webhook yang dibuat sebuah integrasi berhenti menerima kejadian begitu integrasi itu kehilangan izin kejadiannya atau dimatikan; sebelumnya kejadian tetap terkirim ke alamat yang sudah ada.
- DiubahArtikel blog: provider dan model yang tidak ditawarkan (atau provider tanpa model) sekarang ditolak 422 model_not_offered, bukan 503 ai_unavailable; 503 tinggal untuk server tanpa model sama sekali. Batas 2000 pada "prompt" dihitung per karakter, bukan per byte.
- DiubahPUT /v1/document-types/{id} tanpa "isActive" atau "reportPages" mempertahankan nilai jenis itu, tidak lagi menyalakannya kembali.
- DiubahPUT /v1/billing/low-balance tanpa "threshold" ditolak 422 invalid; kirim null untuk mematikan peringatan (sebelumnya mematikannya diam-diam). Membatalkan isi saldo yang sudah disetujui atau ditolak dijawab 409 already_decided; membatalkan yang sudah dibatalkan dijawab 200.
- DiubahGET /v1/webhooks/{id}/deliveries: "limit" lebih dari 201 dibaca 201 (sebelumnya kembali ke 50), dan "offset" didokumentasikan. Pindai pengetahuan yang bukan unggahan multipart dijawab 400 malformed, bukan 413.
- DiubahDokumentasi disamakan dengan perilakunya: daftar bacaan berisi ringkasan (bukan bacaan lengkap) beserta accuracy; batas pages mengikuti batas halaman toko; model yang membaca PDF utuh menerima sampai 100 halaman sekaligus; GIF diterima; kode kesalahan yang bisa didapat setiap panggilan, type_off, too_many_running, not_on_plan dan lainnya dicantumkan; kolom credited, target, locale, assetId dan lainnya ditulis; sandbox dijelaskan.
- DiubahMembaca dokumen menyala untuk setiap toko, jadi bacaan tidak lagi ditolak 403 extraction_off. "readingEnabled" pada GET /v1/document-types sekarang berarti ada model yang bisa membaca dengan kuncinya; bila tidak ada, bacaan ditolak 503 no_model.
- DitambahBacaan dokumen memakai pengetahuan jenis dokumennya (singkatan, letak kolom, cara tanggal ditulis), dikirim ke AI sebagai rujukan, tidak pernah sebagai nilai. Pengetahuan yang panjang menambah sedikit biaya token per bacaan, sudah terhitung dalam estimate dan maxCharge.
- DitambahGET /v1/document-types/{id}/knowledge, POST …/knowledge/entries, PUT dan DELETE …/knowledge/entries/{entry} (documents:read dan documents:manage): lihat, tambah, ubah dan hapus pengetahuan sebuah jenis dokumen. POST …/knowledge/scans/images (izin baru documents:scan, berbayar), GET …/knowledge/scans/{scan} dan POST …/scans/{scan}/accept: AI mengusulkan pengetahuan dari contoh dokumen, kamu memilih yang disimpan.
2026-10-15
- DitambahPOST /v1/document-types, PUT dan PATCH /v1/document-types/{id} (izin baru documents:manage): integrasi membuat, mengubah, dan menyalakan atau mematikan jenis dokumennya sendiri. Bacaan dengan jenis yang dimatikan ditolak (409 type_off).
- Ditambah"pages" pada setiap nilai: semua halaman tempat nilai itu tercetak. "page" tetap ada, berisi halaman pertamanya. Jenis dokumen dengan "reportPages": false tidak meminta halaman sama sekali (lebih hemat).
- DiubahHalaman yang disebut model di luar halaman yang dikirim sekarang dibuang dari page dan pages.
- DitambahGET dan PUT /v1/document-types/limits: batas halaman per dokumen untuk tiap toko, 50 kalau tidak diubah, sampai 500. Dokumen lebih dari 50 halaman (20 untuk jenis dengan daftar) dibaca per bagian lalu digabung; tiap bagian ditagih token-nya, harga per bacaan sekali. "truncated" pada bacaan menandai daftar yang terpotong di batas barisnya.
- DitambahGET dan PUT /v1/billing/low-balance dan webhook balance.low: diberi tahu sekali saat saldo turun di bawah angka yang kamu pasang, sampai saldo naik lagi.
- DiubahSetiap pesan kesalahan ke integrasi sekarang dalam bahasa Inggris, termasuk "error" pada bacaan yang gagal dan di webhook document_read.failed. Kodenya tidak berubah.
2026-10-14
- DitambahIdempotency-Key di setiap panggilan yang menulis: ulangan dengan kunci yang sama dijawab dengan jawaban pertama dan tidak ditagih dua kali.
- DitambahclientReference pada bacaan dokumen dan artikel di latar belakang, kembali di jawaban dan webhook; GET …/runs?clientReference=.
- DitambahBacaan dokumen: "normalized" sesuai jenis kolom (angka, uang, tanggal, ya/tidak, pilihan), "page" dan "quote" tempat nilai dibaca, "pages" untuk membaca halaman tertentu saja, dan "maxCharge".
- DitambahPOST /v1/document-types/{id}/runs/estimate: biaya sebuah bacaan sebelum dikirim.
- DitambahDELETE /v1/document-types/{id}/runs/{run} dan PUT /v1/document-types/retention (izin documents:delete): hapus bacaan dan filenya, sekarang atau otomatis setelah sekian hari.
- Ditambah/v1/webhooks (izin webhooks:manage): integrasi memasang dan mengatur alamat webhook-nya sendiri.
- DitambahPOST /v1/token dan GET /v1/whoami masuk ke openapi.json, supaya pembuat kode bisa membuat klien yang bisa masuk.
- Dihapuscharged.tokens dan charged.base di jawaban artikel blog: biaya disebut sebagai satu total rupiah, charged.total. Dihapus tanpa 30 hari karena aturan ini belum ada; mulai sekarang aturannya berlaku.
- DitambahSaldo dan isi saldo (GET /v1/billing/balance, /v1/billing/top-ups), dengan webhook top_up.approved dan top_up.rejected.
- DitambahArtikel blog di latar belakang (POST /v1/blog/generations) dan webhook document_read.* serta blog_generation.*.
- DitambahMembaca dokumen (OCR) lewat API, dengan pilihan vendor dan model per bacaan.
2026-09-20
- DitambahAPI dibuka: menulis artikel blog dengan AI.