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: dan data: 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_MS adalah 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.