Panduan
Streaming
SSE di ketiga format — cara baca, usage, dan disconnect yang tetap ditagih.
Streaming
Ketiga endpoint inference mendukung stream SSE (text/event-stream). Format event mengikuti format yang dipanggil klien — termasuk bila upstream-nya berbeda (diterjemahkan per chunk).
Meminta stream
| Format | Parameter | Catatan |
|---|---|---|
| Chat Completions | "stream": true | stream_options.include_usage selalu dipatch ke upstream; chunk khusus-usage dibuang bila klien tidak memintanya |
| Responses | "stream": true | event response.* standar |
| Messages | "stream": true | message_start membawa usage input, message_delta membawa output kumulatif (diambil nilai terakhir per field) |
curl -N <API>/v1/chat/completions \
-H "Authorization: Bearer $NGODING_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-5-5",
"messages": [{"role": "user", "content": "Cerpen 3 paragraf tentang hujan."}],
"max_tokens": 512,
"stream": true
}'(-N mematikan buffer curl supaya chunk terlihat langsung.)
Yang perlu diingat
- Nama model di setiap chunk sudah ditulis ulang ke id publik — jangan heran bila respons non-stream dan stream menyebut id yang sama.
- Stream yang terputus tetap ditagih. Usage yang sudah terlihat dipakai; komponen yang nol diestimasi (input dari estimasi tokenizer, output dari panjang karakter ÷ 4, dibulatkan ke atas) dengan
error_code = "usage_estimated". Klien disconnect juga membatalkan context upstream (berhenti membayar upstream). - Error di tengah stream Anthropic datang sebagai
event: error, bukan HTTP error. - Request Messages dengan server tool: blok tool datang utuh (tanpa delta bertahap), dan event
pingdikirim tiap 10 detik selama tool berjalan. - Request Responses dan Chat dengan server tool: Responses mengirim item
web_search_call/x_search_calldan eventresponse.web_search_call.*(detail); Chat tanpa event tool, dengandelta.annotationssebelum chunkfinish_reason. Selama tool berjalan, keduanya mengirim komentar SSE: pingtiap 10 detik. - Timeout total satu request mengikuti
UPSTREAM_TIMEOUT(default 15 menit); tidak ada retry setelah byte pertama mengalir (menghindari tagihan upstream ganda).
Ganti <API> dengan https://api.ngoding.in.