Resilience Patterns — Building on AIWatch-Monitored Services
Structural guidance for building reliably on the services AIWatch monitors. These patterns are properties of each service’s architecture, so they hold month to month — the monthly reports’ Observations point here and add only what’s new that month. Read a report’s Observations for this month’s specific failure mode; read this page for how to build against it.
Last reviewed: 2026-07
Jump to: LLM APIs · Voice / transcription · Cross-cutting patterns
LLM APIs
Anthropic (Claude API, Claude Code, claude.ai)
- Monitor the per-model components individually, not the aggregated incident count across them. Single-model traffic isn’t well represented by the combined total, and retry / failover decisions need per-model granularity.
- The three surfaces share Anthropic infrastructure and can fail together — you can’t fail over from one Anthropic surface to another. For real redundancy, pair Anthropic with a non-Anthropic provider, not with itself.
Gemini
- Prefer long-lived keys with a rotation cadence ≥ monthly — newly-created keys have been the affected scope in past incidents.
- Monitor BOTH gcloud Vertex and AI Studio — they don’t always agree, and direct-API outages often surface on AI Studio first.
- Gemini incidents are rare but long — design for graceful degradation (retries + a non-streaming fallback path), not fast recovery.
Voice / transcription
Deepgram
- The Voice Agent carries an upstream-LLM dependency. The longest Deepgram incidents trace back to that surface, so a single-LLM Voice Agent setup takes the full upstream blast radius — configure multiple LLM providers for failover.
- Isolate the Voice Agent from your core STT/TTS so an upstream-LLM incident can’t take down basic transcription.
- Real-time transcription is a hot path — route it behind a degradation-aware fallback to a second provider. A latency degradation alone (not only a hard outage) stalls real-time audio.
Cross-cutting patterns
Patterns that apply across services, not tied to one provider.
Retry / timeout tuning (general)
- Set client-side timeouts to cover the Longest incident column, not the average, so the retry budget survives the worst case rather than the mean.
- Standard exponential backoff with a sub-minute initial retry absorbs the flap pattern some status pages show (e.g. Together AI, Mistral).