What Happens When OpenAI Goes Down and How to Stay Online
TL;DR
- An OpenAI outage takes down every application that calls OpenAI directly, at the same moment, because a direct integration has no second path for the request.
- Retrying the same provider does not resolve a provider-wide outage, since every retry targets the same failing endpoint.
- Bifrost retries transient errors with exponential backoff, rotates to a different API key on per-key failures such as
429rate limits, and falls back to the next provider in a configured chain once the retry budget is exhausted. - Adding failover to an existing OpenAI integration is a
base_urlchange plus a provider and fallback configuration, not an application rewrite. - Bifrost adds 11 microseconds of overhead per request at 5,000 requests per second in sustained benchmarks, so the failover layer costs no meaningful latency during normal operation.
OpenAI outage reports have become routine through 2026: OpenAI's API and ChatGPT saw four separate service disruptions in four consecutive days in late July alone, with users seeing 503 errors across the API, ChatGPT, and Codex simultaneously. In December 2024, ChatGPT, the OpenAI API, and Sora went down together for roughly three hours in a single incident. Any application that calls OpenAI directly, with no fallback path, goes down at the exact same moment as OpenAI does.
Bifrost, the open-source AI gateway built in Go by Maxim AI, routes requests across providers automatically so a single vendor's outage does not become an application-wide outage. This post covers what actually happens during an OpenAI outage, why single-provider architectures fail, and how to configure automatic failover so production traffic keeps running.
What Happens During an OpenAI Outage
An OpenAI outage means requests to the API, ChatGPT, or Codex start failing or timing out because of an incident on OpenAI's infrastructure, not because of anything wrong in the calling application. These incidents show up as a handful of distinct failure signatures:
- 5xx server errors - the request reaches OpenAI's servers, but the upstream service fails to process it
- 429 rate-limit errors - requests are throttled or rejected because of load, sometimes at the account level rather than the request level
- Increased latency and timeouts - requests hang rather than failing outright, which is often harder to detect than an outright error
- Full endpoint unavailability - specific API endpoints (chat completions, image generation, embeddings) go down independently of one another
OpenAI's own status history over 2026 shows dozens of these incidents recurring across ChatGPT, the API, and Codex, several lasting multiple hours. An application with a single provider and no fallback path inherits every one of these incidents directly, at the moment they happen. Routing the same traffic through an AI gateway gives those requests somewhere else to go.
How to Tell an OpenAI Outage From a Problem in Your Own Application
An OpenAI outage affects every caller at once, so the fastest confirmation combines a status check with the shape of the errors. Application-side faults produce errors tied to specific requests, users, or a recent deploy. Provider-side incidents produce the same failure across unrelated requests inside the same window.
Three checks separate the two cases:
- Check OpenAI's incident history. A confirmed incident covering the API, ChatGPT, or Codex ends the investigation.
- Compare failure rates across endpoints. If chat completions are failing while embeddings keep succeeding, the fault points at the provider, since a bug in the calling application rarely respects that boundary.
- Send the same payload to a second provider. A request that fails against OpenAI and succeeds against Anthropic isolates the fault to OpenAI.
The third check is the one a gateway makes routine. When traffic already routes through Bifrost, the response reports which provider served each request and request logging records the failover events, so the comparison sits in the telemetry rather than being reconstructed under incident pressure. Teams that have already adopted automatic failover and load balancing for LLM applications see the same incident as a routing event.
Why Single-Provider AI Architectures Fail
The default starting point is a direct integration: an application calls the OpenAI SDK, gets a response, and moves on. That works until the provider returns errors it cannot recover from. A few architectural gaps make single-provider setups fragile:
- No failover path. If the only configured provider is down, there is nowhere else for the request to go. Retrying the same provider during a genuine outage just repeats the same failure.
- No key rotation. A single API key means a single point of failure for rate limits, billing issues, or a revoked credential.
- Retries alone do not solve provider-wide outages. Retrying with backoff helps with transient errors on a healthy provider, but it does nothing when the provider itself is down; the request keeps failing against the same broken endpoint.
- Concentration risk. Teams that standardize on one model provider for cost or simplicity reasons take on that provider's downtime as their own downtime, with no way to route around it.
The fix isn't necessarily switching providers permanently; it's having a second (or third) provider configured and ready to take over automatically the moment the primary fails. That is the reasoning behind the failover routing strategies used in production AI systems, where the fallback chain is defined before an incident rather than during one. The LLM gateway buyer's guide covers what to check before committing to one.
How Bifrost Keeps Applications Online During an OpenAI Outage
Bifrost sits between an application and its model providers as a single OpenAI-compatible API that unifies access to 10,000+ models across 25+ providers, including OpenAI, Anthropic, AWS Bedrock, Google Vertex AI, and Azure OpenAI. Two mechanisms handle outages directly.
Retries with exponential backoff
When a request to a provider returns a transient error, Bifrost automatically retries the request with exponential backoff. Transient server errors (5xx, DNS, connection failures) reuse the same key and back off before the next attempt. Per-key failures, such as rate limits, authentication errors, or billing issues, rotate to a different API key from the configured pool, with backoff applied for rate-limit rotations since account-level quotas can be shared across keys.
Backoff grows exponentially with jitter. With the defaults of retry_backoff_initial: 500 ms and retry_backoff_max: 5000 ms, the schedule is:
| Attempt | Base backoff | With jitter |
|---|---|---|
| 1st retry | 500 ms | 400-600 ms |
| 2nd retry | 1,000 ms | 800 ms to 1.2 s |
| 3rd retry | 2,000 ms | 1.6-2.4 s |
| 4th retry | 4,000 ms | 3.2-4.8 s |
| 5th and later | 5,000 ms (capped) | 4-5 s |
The schedule matters during an outage, because the retry budget is what a request spends before the fallback provider is tried: short budgets fail over quickly, long ones absorb transient errors but delay the switch.
Automatic provider fallbacks
Retries handle transient issues on a single provider. Fallbacks handle the case where the primary provider is genuinely down. When a request exhausts its retry budget against the primary provider, Bifrost moves to the next provider in a configured fallback chain, each with its own full retry budget, until one succeeds. The response reports which provider actually served the request in extra_fields.provider, so applications can log and monitor failover events without any custom logic.
The table below maps each failure signature to what Bifrost does with it:
| Failure signature | What Bifrost does | Key rotated | Backoff applied |
|---|---|---|---|
| Network error (DNS, connection refused) | Retries against the same provider | No, the same key is reused | Yes |
5xx server errors (500, 502, 503, 504) |
Retries against the same provider | No, the same key is reused | Yes |
429 rate limit |
Rotates to another key in the pool | Yes | Yes, account quotas can be shared across keys |
401 / 403 authentication failure |
Marks the key dead for the request, then rotates | Yes | No, waiting cannot revive a bad credential |
402 billing failure |
Marks the key dead for the request, then rotates | Yes | No |
| Retry budget exhausted on the provider | Moves to the next provider in the fallback chain | The next provider's own keys | The next provider gets a full retry budget |
When every configured key for a provider is permanently dead, Bifrost returns 502 upstream_credentials_exhausted rather than the raw 4xx, which distinguishes an exhausted provider credential from a problem with the caller's own request.
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Explain quantum computing in simple terms"}],
"fallbacks": [
"anthropic/claude-3-5-sonnet-20241022",
"bedrock/anthropic.claude-3-sonnet-20240229-v1:0"
]
}'
In this example, if OpenAI fails after exhausting retries, the request automatically moves to Anthropic, then to Bedrock, with each fallback treated as a fresh request that runs through the same plugins, including semantic caching and governance checks.
Load balancing across keys and providers
Beyond failover during an incident, load balancing across API keys spreads normal traffic across a pool of keys and providers so that no single credential or provider absorbs the full request volume. This reduces how often a team hits provider-side rate limits in the first place, which lowers the odds of a self-inflicted outage on top of a provider-side one. OpenAI publishes its rate-limit tiers per account, and managing OpenAI rate limits at scale covers the quota side of the same problem.
Configuring Automatic Failover with Bifrost
Setting up failover for an existing OpenAI integration does not require rewriting application code. Because Bifrost is a drop-in replacement for the OpenAI, Anthropic, and Google GenAI SDKs, the only required change is the base_url:
# Before: direct to OpenAI
client = openai.OpenAI(api_key="your-openai-key")
# After: through Bifrost
client = openai.OpenAI(
base_url="http://localhost:8080/openai",
api_key="<YOUR-BIFROST-VIRTUAL-KEY>" # your Bifrost virtual key; provider keys are managed by Bifrost
)
From there, failover configuration happens at the request or provider level:
- Configure multiple providers with their credentials in Bifrost, so a fallback provider is ready before an outage happens, not during one.
- Set a
fallbacksarray on requests (or as a default provider chain) so Bifrost knows which provider to try next. - Configure
network_configper provider (max_retries,retry_backoff_initial,retry_backoff_max) so retries exhaust quickly enough to fail over without adding unnecessary latency to every request.max_retriesdefaults to0, so a provider left at the default fails over on the first error rather than absorbing a transient one. - Add multiple API keys per provider where available, so rate-limit and billing failures rotate to a working key before the request escalates to a full provider fallback.
For teams running at production scale, clustering adds automatic service discovery, gossip-based state synchronization, and zero-downtime deploys, and adaptive load balancing adds predictive scaling with real-time provider health monitoring, so the fallback chain itself stays available under load. Bifrost adds only 11 microseconds of overhead per request at 5,000 requests per second in sustained benchmarks, so this resilience layer does not introduce a meaningful latency cost during normal operation.
Real-World Benefits of Multi-Provider Failover
Multi-provider failover converts a provider incident from an application outage into a routing decision. The request that would have returned a 503 is served by a different provider inside the same call, and the application code that issued it is unaffected. Teams that configure automatic failover stop treating a provider's status page as their own uptime dashboard. The practical outcomes:
- Provider outages become invisible to end users rather than causing full application downtime, since traffic shifts to a working provider within the same request.
- Rate-limit and billing failures on one key no longer stall requests when other keys or providers are available to absorb them.
- Incidents become easier to triage, since the response already indicates which provider served a failed-over request.
- Provider concentration risk goes down, since a team is no longer fully dependent on any single vendor's infrastructure for production traffic.
Teams evaluating Bifrost as the failover layer or another gateway can review the reliability and governance criteria for any provider-failover setup.
Comparing implementations across vendors is covered in this survey of AI gateways with automatic failover for provider outages, and the mechanics of load balancing alongside automatic failover are worth settling before a fallback chain goes to production.
Frequently Asked Questions About OpenAI Outages and Failover
Does retrying the same provider help during an OpenAI outage?
Retrying helps with transient, request-level errors on an otherwise healthy provider. It does not help when the provider itself is down, since the retry targets the same failing endpoint. A fallback to a different provider is required to route around a genuine outage.
How fast does failover happen?
Failover happens as soon as the primary provider's configured retry budget is exhausted. With low max_retries and short backoff windows, this can complete in well under a second before the request moves to the next provider in the chain.
Does failing over to a different provider change the response format?
No. Because the Bifrost AI gateway exposes a single OpenAI-compatible API across every provider, the application receives a consistent response format regardless of which provider in the fallback chain actually served the request.
Do I need to rewrite my application to add failover?
No. Since Bifrost is API-compatible with the OpenAI SDK, adding failover to an existing OpenAI integration is a base_url change plus provider and fallback configuration, not an application rewrite.
How many retries should I configure before failing over?
max_retries defaults to 0, which fails a provider over on its first error. Three retries with the default 500 ms initial backoff and 5,000 ms cap absorb most transient 5xx errors while still reaching the fallback provider within a few seconds. Provider-wide outages are better served by a low retry count, since every attempt targets the same failing endpoint.
What happens if every provider in the fallback chain fails?
Bifrost returns the original error from the primary provider, so the caller sees the failure that started the chain rather than the last one. One exception applies: if a plugin on a fallback provider marks its error as non-recoverable, the chain halts there and that provider's error is returned instead.
Start Building with Bifrost
An OpenAI outage does not have to become an application outage. Configuring automatic fallbacks, retries, and load balancing with Bifrost takes a base_url change and a provider list, not a rewrite.
Point an existing integration at Bifrost using the OpenAI SDK integration, configure a second provider with its own keys, and set a fallback chain on the requests that matter most. The same pattern extends to every other provider, which is why teams use one OpenAI-compatible SDK across all of them.
Teams running this at scale can review the published throughput and overhead benchmarks alongside the wider practice of building reliable LLM applications.
To see automatic failover configured against a real multi-provider setup, book a demo with the Bifrost team.