OpenAI Batch API failing with “Cannot find file”: what we know so far
On September 1, our team at Vixid Labs started seeing failures in an OpenAI Batch API workflow that had been running normally.
The Batch was failing with:
Cannot find file file-XXXX, or organization org-XXXX does not have access to it.
A few of our clients had reported similar failures over the previous several days, so we traced the request flow, checked reports from other developers, and reviewed OpenAI's updates.
What we observed
The failure happens during Batch validation.
Our application creates a .jsonl file, uploads it to OpenAI, receives a file_id, and creates a Batch using that file. All of those steps succeed.
The Batch then moves to:
validating
and a few moments later changes to:
failed
No requests are processed. One affected Batch reported:
0/500 requests completed
The error was:
Cannot find file file-XXXX, or organization org-XXXX does not have access to it.
So the Files API accepts the upload and returns a valid file ID, but the Batch service later fails to access that file during validation.
The initial logs made this harder to diagnose because they only showed:
status=failed
error_file_id=None
The useful error was in the Batch errors field. Once we logged that object, the file-access message appeared.
If an integration only records the Batch status and error_file_id, this failure is easy to misread as a generic validation problem.
Reports from other developers
Similar reports started appearing in the OpenAI Developer Community in late August.
The reported sequence is consistent: the file upload succeeds, the file reaches processed, Batch creation succeeds, validation fails, and zero requests are processed.
Some developers reported that the same uploaded file could still be retrieved through the Files API after Batch rejected it. The issue has also been reported across Batch jobs using Responses, Chat Completions, Embeddings, and other endpoints.
On August 28, an OpenAI representative confirmed in the Developer Community that they could reproduce the issue and had escalated it internally. OpenAI later said a targeted fix had been applied to some affected organizations.
On August 31, developers were asked to retry Batch jobs in the original project and provide new Batch IDs if the problem continued. Some users still reported the same error afterward.
As of September 1, OpenAI had not published a date for a complete fix across all affected organizations.
What we tried
Uploading a fresh JSONL file does not reliably fix the problem. Waiting after upload does not reliably fix it either; the file can already be marked as processed and still fail during Batch validation.
Creating another API key inside the same existing project has also failed for some affected users.
The behaviour has been reproduced through both SDKs and direct API requests, so there is no clear indication that it is specific to a particular client library.
One workaround reported by developers is to create an entirely new OpenAI Project, issue a new API key for that project, and retry the Batch there. That restored Batch processing for at least some affected users. We would treat this as a temporary workaround, not a permanent migration strategy.
What to check
If a Batch ends with failed, inspect the full response, especially:
errors.data
If it contains:
Cannot find file ... or organization ... does not have access to it
and the Batch processed zero requests, it is likely the same issue.
Keep the failed Batch ID together with the OpenAI Project ID, Organization ID, Batch creation time, and full error message. OpenAI has been using Batch IDs to investigate affected organizations, so those details are worth sending to Support.
For an urgent workload, there are two practical workarounds.
A small Batch in a new OpenAI Project is worth testing first. Generate a new API key for that project and send one or two requests. If that succeeds, you can decide whether temporarily moving the workload is acceptable.
The other option is to bypass Batch API and send requests directly to the Responses API. For small jobs that is straightforward. Larger workloads will need a queue, controlled concurrency, rate-limit handling, retries, and saved progress, but the work can continue without waiting for Batch validation to recover.
Logging the actual Batch error
If your integration currently reports only:
status=failed
and:
error_file_id=None
log the Batch errors object as well:
errors = batch.get("errors")
print(json.dumps(errors, ensure_ascii=False, indent=2))
That was the change that exposed the actual failure for us.
If a previously working Batch integration suddenly starts failing at validating with the file-access error above, keep the failed batch_id and send it to OpenAI Support. For urgent work, regular API requests are the safest fallback we found. Testing the same Batch from a fresh OpenAI Project is also worth trying as a temporary workaround.