Claude Code "Request timed out": API_TIMEOUT_MS dan cara mengatasi masalah proxy
Wokey Team · 2026-09-24
Jawaban singkat: Request timed out berarti Claude Code tidak mendapat respons dari API sebelum tenggatnya, yang secara bawaan 10 menit (API_TIMEOUT_MS=600000). Di belakang gateway, penyebab yang umum bukanlah model yang lambat. Lebih sering, ada sesuatu di tengah jalur yang menahan respons streaming, atau memutus koneksi yang terlalu lama diam. Itu bisa berupa proxy lokal, jaringan perusahaan, atau gateway itu sendiri. Periksa dulu dengan curl apakah stream tiba sepotong demi sepotong, baru putuskan apakah timeout perlu dinaikkan.
Yang mana yang Anda lihat
| Pesan | Arti |
|---|---|
Waiting for API response · will retry in … · check your network di bawah spinner |
Tidak ada data selama 20 detik. Claude Code masih menunggu; ini belum error |
Retrying in Ns · attempt x/y |
Percobaan ulang otomatis sedang berjalan, secara bawaan hingga 10 kali |
Request timed out |
Tidak ada respons dalam API_TIMEOUT_MS |
API Error: No response from API (waited …, then … on the retry) |
Dua percobaan berlalu tanpa byte pertama respons |
| HTTP 504 dengan body JSON Wokey | Wokey kehabisan waktu saat menunggu upstream |
| HTTP 408 | Body permintaan terunggah terlalu lambat, sehingga gateway berhenti menunggunya |
Empat yang pertama berasal dari Claude Code sendiri; dua yang terakhir berasal dari server.
Error timeout dari Wokey
Semua error timeout Wokey berupa 504 dalam format error standar. code memberi tahu di mana permintaan terhenti:
code |
Arti |
|---|---|
upstream_gateway_timeout |
Gateway milik upstream kehabisan waktu sebelum menghasilkan output apa pun |
official_exit_first_byte_timeout |
Upstream tidak pernah mulai membalas, termasuk waktu yang dipakai untuk mencoba ulang di rute lain |
provider_timeout |
Koneksi ke upstream terputus atau kehabisan waktu tanpa hasil |
Contohnya:
{"error":{"code":"upstream_gateway_timeout","message":"Upstream gateway timed out before producing a response.","type":"invalid_request_error"}}
Jika timeout terjadi setelah balasan mulai di-streaming, ia datang sebagai event error di dalam stream, bukan sebagai HTTP 504.
Saat lama tidak ada output, misalnya ketika model berpikir panjang, Wokey secara berkala menulis komentar SSE ke stream untuk menjaga koneksi tetap hidup:
: wokey-transport-keepalive-v1
Klien mengabaikan baris komentar. Jika Anda melihatnya saat menguji dengan curl, koneksi masih hidup dan model masih bekerja.
Langkah pemecahan masalah
1. Periksa dengan curl apakah stream tiba sepotong demi sepotong.
curl -N https://api.wokey.ai/v1/messages \
-H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":300,"stream":true,"messages":[{"role":"user","content":"Count from 1 to 60"}]}'
-N mematikan buffering milik curl sendiri.
- Baris
event:dandata:bergulir seiring kedatangannya: seluruh jalur baik-baik saja. - Semuanya muncul sekaligus setelah menunggu lama: ada sesuatu di tengah yang mem-buffer respons, dan Claude Code rentan timeout di jalur itu.
2. Periksa proxy lokal Anda. Claude Code mengikuti HTTPS_PROXY dan pengaturan proxy sistem. Mode TUN, proxy berbasis aturan, dan gateway perusahaan semuanya bisa mem-buffer respons streaming atau memutus koneksi yang diam. Jika jaringan Anda bisa menjangkau api.wokey.ai secara langsung, kecualikan domain itu dari proxy lalu coba lagi. Jika harus memakai proxy, bandingkan dengan node lain.
3. Naikkan timeout. Setelah jalurnya terbukti baik dan permintaannya memang panjang, naikkan batasnya di blok env pada ~/.claude/settings.json:
{
"env": {
"API_TIMEOUT_MS": "1200000"
}
}
API_TIMEOUT_MSadalah timeout per permintaan dalam milidetik. Nilai bawaannya 600000 (10 menit).- Jika proxy di jaringan Anda menahan respons sampai selesai, pesan error Claude Code menyarankan untuk juga menaikkan
CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS. - Deteksi stream yang macet di tengah jalan dikendalikan oleh
CLAUDE_STREAM_IDLE_TIMEOUT_MS. Nilai di bawah 5 menit dinaikkan menjadi 5 menit, dan maksimalnya 30 menit.
4. Perkecil konteks. Konteks yang lebih besar terunggah lebih lambat dan menunda token pertama. Jalankan /compact untuk meringkas sesi, atau mulai sesi baru.
5. Jika Anda mendapat 408. 408 berarti body permintaan berhenti tiba saat diunggah dan gateway menyerah menunggu. Ini hampir hanya muncul pada konteks yang sangat besar di jaringan yang tidak stabil. Mencoba ulang begitu saja biasanya berhasil. Jika terus terjadi, periksa proxy Anda seperti di langkah 2, lalu perkecil permintaan dengan /compact.
Timeout di Codex
Timeout idle stream di Codex secara bawaan 300000 ms (5 menit). Saat terpicu, Anda melihat idle timeout waiting for SSE atau stream disconnected before completion, dan percobaan ulang otomatis menampilkan Reconnecting... n/max. Pengaturan ini ditaruh di tabel provider:
[model_providers.wokey]
name = "Wokey"
base_url = "https://api.wokey.ai"
env_key = "WOKEY_API_KEY"
wire_api = "responses"
stream_idle_timeout_ms = 600000
stream_max_retries = 10
stream_max_retries bernilai bawaan 5 dan request_max_retries 4; keduanya dibatasi maksimal 100. Untuk penyiapan selengkapnya, lihat panduan Codex config.toml.
Pertanyaan umum
Berapa timeout bawaan Claude Code?
Sepuluh menit per permintaan, diatur oleh API_TIMEOUT_MS (bawaan 600000). Naikkan di blok env pada ~/.claude/settings.json, misalnya "API_TIMEOUT_MS": "1200000".
Bagaimana cara mengetahui apakah masalahnya di jaringan atau di model?
Kirim permintaan "stream":true dengan curl -N. Jika baris data: tiba satu per satu, jalurnya baik-baik saja. Jika semuanya muncul sekaligus setelah menunggu lama, ada sesuatu di tengah yang mem-buffer respons, dan jalur itu rentan timeout.
Apa arti 504 dari Wokey?
Semua timeout Wokey berupa 504, dan code menunjukkan di mana permintaan terhenti: upstream_gateway_timeout berarti gateway milik upstream kehabisan waktu, official_exit_first_byte_timeout berarti upstream tidak pernah mulai membalas, dan provider_timeout berarti koneksi ke upstream terputus atau kehabisan waktu.
Apa itu wokey-transport-keepalive-v1 di dalam stream?
Itu komentar SSE yang ditulis Wokey saat beberapa lama tidak ada output, agar perangkat perantara tidak memutus koneksi. Klien mengabaikannya; jika Anda melihatnya, koneksi masih hidup dan model masih bekerja.
Bagaimana cara mengubah timeout di Codex?
Atur stream_idle_timeout_ms (bawaan 300000) dan stream_max_retries (bawaan 5) di tabel provider pada config.toml.