{"slug": "one-event-five-status-codes-and-a-class", "title": "One event, five status codes and a class", "summary": "Seven inference providers document the single event of serving-capacity exhaustion under five different HTTP status codes — 429, 498, 500, 503 and 529 — according to a provider-by-provider review checked against each vendor's documentation on 13 September 2026. At four of the seven providers, the code that signals capacity exhaustion is also the code for a caller breaching its own quota or rate limit: DeepInfra and Google's Gemini Enterprise Agent Platform (formerly Vertex AI) put both events on 429, the Gemini API does the same on its Flex inference tier, Fireworks AI uses 429 for the caller's breach on serverless and for capacity exhaustion on dedicated deployments, and OpenAI uses 429 for the caller's breach and, on Flex processing, for capacity exhaustion. Amazon Bedrock assigns capacity exhaustion to 503 and 529 while reserving 429 for quota breaches, Anthropic uses 529 for capacity and 429 for rate limits, and Groq uses 498 on its flex tier plus 503 for maintenance or overload.", "body_md": "# One event, five status codes and a class\n\nWhen an inference provider runs out of serving capacity, requests fail while the caller is inside its published limits. Seven providers document that single event under five HTTP status codes, 429, 498, 500, 503 and 529. Where capacity has been bought in advance it also appears as a 5XX class, the 500 to 599 server-error range. At four of the seven, the code that carries capacity exhaustion is also the code for a different event, the caller breaching its own quota or rate limit. DeepInfra and Google's Gemini Enterprise Agent Platform, formerly Vertex AI, put both events, capacity exhaustion and the caller's breach, on 429, and the Gemini API does the same on its Flex inference tier. Fireworks AI uses 429 for the caller's breach on serverless and for capacity exhaustion on dedicated deployments, and OpenAI uses 429 for the caller's breach and, on Flex processing, for capacity exhaustion.\n\nEvery quotation below was checked against the linked page on 13 September 2026.\n\n| Provider | Capacity exhaustion | Caller's quota or rate breach | \n|---|---|---|\n| Amazon Bedrock | 503; 529 | 429 | \n| OpenAI | 503; 429 on Flex processing | 429 | \n| Anthropic | 529 | 429 | \n| Groq | 498 on the flex tier; 503 for maintenance or overload | 429 | \n| DeepInfra | 429 | 429 | \n| Fireworks AI | 503 on serverless; 429 on dedicated | 429 on serverless; on dedicated its pages disagree (below) | \n|  | 503 on the Gemini API, with 429 as well on its Flex inference tier; 429 and 500 on the Gemini Enterprise Agent Platform (formerly Vertex AI); 5XX under Provisioned Throughput while usage is below the purchased amount | 429 | \n\n## Provider by provider\n\n**Amazon Bedrock** keeps capacity and quota on separate codes of one\ntroubleshooting page, and gives capacity two of them. A\n[503](https://docs.aws.amazon.com/bedrock/latest/userguide/troubleshooting-api-error-codes.html#ts-service-unavailable)\nis “The service is temporarily unable to handle the request.”, raised\nwhen the service is “experiencing high demand or temporary capacity\nconstraints”, and the entry adds: “This is not related to your\naccount-level quotas or rate limits (which return 429\nThrottlingException).” A\n[529](https://docs.aws.amazon.com/bedrock/latest/userguide/troubleshooting-api-error-codes.html#ts-overloaded-error),\nwhich the page labels overloaded_error, is “The model is temporarily\nunable to process the request because of high demand or insufficient\nserving capacity.” A\nquota breach is a\n[429](https://docs.aws.amazon.com/bedrock/latest/userguide/troubleshooting-api-error-codes.html#ts-throttling-exception):\n“The request was denied due to exceeding the account quotas for Amazon\nBedrock.”\n\n**OpenAI** lists both in one\n[error-code table](https://developers.openai.com/api/docs/guides/error-codes#api-errors):\n“503 - Model temporarily overloaded”, with the cause “The requested\nmodel is temporarily overloaded.”, and “429 - Rate limit reached for\nrequests”. The same table has another 429, “429 - Slow down”, with the\ncause “Your request rate increased too quickly.”, which the page says\n“can occur even when your traffic is within its requests-per-minute and\ntokens-per-minute limits”. On\n[Flex processing](https://developers.openai.com/api/docs/guides/flex-processing#resource-unavailable-errors),\nOpenAI's lower-cost tier with slower responses, the capacity refusal is\na 429 as well: “Flex processing may sometimes lack sufficient resources\nto handle your requests, resulting in a 429 Resource Unavailable error\ncode.”\n\n**Anthropic** answers capacity exhaustion with 529, as Amazon Bedrock\ndoes, listed on its\n[errors page](https://platform.claude.com/docs/en/api/errors#http-errors):\n“529 - overloaded_error: The API is temporarily overloaded.” The 429\nbeside it is the caller's, “Your organization has hit a rate limit”, an\nentry that also covers spend caps. Under the 529 entry the page adds a\nthird cause of a 429: “if your organization has a sharp increase in\nusage, you might see 429 errors because of acceleration limits on the\nAPI.”\n\n**Groq** documents three relevant codes across its\n[client](https://console.groq.com/docs/errors#client-error-codes) and\n[server](https://console.groq.com/docs/errors#server-error-codes) error\nlists. The 429 is the caller's: “Too many requests were sent in a given\ntimeframe. Implement request throttling and respect rate limits.” A 503\ncovers maintenance or overload: “The server is not ready to handle the request, often\ndue to maintenance or overload.” Groq\n[describes](https://console.groq.com/docs/flex-processing) its flex\ntier as “a service tier optimized for high-throughput workloads that\nprioritizes fast inference and can handle occasional request failures”.\nCapacity on that tier has a custom code, 498, on the\n[client list](https://console.groq.com/docs/errors#client-error-codes):\n“This is a custom status code we use and will\nreturn in the event that the flex tier is at capacity and the request\nwon't be processed.”\n\n**DeepInfra** stays on 429 for both capacity exhaustion and the\ncaller's breach, and its\n[rate-limits page](https://docs.deepinfra.com/account/rate-limits#rate-limit-errors)\nreads:\n“You may occasionally receive 429 errors when a model becomes very\nbusy, even if you’re under the limit. Auto-scaling will kick in\nshortly.”\n\n**Fireworks AI** maps capacity exhaustion differently on each\ndeployment type.\nThe top of its\n[serverless rate-limits page](https://docs.fireworks.ai/serverless/rate-limits)\nnames both codes, “When using Serverless, you may experience 429 Too\nMany Requests or 503 Service Overloaded.”, and ties the 429 to the\ncaller: “To avoid 429s, you need to stay below our adaptive rate\nlimits.” The page's\n[FAQ](https://docs.fireworks.ai/serverless/rate-limits#am-i-guaranteed-successful-responses-up-to-my-rate-limit)\nputs capacity exhaustion on the 503:\n“Staying within your rate limits does not guarantee that every request\nsucceeds. When a deployment is busy, your traffic can still be load\nshed, and those responses are 503 Service Overloaded.” On\n[dedicated and on-demand deployments](https://docs.fireworks.ai/guides/inference-error-codes#dedicated-and-on-demand-deployments),\nwhich the table groups as dedicated,\n“there are no account-level rate limits”, so a 429 there reports the\ndeployment's own capacity, described there as “a capacity signal, not\nquota enforcement”. The\n[account quotas page](https://docs.fireworks.ai/guides/quotas_usage/account-quotas#account-wide-request-limits)\nsays otherwise about account-level limits: “The 6,000 RPM cap applies\naccount-wide” (requests per minute) and “is not a separate\nserverless-only limit”, volume above it “is rejected (for example HTTP\n429)”, and\n[on those deployments](https://docs.fireworks.ai/guides/quotas_usage/account-quotas#on-demand-deployment-quotas)\n“Requests still count toward account-wide request limits”.\n\n**Google** gives different answers on its two APIs. The\n[Gemini API](https://ai.google.dev/gemini-api/docs/api-errors#api-error-codes),\nthe version reached with an API key at ai.google.dev, uses 503: “The\nservice is temporarily overloaded or down.” Its\n[troubleshooting page](https://ai.google.dev/gemini-api/docs/troubleshooting#retry-strategy)\nlists 429 and 503 together as retryable, “such as a 429\nRESOURCE_EXHAUSTED or 503 UNAVAILABLE”. On the Gemini API's\n[Flex inference](https://ai.google.dev/gemini-api/docs/flex-inference#error-codes)\ntier, the lower-priority option, the page lists both codes under “When\nFlex capacity is unavailable or the system is congested”. The two\nentries read “503 Service Unavailable: The system\nis currently at capacity.” and “429 Too Many Requests: Rate limits or\nresource exhaustion.” On the Gemini Enterprise Agent Platform side, the\n[API errors reference](https://docs.cloud.google.com/gemini-enterprise-agent-platform/reference/models/api-errors#api-errors)\nlists “API quota over the limit.” and “Server overload due to shared\nserver capacity.” among the causes under 429. It gives overload a\nsecond code, 500: “Server error due to overload or dependency failure.”\nThe platform's\n[429 page](https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/deploy/error-code-429)\nnames acceleration limits too: “You may encounter 429 errors because\nof acceleration limits if your project has a sharp increase in usage.”\nOn\nthe pay-as-you-go quota framework the 429 message is “Resource\nexhausted, please try again later.”, returned when “the\nnumber of your requests exceeds the capacity allocated to process\nrequests”. A capacity shortfall stays on the same code: “If you don't\nhave a Provisioned Throughput subscription and resources aren't\navailable to your application, then an error code 429 is returned.”\nBuying Provisioned Throughput, Google's reserved-capacity subscription,\nchanges the code for the shortfall while usage stays under the\npurchased amount: “errors that might otherwise be 429 are returned as\n5XX and count toward the SLA error rate”, the SLA being the\nservice-level agreement, while on the subscription's Single Zone\nvariant the same errors are “treated as 5XX but don't count”. Above the\npurchased amount, “the additional requests are processed on-demand as\npay-as-you-go”.\n\n## Comparing error rates across providers\n\nAn error count grouped by status code and compared across these\nproviders puts different events under the same label. At Amazon\nBedrock, Anthropic and Groq a 429 count holds only the caller's own\nbehaviour: quota or rate breaches, and at Anthropic a traffic ramp.\nElsewhere it also holds capacity refusals, at DeepInfra, on the Gemini\nEnterprise Agent Platform, on Fireworks AI's dedicated deployments, on\nOpenAI's Flex processing and on the Gemini API's Flex inference, and\non the Gemini Enterprise Agent Platform what it holds changes with what\nthe account has bought. An earlier essay,\n[The failure your dashboard can't see](https://percentes.ai/writing/2026/the-failure-your-dashboard-cannot-see/),\ntreats what this does to published reliability numbers.\n\n## Claims\n\n1. Seven providers document capacity exhaustion under five HTTP status codes, 429, 498, 500, 503 and 529, and under a 5XX class where capacity has been bought in advance.\n2. At four of the seven, DeepInfra, Google, Fireworks AI and OpenAI, the code that carries capacity exhaustion is also the code for the caller's own quota or rate breach.\n3. Amazon's documentation contradicts itself on the status that accompanies ThrottlingException: 429 on three of its pages, 400 on a fourth.\n\nAmazon's documentation disagrees with itself. The User Guide's\n[troubleshooting page](https://docs.aws.amazon.com/bedrock/latest/userguide/troubleshooting-api-error-codes.html#ts-throttling-exception)\npairs Amazon's ThrottlingException with 429. The API Reference's\n[CommonErrors page](https://docs.aws.amazon.com/bedrock/latest/APIReference/CommonErrors.html#CommonErrors-ThrottlingException)\npairs the same exception with 400 and describes it as “Your request\nrate is too high. The AWS SDKs automatically retry requests that\nreceive this exception.” That page calls itself a generic list, “Not\nall services return all error types listed here.”, and continues, “For\nerrors specific to an API action for this service, see the topic for\nthat API action.” The pages for two such actions,\n[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)\nand\n[Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html),\nboth pair ThrottlingException with 429.\n\nFireworks AI's pages disagree on dedicated deployments. The\n[error-codes page](https://docs.fireworks.ai/guides/inference-error-codes#dedicated-and-on-demand-deployments)\nsays there are no account-level rate limits there; the\n[account quotas page](https://docs.fireworks.ai/guides/quotas_usage/account-quotas#account-wide-request-limits)\nsays the request cap is account-wide and that requests on those\ndeployments count toward it, in the words quoted above. The table's\ncapacity column follows the error-codes page.\n\nEvery quotation here and the page it came from are in a\n[CSV beside this essay](https://percentes.ai/assets/data/status-codes-sources.csv).", "url": "https://wpnews.pro/news/one-event-five-status-codes-and-a-class", "canonical_source": "https://percentes.ai/writing/2026/one-event-five-status-codes-and-a-class/", "published_at": "2026-09-13 18:31:28+00:00", "updated_at": "2026-09-13 18:51:35.360047+00:00", "lang": "en", "topics": ["ai-infrastructure", "ai-products", "developer-tools"], "entities": ["Amazon Bedrock", "OpenAI", "Anthropic", "Groq", "DeepInfra", "Fireworks AI", "Google Gemini Enterprise Agent Platform", "Vertex AI"], "alternates": {"html": "https://wpnews.pro/news/one-event-five-status-codes-and-a-class", "markdown": "https://wpnews.pro/news/one-event-five-status-codes-and-a-class.md", "text": "https://wpnews.pro/news/one-event-five-status-codes-and-a-class.txt", "jsonld": "https://wpnews.pro/news/one-event-five-status-codes-and-a-class.jsonld"}}