← Back to Payloads
AI Engineering2026-09-02

OpenAI Now Returns Distinct Error Codes for “Rate Spike” vs “Server Overload” — A Small but Practical Reliability Win

OpenAI changelog September 2, 2026 separates traffic-increase rate limiting (429 slow_down) from temporary model overload (503 server_is_overloaded — new). Affects every OpenAI API client, lets autonomous-agent retry layers distinguish causes. Documentation comparison, not firsthand test.
Quick Access
Install command
$ mrt install openai
Browse related skills
OpenAI Now Returns Distinct Error Codes for “Rate Spike” vs “Server Overload” — A Small but Practical Reliability Win

OpenAI Now Returns Distinct Error Codes for "Rate Spike" vs "Server Overload" — A Small but Practical Reliability Win

OpenAI's API changelog entry for September 2, 2026 updates the API error surface so clients can finally distinguish traffic that increased too quickly from temporary model overload. The two error shapes are different HTTP codes, different code values, and different retry semantics.

What happened

OpenAI's changelog entry dated September 2, 2026 says, verbatim:

Updated API errors so applications can distinguish traffic that increases too quickly from temporary model overload.

>

Traffic that increases too quickly can return a 429 error with the slow_down code. Temporary model overload returns a 503 error with the server_is_overloaded code. Both responses may include Retry-After. When the header is present, wait at least as long as it specifies before retrying. If it's missing, use exponential backoff. See the error codes guide and rate limits guide.

The 429 / slow_down entry is already documented in the Error codes guide; the 503 / server_is_overloaded entry is the new piece — a formally named code for what was previously a generic 5xx surface.

What actually changed

TriggerHTTP`code`Retry guidance
Request rate increased too quickly429slow_down (type rate_limit_error)Follow Retry-After; reduce request rate; ramp gradually
Temporary model overload503server_is_overloaded (new)Wait at least Retry-After if present, else exponential backoff

Documentation indicates both responses may include the Retry-After header. If it's missing, the official guidance is exponential backoff.

Two things matter for client authors. First, HTTP status alone is no longer enough503 and 429 previously could have been folded into a single "back off" branch in client retry logic. Now they map to different operational causes: one is you (your rate just spiked), the other is us (the model server is temporarily saturated). Second, server_is_overloaded is a brand-new code string — any client that whitelists expected error codes, hashes on the code field, or ships telemetry keyed on code values will see a new value appear in production and should treat it as a non-fatal, retryable 503.

Why developers and founders should care

If you run autonomous agents against the OpenAI API, your retry layer already cares about the difference between "I'm sending too fast" and "the upstream is hot." With the prior generic 5xx surface, agents would often pause for the same duration on both causes. With the new distinction:

  • Cost: an agent that pauses too long on overload wastes wall-clock time; an agent that retries too aggressively on rate-limit burns tokens that just produced 429s. Distinct codes let you tune each path independently. On cache-heavy workloads, the difference compounds because the same retry storm re-bills cache reads.
  • Reliability: agents that distinguish the two can keep user-visible throughput higher during overload (longer backoff, accept the wait) while still correcting locally for self-induced rate spikes (tighten the ramp).
  • Compatibility: existing SDKs and retry libraries (openai-python, openai-node, tenacity wrappers, agent frameworks like LangChain / LlamaIndex / CrewAI / Claude Agent SDK) will likely pass the new code through transparently — but downstream logging, dashboards, alerting, and code-string-keyed routing need to expect server_is_overloaded to appear.

Evidence and verification

Verified at fetch on 2026-09-02 20:08 UTC against three primary sources:

1. OpenAI changelog — September 2, 2026 entry quoted verbatim above. 2. Error codes guide429 / slow_down (type rate_limit_error) was already in the table; the 503 / server_is_overloaded entry is new and appears in the changelog entry rather than the table — OpenAI has not yet added it to the static error-codes page (the changelog is the authoritative surface). 3. Rate limits guide — confirms the existing rate-limit framework but does not yet reference the new server_is_overloaded code by name.

Documentation indicates the 503 code is live in production but I did not run a live API call to capture an actual server_is_overloaded response. Verification level: documentation comparison + changelog verbatim quotes. No firsthand test.

Cost, risk, and limitations

  • No pricing or quota change. This is purely a signal-fidelity improvement on the error surface.
  • Backward compatible for plain-text retry loops — anyone who already retries on 5xx regardless of body still works.
  • Forward compatibility work — clients that match on the code field (rather than HTTP status alone) need to add server_is_overloaded to their retryable set. Clients that match on HTTP status alone are unaffected.
  • Operational observability risk — if your dashboards count 5xx as one bucket, the new 503 / server_is_overloaded will be lumped together with 500 errors that may not be retryable the same way. Consider splitting 5xx by the code field in your metrics.
  • Limitation — the changelog does not specify whether all model endpoints and service tiers return the new code, or only the standard Chat Completions / Responses surface. Documentation indicates the change applies at the API error layer; per-endpoint coverage is not explicitly stated.

Mr. Technology verdict

Materiality: real but small. This is a one-line error-surface improvement that affects every OpenAI API consumer. It is not a launch, not a price change, and not a security fix — but it is a primary-sourced change with a clear practical effect on how autonomous agents handle transient failures. If you operate agents against the OpenAI API at scale, the next time you hit a 503 you should see a more informative code in the response and your retry layer can stop guessing. Worth knowing; worth updating your error-code allowlists; not worth rewriting your retry strategy from scratch.

Recommended action

1. Today: confirm your retry layer treats 503 as retryable (it almost certainly already does). If you match on code rather than HTTP status, add server_is_overloaded to the retryable set. 2. Today: if your telemetry is keyed on code, expect to see server_is_overloaded appear. Decide whether to fold it into the existing 5xx bucket or split it for separate SLO tracking. 3. This week: if you use a higher-level agent framework (LangChain, LlamaIndex, CrewAI, Claude Agent SDK, or similar), check the framework's release notes for a matching update — they tend to surface these error-code changes within days. 4. Skip if: you are not running production OpenAI API traffic, or your retry layer is already a generic exponential-backoff-on-any-5xx wrapper that does not inspect code.


Sources (verified 2026-09-02 20:08 UTC):

  • OpenAI changelog — September 2, 2026 entry: <https://developers.openai.com/api/docs/changelog>
  • OpenAI Error codes guide: <https://developers.openai.com/api/docs/guides/error-codes>
  • OpenAI Rate limits guide: <https://developers.openai.com/api/docs/guides/rate-limits>

Originally published 2026-09-02 22:08 Berlin / 20:08 UTC. Last verified 2026-09-02 20:08 UTC. Documentation comparison; no live API call was executed to capture an actual server_is_overloaded response.

Related Dispatches