Subject: gpt-image-2-codex returning 200 OK with Rate Limit Error for the vast majority of image requests due to shared 4000 RPM limit
Description:
There is a critical issue affecting Codex accounts (including Plus and Pro 20 tiers) when attempting to generate images using image-2 via Codex. Since yesterday, the vast majority of image generation requests have been failing due to a continuous rate limit error.
The API returns an HTTP status code 200 OK, but the response body contains a rate limit error message indicating that the input-images per min limit has been fully exhausted (4000/4000 used). It appears that the 4000 RPM limit is being globally shared or incorrectly pooled across user accounts in the organization. This causes a persistent bottleneck, blocking most users from successfully generating images.
Error Message / Log Output:
Rate limit reached for gpt-image-2-codex (for limit gpt-image) in organization org-BOvpEHVcDPTe8h4lZnwMO5Ly on input-images per min: Limit 4000, Used 4000, Requested 1. Please try again in 15ms. Visit [https://platform.openai.com/account/rate-limits](https://platform.openai.com/account/rate-limits) to learn more.
Environment / Context:
-
Affected Service/Model:
gpt-image-2-codex(image-2via Codex) -
Account Tiers Affected: Multiple tiers (including Plus and Pro 20)
-
Organization ID mentioned in error:
org-BOvpEHVcDPTe8h4lZnwMO5Ly -
HTTP Status Code: 200 OK (Expected a 429 status code for rate limits, but it returns 200 with the error payload instead)
-
Time of Occurrence: Ongoing since yesterday
Steps to Reproduce:
-
Use a Codex account (Plus or Pro 20) to initiate an image generation request using
image-2. -
Observe the network response.
-
For most attempts, the request completes with an HTTP 200 status but fails to generate the image, returning the “Rate limit reached… Limit 4000, Used 4000” error message.
Expected Behavior:
-
Individual user limits should be isolated, or the organization-wide limit should not be constantly maxed out at 4000/4000 by shared traffic.
-
If a rate limit is actually triggered, the API should return a proper HTTP 429 Too Many Requests status code instead of an HTTP 200 OK.