Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

In a developer’s reported 30-day run, 112 of 1,842 Anthropic Message Batch requests were unusable—but that is one workflow’s result, not an Anthropic-wide failure rate. The reported outcomes included errors, expired requests and responses the API marked successful but that the developer’s application could not use. The key lesson: an ended batch is not proof that every request succeeded. Process and reconcile each result individually.

What happened in the reported run?

In a DEV Community post published September 20, 2026, jidonglab said a 30-day run covered 1,842 scoring requests across 96 batches. The author described 1,730 requests as usable and 112 as unusable. These are the author’s figures; the run’s logs have not been independently audited, and the post does not resolve every discrepancy between individual totals and rounded percentages.

Reported outcome Count What the author said happened
Errored 71 Included 52 overloaded_error, 14 invalid_request_error and five generic api_error results.
Expired 24 The requests expired before producing usable results.
Succeeded but truncated 17 The API reported success with stop_reason: "max_tokens"; the author’s parser rejected the truncated JSON, leaving the database score null.

The three categories add up to the reported 112 unusable outcomes. The author attributed those failures to a combination of API outcomes and consumer-side handling, rather than to a single cause. This account does not establish a general service reliability rate.

Read jidonglab’s incident account on DEV Community.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does an ended batch mean every request succeeded?

No. Anthropic documents that a batch can finish while its individual requests have different outcomes. Each result has its own type: succeeded, errored, canceled or expired. A batch-level status such as processing_status: "ended" is therefore not a per-request success signal. Inspect the request counts and every result line.

Anthropic returns results as JSONL, and their order is not guaranteed to match submission order. The documentation advises using meaningful, unique custom_id values to match each result with its request. As Anthropic puts it: “Use meaningful custom_id values to easily match results with requests, since order is not guaranteed.”

Anthropic’s Message Batches documentation describes result types, ID matching and batch behavior.

How did the consumer lose track of work?

Jidonglab said their implementation treated the batch’s ended state as the main completion check, accessed message fields without handling every result type, paired returned lines with submission order, and logged JSON parsing failures too quietly. In the author’s account, unordered results and omitted or failed items could then cause dropped or misattributed records.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The 17 truncated responses illustrate a separate gap: an API-level succeeded result may still be unusable to an application. The author’s parser required complete JSON, so a response ending because it reached the token limit did not yield a score. Applications need to validate the content they depend on, not just the API result type.

How to make a batch consumer reliable

  1. Persist submissions and IDs. Store each submitted request with its unique custom_id and the application record it represents. Do not rely on output position to recover that mapping.
  2. Monitor batch progress and expiry. Anthropic says processing that does not complete within 24 hours expires. Poll or otherwise monitor status and make expiry an explicit state in your workflow.
  3. Read every JSONL result. Branch on result.type for each line. Handle succeeded, errored, canceled and expired explicitly; do not assume every item has a message payload.
  4. Validate successful output. Check for truncation and parse or schema failures before marking an application task complete. Record validation failures as unresolved work rather than silently leaving a null or incomplete result.
  5. Reconcile submitted IDs against resolved IDs. Compare the set of submitted custom_id values with those that reached a terminal application state. Retry eligible failures or move them to a dead-letter path for investigation.
  6. Test request shapes before batching. Anthropic recommends trying request shapes through the synchronous Messages API first, using manageable batch sizes, and implementing retry logic for failed requests.

The ID reconciliation and dead-letter approach is an implementation recommendation, not a guarantee supplied by the API. Its purpose is to make missing, duplicated or unusable work visible instead of allowing it to disappear behind a batch-level status.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

When is batching a poor fit?

Batch processing is asynchronous and has a documented 24-hour expiry window. If a result must be available immediately, or cannot tolerate that window, synchronous Messages API requests may fit better. In the DEV post, the author said immediate post-interview reports were a poor fit for their batch workflow while nightly portfolio scoring fit better. That reflects their workload, not a universal performance rule.

Anthropic says batch results remain available for 29 days after batch creation; after that, they are no longer downloadable. Persist results and the state your application needs rather than treating the results endpoint as permanent storage.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.