Incorrect "You uploaded an unsupported image" error

Starting on June 11th, 2025, at roughly 6:15 PM PT, we started receiving a 400 with the message “You uploaded an unsupported image. Please make sure your image is valid.” for chat completion requests with jpeg images passed via public URL. The model is 4o. We have been using this same query for months without issue, and the images that are resulting in this error seem to be valid jpeg images and are not particularly large (< 1mb) - nothing has changed on our end in how these images are produced.

I have opened a support ticket, but I’m curious if anyone has any suggestions about how to determine the exact problem with these images or any other suggestions in how to get this working again.

The percentage of successful requests seems to have dropped, so I’m wondering if this is related to a rollout.

Note there is currently an open incident for the API with images, but it is titled “Increased error rates on image generation in ChatGPT and API”. The issue we are having is not with image generation, so I don’t believe this is related.

Any help is apprecated!

Thanks,
Jacob

8 Likes

Same issue on my side. Uploading 4 images with total size smaller than 3mb. Model does not matter. tried 40 and 4.1. This was working for months and since 1 or 2 days it stop working.

{
“error”: {
“message”: “You uploaded an unsupported image. Please make sure your image is valid.”,
“type”: “invalid_request_error”,
“param”: null,
“code”: “image_parse_error”
}
}

also commenting to say same issue for me. also tried changing file type to png and same issue. seems arbitrary in which images will work and which won’t. aka, one image works, but then won’t work when i take a screenshot of that image. however, a different screenshot will work.

Experiencing this issue as well

@ftb, @Michael_Martin, @pw_ai_tools, if you have not already, opening a support ticket by following the instructions here might help get some attention on this more quickly. This is a customer-impacting production issue for us, and I expect others. https://help.openai.com/en/?q=contact.

thanks have also left a ticket

Hi everyone,

Started seeing the same issue at 2025-06-12T00:46:21.37Z (June 11th, 2025, 5:46 PM PT). The error is currently representing around 10% of the calls we are making to the Completions API.

It seems to be the exact problem, as the images we are sending are mostly <500kb, all JPEG, and all valid, opening up perfectly on multiple devices. I tested it out through the Completions API both through the image url (which is what we use) and also sending the images as base 64 data, both resulted in the same error. The error persists with those images, it simply doesn’t work.

A pattern I noticed after opening some images and testing manually is they all seem to be digital (i.e not camera pictures). Did not go through all of them, but the ones I opened were that way. Tried spotting something in EXIF/Metadata comparing the failing images to succeding images but did not see any differences.

Already reported this today through support, got escalated to a human, but they kind of dismissed it. Linked this post and other posts on Reddit reporting a similiar problem on ChatGPT there. For everyone affected too, please leave your reports here and contact support.

Thanks,
Everton.

– Update –

Implemented a workaround that made the failing images work. Of course this isn’t permanent and can’t be, as I’m having to download images on my side, process them, and send them in Base64 to OpenAI. But it does work, and our infra made it easy to implement. If anyone has a similar config, used Python PIL basically with this:

async def sanitize_image_to_b64(
    url: str,
    *,
    png: bool = False,
    client: httpx.AsyncClient | None = None,
) -> str:
    """
    Downloads → re-encodes → returns a data-URL.
       • keeps everything in RAM (BytesIO)
       • breaks the repetitive-byte pattern that triggers `image_parse_error`
       • works inside any asyncio service
    """
    # ---- networking -------------------------------------------------------
    own_client = client is None
    if own_client:
        client = httpx.AsyncClient(timeout=10)
    try:
        resp = await client.get(url)
        resp.raise_for_status()
    finally:
        if own_client:
            await client.aclose()

    # ---- Pillow processing ------------------------------------------------
    buf = BytesIO(resp.content)
    img = Image.open(buf)

    # normalise orientation + strip alpha
    img = ImageOps.exif_transpose(img).convert("RGB")         #  [oai_citation:0‡pillow.readthedocs.io](https://pillow.readthedocs.io/en/stable/_modules/PIL/ImageOps.html?utm_source=chatgpt.com)

    # re-encode in memory
    out = BytesIO()
    if png:
        img.save(out, format="PNG", optimize=True)            # lossless
        mime = "image/png"
    else:
        img.save(out, format="JPEG", quality=90, optimize=True)  #  [oai_citation:1‡pillow.readthedocs.io](https://pillow.readthedocs.io/en/stable/handbook/image-file-formats.html?utm_source=chatgpt.com)
        mime = "image/jpeg"

    # base-64 encode for the API
    b64 = base64.b64encode(out.getvalue()).decode()
    return f"data:{mime};base64,{b64}"

– Update 2 –
The workaround mentioned above only solved it for a portion of failing images. The only workaround that’s failproof right now was to set up another LLM provider when requests to OpenAI fail.

Also experience the same issue since 1 day ago, and it’s been working fine for the past few months. What we are experiencing is that some images keep working for us, but there are some that just keep failing. And after comparing those images, we don’t see a clear difference to come to a conclusion.

so you were using image urls and they didn’t work but once you send base64 they do? That’s interesting. We were using base64 but it didn’t work for us, so we tried to use image urls and also did not work.

Base64 didn’t work either, just by converting the image to base64. The fix I shared, which seems to have solved some of the issues, but not all, doesn’t only encode the images to base 64, it also does some EXIF stripping and converts the color profile, as well as compressing the image again.

Right now the only failproof workaround was to set up a fallback to Anthropic’s Claude on failing requests :sweat_smile:

We’re also experiencing exactly the same issue in our production environment (>1k images/hour).

No problems for months. Our current model gpt-4.1-mini also had no issue for the last few weeks.

It’s strange because the BadRequestError: 400 You uploaded an unsupported image. Please make sure your image is valid. seems to occur randomly. Roughly 60% of images do not result in an error. We’re using base64 strings because URLs have always been extremely inconsistent (esp. for Firebase storage URLs).

[As an aside]
We’ve already had a Google genai/Vertex fallback in place - the frequency and severity of issues with OpenAI APIs actually make it very hard for us to continue to use OpenAI.

2 Likes

Okay, just tested three images that were not working, and now they are! Do you guys have any updates on your side and can test it out too?

It’s the randomness that makes this so weird. We’ve tested failed images and they seem to work fine. When we test the same images a few hours later some randomly fail again.

1 Like

I also encountered the same issue since June 11th.

I have a re-try logic implemented where it’ll retry the same request up to 5 times or until it succeeds. What’s interesting is that, the first 2 retries failed with the same error message, but on the third try it succeeded, and the images are exactly the same. Requests are only a few seconds apart.

2 Likes

Haven’t had time to retest, but as of a few hours ago, a customer reported an issue with uploaded images, and this seems to be the cause.

This seems to correlate with known API issues starting June 11th regarding image input rejection and unexpected model behavior (ref: Jacob’s case via community report). However, my case demonstrates additional narrative misalignment and fictional hallucination upon image upload through the UI, not API.”

Did some test today (June 13th) and now it works again. same code, prompt and images (taken by phone and converted to base64), model gpt-4o-2024-11-20. did about 5 tests and all returned valid.

would be great to get a feedback from the devs, what the issue was.

We have also stopped getting this error. The last one we saw was a bit after 8pm PT on June 12th.

2 Likes

Hello! Thanks for reporting this—your upload errors were part of the image-generation incident noted on our status page on 12 June, and service has since been restored.

1 Like