Timeout Errors Across All AI Providers — 2026 Guide
Timeouts fire for many different reasons — HTTP request timeouts, streaming disconnects, reasoning models exceeding their budget, tool calls hanging, cross-region latency spikes. Each has a different fix. This is the cross-provider directory: every timeout pattern grouped by provider and mechanism.
Timeouts fire for many different reasons — HTTP request timeouts, streaming disconnects, reasoning models exceeding their budget, tool calls hanging, cross-region latency spikes, gateway policy caps, and framework-level deadlines that trip before the provider's timeout. Each has a different fix. This page is the cross-provider directory: every timeout pattern we've documented across every provider, IDE tool, and gateway, grouped so you can find your specific error in seconds.
For backoff and retry patterns triggered by timeouts, see the backoff chapter of the Rate Limits pillar guide. For related failure modes, see the Rate Limits, Authentication, and Context Window category hubs.
2026 timeout defaults at a glance
Timeout behavior varies enormously across providers and SDKs. Here's the 2026 landscape at a glance.
| Provider / Layer | Default timeout | Streaming | Config parameter | Notes |
|---|---|---|---|---|
| Anthropic Claude (SDK) | 10 minutes | Keep-alive with reconnect | timeout in Anthropic() client | Extended thinking can push toward limit |
| Anthropic Claude Batches API | 24 hours | N/A (batch) | N/A — fixed deadline | Expires silently at 24h |
| OpenAI (SDK) | 10 minutes | Server-sent events (SSE) | timeout parameter on request | Reasoning models can hit at high effort |
| OpenAI Batch API | 24 hours | N/A (batch) | N/A — fixed deadline | Fails whole batch if exceeded |
| Google Gemini (Vertex) | 60 seconds default | SSE stream | request_options.timeout | Adjustable up to model max |
| Google Gemini File API | Upload-size-based | N/A | Client-side chunking | Large files can hit even with slow uploads |
| AWS Bedrock (boto3) | 60 sec connect / 60 sec read | Model-specific | read_timeout in Config | Streaming ignores read_timeout |
| Azure OpenAI (SDK) | 60 seconds (Front Door) | SSE stream | Front Door: not configurable | Move to direct endpoint for long requests |
| Azure OpenAI Direct | 10 minutes | SSE stream | timeout parameter | Bypasses Front Door 60s limit |
| IDE tools (Cursor/Copilot) | ~30-60 sec per turn | N/A | Not user-configurable | Tied to subscription tier |
| Gateways (LiteLLM/OpenRouter/Portkey) | Configurable per route | Configurable | config.yaml / dashboard | Should be shorter than provider timeout |
Anthropic Claude
Claude's default SDK timeout is 10 minutes — generous for most requests but hittable on extended thinking workloads with high budget_tokens. Streaming uses keep-alive to prevent connection drops on long-generating responses. The 529 overloaded_error is often confused with timeouts but is a separate condition — provider capacity, not client patience.
- Request timeout 408Full response not received within timeout
- Streaming connection dropped mid-generationSSE disconnect from network or LB
- 529 overloaded_error (not actually a timeout)Provider capacity, use retry-after
- Batches API 24-hour deadline exceededSilent expiration if not polled
- Extended thinking exceeds SDK timeoutbudget_tokens=32K + long gen can hit
OpenAI
OpenAI's reasoning models (o-series, GPT-5.6 with reasoning_effort=high) can run for many minutes on hard problems — the default 10-minute timeout is often hit before the reasoning completes. Streaming responses via SSE handle mid-response reconnection. Assistants API polling has its own timeout semantics.
Google Gemini
Gemini's default 60-second request timeout is shorter than Anthropic or OpenAI — configurable up to model maximum via request_options. Long-context requests (approaching 1M tokens) can exceed default timeout during prefill alone. File API uploads use chunked transfer and can timeout on slow uploads or oversized files.
AWS Bedrock
Bedrock's boto3 default is 60-second connect + 60-second read — the read timeout can be surprisingly short for long-generation Claude requests. Streaming responses use InvokeModelWithResponseStream, which handles read_timeout differently than InvokeModel. Cross-region inference profiles add regional latency variance.
- InvokeModel read_timeout (boto3 Config)Increase Config(read_timeout=600)
- InvokeModelWithResponseStream hangs (no timeout)Streaming ignores read_timeout
- Cross-region inference profile latency timeoutRegional routing adds latency variance
- Converse API timeout on long-context requestPayload processing time
Azure OpenAI
Azure OpenAI has a hidden gotcha: Azure Front Door enforces a 60-second timeout on requests routed through it, regardless of your SDK timeout config. Direct-to-deployment endpoints bypass Front Door and allow the full 10-minute timeout. For long reasoning or extended thinking workloads, direct endpoints are essential.
Timeouts at other layers of the stack
Timeouts don't only fire at the provider layer. IDE tools have their own per-turn deadlines, gateways enforce upstream timeouts, frameworks have chain-level and node-level timeout budgets. Each layer can trip before the provider timeout does.
IDE Tools
IDE tools have their own per-turn timeout budgets that aren't user-configurable. Cursor Agent mode tool calls have hard time limits. Claude Code tool execution can hang without clean error recovery. GitHub Copilot's extension has a shorter timeout budget than the underlying API.
Gateway Layer
Gateways add configurable timeouts that should be shorter than the underlying provider's timeout — otherwise you get the worst of both worlds. LiteLLM has request_timeout and stream_timeout separately. OpenRouter enforces upstream timeouts even when the underlying provider would wait longer. Portkey timeout policies live in Gateway configs.
Framework Layer
Framework timeouts stack on top of provider timeouts and often trip first if not configured carefully. LangChain has both chain-level and per-tool timeouts. LangGraph node execution has its own timeout at the state machine level. LlamaIndex workflow steps enforce timeouts per step, not per workflow.
Frequently asked questions
Why do reasoning models timeout more often?
What's the difference between HTTP timeout and streaming timeout?
Why does Azure OpenAI time out at exactly 60 seconds?
How should I set my request timeout in production?
Why does the same request sometimes time out and sometimes not?
Should I retry on timeout?
What causes 'InvokeModelWithResponseStream hangs indefinitely' on Bedrock?
How do I handle timeouts in agent workloads with many tool calls?
Why does my Batch API job fail after 24 hours?
What's a good default timeout value if I have to pick one?
Related resources
Deep dives, comparisons, and pillar guides related to timeout handling:
- Category Hub: Rate Limits (companion category)
- Category Hub: Authentication (companion category)
- Category Hub: Context Window (companion category)
- Pillar Guide: Handling Rate Limits in AI APIs (backoff patterns)
- Pillar Guide: AI API Cost Optimization Playbook
- Pillar Guide: OpenAI API Errors (reasoning timeouts)
- Pillar Guide: Azure OpenAI (Front Door 60s)
- Pillar Guide: Bedrock (boto3 read_timeout)
- Blog: The AI Errors Nobody Talks About
- Blog: Frontier Model Comparison
- Full errors library (330+ pages)
- Weekly digest — new timeout patterns