API Reference
Batches
Kerjakan ribuan request asinkron — API Batch Anthropic & OpenAI, harga normal.
Batches
Batch memproses banyak request asinkron (selesai dalam ≤ 24 jam) — cocok untuk evaluasi, klasifikasi massal, atau backfill. Sistem batch dijalankan sendiri (bukan diteruskan ke Batch API provider), dan setiap request ditagih saat selesai dengan harga normal — tanpa diskon batch.
Aturan umum kedua dialek:
- Maks 10.000 request atau 256 MiB per batch; model setiap request wajib ada di katalog (divalidasi sebelum diterima).
- Saldo harus
> 0saat create (402 bila tidak). Saldo habis di tengah jalan → sisa request gagal (billing_error/insufficient_quota), batch tetap diselesaikan. expires_at = created_at + 24 jam; yang belum diproses saat itu →expired. Hasil disimpan 29 hari.- Cancel: request yang belum dikerjakan →
canceled; yang sedang jalan dibiarkan selesai. - Error dari upstream di hasil memakai pesan generik per status, misalnya
Request ditolak upstream.(invalid_request) atauUpstream gagal, coba lagi sebentar.(upstream_error). Isi error dari penyedia model tidak pernah masuk file hasil.
Dialek Anthropic — /v1/messages/batches
curl <API>/v1/messages/batches \
-H "x-api-key: $NGODING_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{
"custom_id": "req-1",
"params": {
"model": "claude-haiku-4-5",
"max_tokens": 64,
"messages": [{"role": "user", "content": "Ringkas: fotosintesis."}]
}
}
]
}'params = body Messages biasa tanpa stream. custom_id unik per batch (1–64 karakter [A-Za-z0-9_-]).
Alur: POST /v1/messages/batches → poll GET /v1/messages/batches/{id} sampai processing_status: ended → ambil GET /v1/messages/batches/{id}/results (JSONL {custom_id, result}). Batal: POST …/{id}/cancel. Hapus: DELETE …/{id} (hanya bila ended).
Dialek OpenAI — /v1/batches
- Tulis input JSONL (
{custom_id, method: "POST", url, body}), upload sebagai file via Files. POST /v1/batchesdengan{input_file_id, endpoint: "/v1/chat/completions" | "/v1/responses", completion_window: "24h"}.- Poll
GET /v1/batches/{id}sampai status terminal (completed,failed,expired,cancelled) — jangan berhenti difinalizing: batch yang selesai melewatifinalizingdulu, danoutput_file_id/error_file_idbaru terisi atomik bersama status final. Selamavalidating,in_progress,finalizing, ataucancelling, teruskan polling.
Batal: POST /v1/batches/{id}/cancel. Output JSONL tersimpan sebagai file purpose: batch_output — unduh lewat output_file_id (atau error_file_id bila gagal sebagian).
Server tool
Request di dalam batch boleh memakai server tool seperti request biasa: web_search, web_fetch, dan x_search di Messages; web_search (termasuk buka halaman) dan x_search di Responses; web_search_options di Chat. Setiap request menjalankan loop server tool yang sama dengan request non-stream biasa, termasuk batas iterasi, max_tool_calls, dan tahanan credit per iterasi.
- Hasil. Sama dengan respons non-stream biasa: blok
server_tool_usedanweb_search_tool_resultdi Messages; itemweb_search_call/x_search_calldi Responses, dengan anotasiurl_citationdi teks jawaban; danmessage.annotationsberisiurl_citationdi Chat. - Tagihan. Satu request batch = satu baris pemakaian (
endpoint = 'batch'): token semua iterasi ditambah credit tool, dengan harga normal yang sama dengan request biasa (tanpa diskon batch). Tool yang error tidak ditagih; request yang gagal tanpa pemakaian tidak tercatat. - Credit habis di tengah loop. Request berhenti seperti request biasa dan tetap
succeeded:stop_reason: "pause_turn"di Messages,status: "incomplete"di Responses,finish_reason: "length"di Chat. Request berikutnya tetap dikerjakan selama saldo masih> 0. - Upstream gagal di tengah loop. Bila upstream menolak dengan error di iterasi pertama, request gagal tanpa tagihan. Setelah iterasi pertama:
- Messages: hasil
succeededdenganstop_reason: "pause_turn"berisi konten yang sudah jadi. Lanjutkan dengan request baru seperti dipause_turn. - Responses dan Chat: request gagal (masuk
error_file_id) dengan kode sepertiupstream_error. Token dan tool dari iterasi yang sudah selesai tetap ditagih. - Jawaban upstream yang rusak, di iterasi mana pun, membuat request gagal (
upstream_error) dan ditagih dari estimasi, sama seperti request biasa.
- Messages: hasil
- Tool tidak tersedia. Request itu gagal dengan kode yang sama seperti request biasa, dan request lain di batch tetap jalan:
unsupported_toolbila tool sedang dimatikan atau mesinnya belum aktif,unsupported_parameteruntukweb_search_optionsdi Chat saat server tool dimatikan seluruhnya,unsupported_contentbila model tidak mendukung tool calling. - Batas panggilan tool. Batas 60 panggilan tool per menit per akun dihitung bersama request biasa. Panggilan yang lewat batas menjadi hasil tool
too_many_requestsyang dibaca model, sedangkan token jawabannya tetap ditagih. - Saldo. Saldo habis saat request ber-server-tool akan mulai → sisa request gagal, sesuai aturan umum di atas.
Penagihan
Tiap request batch memakai router + reservasi saldo yang sama dengan request biasa, dicatat dengan endpoint = 'batch' dan batch_id-nya. Request ber-server-tool tetap satu baris (lihat Server tool). Ganti <API> dengan https://api.ngoding.in. Referensi lengkap: OpenAPI: Batches.
Coba langsung: referensi interaktif + try-it di OpenAPI — request dikirim dari browser ke https://api.ngoding.in, kuncimu hanya disimpan di sessionStorage tab ini (hilang saat tab ditutup) dan tidak pernah dicatat.