Batch API shows “2000 completed, 0 failed” — but some requests return status_code 0

Hello,

I experienced something odd while using the Batch API for embeddings.

What happened:

I ran multiple batches of 2000 embedding requests.

When I monitor the API platform console, I see:

2000 completed, 0 failed of 2000 total requests

…but the generated error file actually contained several entries like this:

{
  "response": {
    "status_code": 0,
    "request_id": "",
    "body": {}
  },
  "error": null
}

For example, I only received 1,994 embeddings even though the dashboard showed everything as completed successfully. The 6 failed(?) ones don’t appear in the success file, only in the error file. The job summary still says “0 failed,” which is misleading. Also, not really sure what caused status code of 0.

It would be really helpful if:

  1. status_code: 0 requests were counted as failed in the batch summary.

  2. The docs clarified what this status actually means (timeout? internal retry exhaustion?).

  3. Optionally, the platform retried these automatically.

Anyone else seeing the same behavior? Would love insight from the OpenAI team on whether this is expected or being tracked.

I got similar behavior using chat completions today, and I’m still trying to debug it.

This is my batch information from the API Console:

Created at: Nov 1, 2025, 12:17 AM
Endpoint: /v1/chat/completions
Completion window: 24h
Completion time: 18 minutes
Request counts: 200 completed, 0 failed of 200 total requests

 Input: file-Un*********** 
Output: batch_69**********_output.jsonl (256Kb and 199 lines)
 Error: batch_69**********_error.jsonl  (187 bytes and 1 line)

I requested 200 completions, and it shows 200 completed with no failures.
Nevertheless, there is 199 results in my output file and one result with an error in my error file, with status_code=0:


{
  “id”: “batch_req_69****************”, 
  “custom_id”: “9a5228e1ea26f46aca379df3389037fdc63334f3”, 
  “response”: {“status_code”: 0, “request_id”: “”, “body”: {}}, 
  “error”: null
}