Claude and OpenAI Down Again: How to Build Resilient LLM Products Amid Major API Outages
I’m Denis Shokhirev, an Enterprise AI architect based in Erlangen, Germany. At DennisCraft AI Studio, I’ve shipped 14 production AI agents for DACH B2B clients over the past six months (logistics, fintech, industrial automation) using a stack of Claude, Supabase, n8n, Doppler, and self-hosted Postgres. Last week, both OpenAI and Anthropic APIs were down for two hours. That meant real downtime, missed SLAs, and angry clients. This is now a recurring production risk, not a hypothetical edge case.
I’m Denis Shokhirev, an Enterprise AI architect based in Erlangen, Germany. At DennisCraft AI Studio, I’ve shipped 14 production AI agents for DACH B2B clients over the past six months (logistics, fintech, industrial automation) using a stack of Claude, Supabase, n8n, Doppler, and self-hosted Postgres. Last week, both OpenAI and Anthropic APIs were down for two hours. That meant real downtime, missed SLAs, and angry clients. This is now a recurring production risk, not a hypothetical edge case.
Why Major LLM Outages Are the New Normal
If you’re building AI products for the DACH B2B market with strict SLAs, API outages can’t be ignored. In the last six months, I’ve recorded four major production outages (lasting 20–90 minutes each) — affecting both OpenAI and Anthropic at the same time (see status.openai.com and status.anthropic.com). Root causes: traffic spikes, provider-side infra upgrades, DDoS, and backend failures. This isn’t rare: OpenAI’s own status page shows at least 5 significant incidents already in 2024 alone.
Typical Failure Modes
- OpenAI API (gpt-4o/gpt-4-turbo) returns 5XX or long timeouts for 20+ minutes
- Claude API (claude-3-opus, sonnet) delivers degraded performance or silent failures
- Sudden mass rate limiting, even on normal traffic
When this hits, client operations grind to a halt: auto-generated reports fail, invoices aren’t created, automations break. In fintech and logistics, that’s direct financial impact tied to SLA compliance.
Architectural Patterns for Resilient LLM Products
1. Multi-vendor fallback (provider hot-switching)
The classic pattern: if your primary LLM API fails, instantly switch to a backup. But real-world application isn’t trivial:
- Input/output formats differ — Claude vs OpenAI have divergent system prompt conventions, tokenization, and limits
- Feature parity isn’t guaranteed — e.g., function calling support
- Both APIs can (and do) fail together
In my deployments, fallback logic is orchestrated with n8n and custom Node.js scripts:
const callClaude = async (input) => {
// Anthropic SDK usage here
};
const callOpenAI = async (input) => {
// OpenAI SDK usage here
};
let result;
try {
result = await callClaude(payload);
} catch (e) {
// Log error, try OpenAI as backup
result = await callOpenAI(payload);
}
return result;
2. Queues and Retrying with a Broker
Instead of synchronous API calls, queue tasks via Supabase, RabbitMQ, or Postgres LISTEN/NOTIFY. This lets you:
- Buffer tasks during outages
- Retry with exponential backoff (e.g., 1, 5, 15 minutes)
- Recover state — if a job fails, it’s not lost
import time
import supabase
def process_task(task):
try:
# Call LLM API
pass
except Exception as e:
# Requeue with delay
time.sleep(300)
process_task(task)
3. Result Caching
In my stack, about 40% of LLM requests are repeat prompts. By caching results in Postgres (hash input → output, TTL=7d), I cut API load and reduce impact during outages. Especially effective for template-based email/report/FAQ generation.
CREATE TABLE llm_cache (
prompt_hash VARCHAR PRIMARY KEY,
result TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
SELECT result FROM llm_cache WHERE prompt_hash = $1 AND created_at > NOW() - INTERVAL '7 days';
4. Graceful Degradation — Fallback to Templates or Rule-Based Logic
Not every user feature is mission-critical. If LLMs are down, auto-switch to static responses (“Service temporarily unavailable, please try again”) or limited rule-based flows. This keeps your service partially operational, which is better than total failure.
Validation and Monitoring — What Actually Works
API Status Monitoring
Don’t rely on manual checks. I integrate provider status endpoints (OpenAI, Anthropic’s equivalent) directly into n8n for automated Slack/Telegram alerts.
const fetch = require('node-fetch');
const url = "https://status.openai.com/api/v2/status.json";
async function checkStatus() {
const res = await fetch(url);
const data = await res.json();
if (data.status.indicator !== 'none') {
// send alert
}
}
Error Log Analysis
Log every error and timeout with full context: endpoint, payload, timestamp. Use semgrep and bandit for post-mortem analysis. On three of my recent agent deployments, I caught the same serialization bug causing mass 5XX errors during provider outages.
Set Realistic SLAs and Communicate
Be transparent with clients: “LLM components may be unavailable 0.5–2% of the time per month.” Don’t promise 100% uptime — you’ll get hit with penalties for outages outside your control.
| Pattern | Upside | Downside |
|---|---|---|
| Multi-vendor fallback | Instant failover | Requires duplicated logic, feature mismatches |
| Queue + retry | Minimizes lost requests | Adds latency, needs extra infra |
| Caching | Reduces API load, speeds up response | Limited to repeatable prompts |
| Graceful degradation | Partial service continuity | Limited functionality |
FAQ
What if both OpenAI and Claude are down at once?
Implement graceful degradation: switch to static templates, rule-based flows, or user notifications. For critical flows, temporarily disable automation and escalate to ops teams.
Are self-hosted LLMs (Llama, Mistral) a real alternative for resilience?
Partially. For narrow tasks, yes. For code or document generation, self-hosted LLMs still lag in quality (see Stanford HELM 2024: https://crfm.stanford.edu/helm/latest/).
How do you monitor API status efficiently?
Use official provider endpoints, integrate with n8n or your alerting stack. Automated checks are essential — manual monitoring fails at scale.
Which queue system to use for retries?
For small/mid projects: Supabase or Postgres. For high-load: RabbitMQ or Redis Streams. Key: the queue should operate independently of the LLM API.
How do you communicate API outage risk to clients?
Openly: large-scale outages aren’t a bug in your stack, but a fact of cloud LLM operations. Set SLA commitments at 98–99%, not higher.
In your production LLM stack, where do you see the most failures — API, queue, cache, or business logic? I want to hear real cases. I offer a free 30-min stack audit for DACH founders building AI for regulated markets. DM me on LinkedIn or write to @ger_dennis_ai.
Turn your process into an AI system
Fixed price. Production quality. DACH B2B focus.