In one developer’s reported 30-day run of Anthropic Message Batches, 112 of 1,842 requests did not produce usable results. That is an account of a particular workflow—not an independently verified Anthropic failure rate. The key lesson is that a batch ending does not mean every request succeeded: inspect each result, match it to its input, and reconcile every request to a usable outcome or an explicit retry or failure state.
What happened in the reported run?
In a DEV Community post published September 20, 2026, jidonglab described running 1,842 scoring requests across 96 batches over 30 days. The author reported 1,730 usable requests and 112 unusable outcomes. The post’s stated breakdown was 71 errored results, 24 expired results, and 17 responses marked successful by the API but truncated at the output limit.
As an Amazon Associate I earn from qualifying purchases.
For those 17 responses, the author reported stop_reason: "max_tokens". Their application expected parseable JSON; its parser rejected the truncated output, leaving a database score null. The API’s success label therefore did not mean the response met that application’s requirements.
The author also reported that the 71 errors comprised 52 overloaded_error results, 14 invalid_request_error results, and five generic api_error results. These are the post author’s counts for that run, not independently audited figures or an Anthropic-wide service metric. The source does not independently verify the run’s logs, so its figures should be read as reported rather than as a measured reliability rate.
#1 Best Overall
Does an ended batch mean its requests succeeded?
No. Anthropic’s Batch processing documentation distinguishes the batch’s processing status from the outcome of each request. A batch can end while its results include successes, errors, cancellations, or expirations. Read and handle the individual JSONL result lines; batch status alone is not a success check.
As the post author put it, processing_status: "ended" does not mean success: inspect request counts and each line’s result.type. Anthropic likewise says to use meaningful custom_id values to match results to requests because output order is not guaranteed.
Rank #2
Why can results go missing or become misattributed?
In jidonglab’s account, the incident was not only about provider outcomes. Their consumer treated an ended batch as if all work had succeeded, accessed message fields without handling every result type, paired result lines with submission order, and logged JSON parsing failures too quietly. Since result order is not guaranteed—and some requests can fail or expire—pairing by position can drop or misattribute records.
Free tools Windows power users keep installed
One-click scans. No signup required.
These are the author’s description of their own implementation, not findings about every Anthropic client. They point to a general design requirement: maintain identity and state per request, rather than assuming a completed batch is a complete, ordered set of successful outputs.
How to make a batch consumer resilient
- Persist the work before submission. Store each request and its unique
custom_idso every intended job has a durable record to reconcile against. - Track batch state, but do not stop there. Monitor processing status and request counts. Once results are available, process every JSONL line and branch on its
result.type:succeeded,errored,canceled, orexpired. - Join results by ID, never by line position. Use each returned
custom_idto update the corresponding submitted request. Do not infer a result’s identity from its order in the output. - Validate usable output. A successful result still needs application-level checks. For structured output, verify that the response is complete and parses as expected; handle truncation, such as
stop_reason: "max_tokens", as unusable rather than silently accepting it. - Reconcile every submitted ID. Compare submitted IDs with IDs resolved to an application state. Retry eligible failures deliberately, and send work that cannot be resolved to an explicit failed or dead-letter state instead of leaving records silently null.
- Keep retries and expiration in view. Anthropic documents a 24-hour batch-processing expiry window and recommends regular status monitoring and retry logic for failed requests. Build a recovery path for work that expires or fails rather than assuming it will eventually complete.
- Test request shapes before batching. Anthropic recommends validating request formats through the synchronous Messages API before moving them into batches.
When is batch processing a poor fit?
Batch processing is asynchronous, and Anthropic’s documented expiry window is 24 hours. A workflow that cannot tolerate asynchronous completion or that window may need a different request pattern or a fallback. Jidonglab said immediate post-interview reports were a poor fit for their batch workflow, while nightly portfolio scoring fit better; that is context from one implementation, not a universal performance guarantee.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How long are results available?
Anthropic’s documentation says batch results remain available for 29 days after batch creation and are no longer downloadable after that. Persist results and reconcile unresolved work within that retention period; do not treat the results endpoint as permanent storage.
Quick Recap
Best Value
Rank #4
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →

