thinkhard.SI

Blog Batch processing

Batch processing: the half-price discount most teams ignore.

Anthropic, OpenAI and Google will all run your requests at half price if you let them answer within a day instead of within seconds. Most companies send everything through the live path anyway, including work nobody reads until tomorrow. Here are the numbers for five ordinary back-office jobs, and the traps to plan for before you switch.

Cost, an 8-minute readAll posts

If a person is not waiting for the answer, send the request as a batch. Anthropic, OpenAI and Google all list batch API prices at half their standard rates, in return for results that can take up to a day. For a hypothetical company running five common back-office jobs on Claude Sonnet 5.5, that halves a $1,079 monthly bill to $539. The saving is modest at that size. The larger effects are that half price pays for a stronger model on the same budget, and that a one-off backfill of historical data costs half as much on the first day.

What a batch is

Instead of sending requests one at a time and waiting for each reply, you upload a file of requests, each with your own ID, and collect a file of results later. The provider can fit them in around its live traffic, which is the usual explanation for the discount. The terms differ by provider:

Batch terms from each provider’s documentation, October 2026.
ProviderPriceHow long it takesSize of one batchResults kept
Anthropic50% of standardMost within 1 hour; requests not done in 24 hours expire100,000 requests or 256 MB29 days
OpenAI50% of standard24-hour window, often sooner50,000 requests, 200 MB fileOutput file deleted 30 days after completion
Google Gemini50% of standardTarget 24 hours; jobs pending over 48 hours expire20 MB inline, 2 GB as a file6 weeks

Sources: Anthropic batch processing, OpenAI Batch API, Gemini Batch API. OpenAI also notes that batch work draws on its own rate limit pool, so a big batch does not slow your live traffic.

Which jobs can wait

One question sorts every AI job in a company: is a person waiting for this answer right now? Chat replies, search answers and anything inside a screen someone is looking at fail the test. Most of the rest passes, and there is usually more of it than teams expect:

  • Summaries, tags and quality scores on closed support tickets.
  • Summaries of recorded sales calls and meetings, read the next morning.
  • Fields extracted from invoices, contracts and forms into a system of record.
  • Product descriptions, translations and SEO text for a catalog.
  • Prompt test runs, where hundreds of cases are scored at once. An eval nobody watches live is the easiest first batch job there is.
  • Backfills: running a new prompt across years of old records.

The jobs that fail are the ones where each step needs the last one’s answer. A three-step pipeline run as three batches could, at worst, take three days. Run those live, or run each step as a batch overnight and accept the delay.

Five jobs, worked

Here is a hypothetical online retailer’s back office, priced on Claude Sonnet 5.5 at $2 per million input tokens and $10 per million output tokens standard, $1 and $5 at batch, list prices checked October 20, 2026:

  • Ticket summaries and tags: 3,000 closed tickets a day, 2,400 tokens in (transcript and instructions), 300 out.
  • Prompt test runs: 300 cases, four prompt versions a month, five repeats each, plus a judge call per answer: 12,000 calls, 3,000 in, 500 out.
  • Sales call summaries: 100 recorded calls a day, 12,000 in, 800 out.
  • Invoice fields to JSON: 6,000 invoices a month, 4,000 in, 600 out.
  • Product description refresh: 24,000 products a quarter, so 8,000 a month, 1,800 in, 450 out.
Ticket summaries, standard   (2,400 × $2 + 300 × $10) ÷ 1,000,000 = $0.0078 a ticket
                             × 90,000 tickets a month            = $702
Ticket summaries, batch      (2,400 × $1 + 300 × $5)  ÷ 1,000,000 = $0.0039 a ticket
                             × 90,000                            = $351
Five back-office jobs, monthly cost at standard and batch prices
  • Batch price
  • Extra you pay at standard price
  1. Ticket summaries and tags$702
  2. Prompt test runs$132
  3. Sales call summaries$96.00
  4. Invoice fields to JSON$84.00
  5. Product description refresh$64.80
ItemBatch priceExtra you pay at standard price
Ticket summaries and tags$351$351
Prompt test runs$66.00$66.00
Sales call summaries$48.00$48.00
Invoice fields to JSON$42.00$42.00
Product description refresh$32.40$32.40

Hypothetical company on Claude Sonnet 5.5, list prices checked October 20, 2026. The full bar is the standard monthly cost; the first segment is what batch charges. Total $1,078.80 standard, $539.40 batch.

The saving is $539.40 a month, or $6,473 a year. Weigh that against the work: a batch job needs a queue, an ID on every request, polling, retries and somewhere to put the results. For a team that already runs scheduled jobs, that is a few days. For a team whose only AI code is a chat widget, it may not be worth it at this volume, and the next two sections are the better reasons to bother.

Half price buys the next model up

The discount is a straight 50% on every model all three providers list, which lines up the price lists in a useful way. Claude Opus 5.5 at batch prices is $2 in and $10 out per million tokens, the same as Claude Sonnet 5.5 at standard prices. GPT-6 Astra at batch, $5 and $25, costs half its live rate. So if a back-office job fails your tests on a mid-tier model and passes on a top one, batch lets you move up without changing the budget.

It works in the other direction too, and that is where the large numbers are:

Ticket summaries and tags at batch prices, by model
  1. Claude Opus 5.5$702
  2. Claude Sonnet 5.5$351
  3. GPT-6.1 Sol$351
  4. Gemini 3.8 Flash$132
  5. Claude Haiku 5.5$17.55
  6. GPT-6 Luna$17.55

Claude Opus 5.5 at batch prices costs the same as Claude Sonnet 5.5 at standard prices ($702). Gemini 3.8 Flash doubles in price on January 1, 2027. Monthly cost of 90,000 calls with about 2,400 tokens in and 300 out each, at batch prices where offered. List prices checked October 20, 2026; your bill may differ.

Summaries and tags on Claude Haiku 5.5 or GPT-6 Luna at batch prices cost $17.55 a month, against $702 for Sonnet at standard prices: a factor of 40. Batch is the guaranteed half. Model choice is the bigger lever, and it is only real if the small model passes your tests on real tickets. The cheapest model that passes covers how to find out.

Backfills pay on day one

Batch pays for itself fastest on one-off jobs. Say you write a better tagging prompt and want it run across two years of closed tickets so reports compare like with like. That is 2.16 million tickets at the sizes above: $16,848 on Sonnet at standard prices, $8,424 at batch. Split it into 22 batches of up to 100,000 on Anthropic, or 44 of up to 50,000 on OpenAI, submit them over a weekend, and check a sample of the results before you load them anywhere.

Backfills are also where a quality check matters most, because a bad prompt applied two million times is a large, quiet mess. Run the new prompt on a few hundred old tickets first and compare.

When minutes are fine but hours are not

Some jobs can wait a few minutes but not until tomorrow: a report someone asked for this morning, a document that should be processed before lunch. OpenAI and Google both offer a Flex tier for these: ordinary requests at batch prices, in exchange for slower answers. OpenAI also warns of occasional “resource unavailable” errors when capacity is short. GPT-6.1 Sol on Flex is $1 in and $5 out, the batch rate, per OpenAI’s pricing page; Gemini 3.8 Flash on Flex is $0.375 and $1.875 on Google’s. Your code needs a long timeout and a retry, and nothing else changes.

DeepSeek takes a third route: its API is half price outside weekday peak hours (01–04 and 06–10 UTC when we checked; the cost guide lists conditions like this one), so a job scheduled for the right time of day gets the discount with no batch file at all.

What goes wrong

  • Some requests do not come back. A batch can finish with a few requests errored or expired. Anthropic does not bill expired requests; OpenAI bills the completed ones and lists the rest in an error file. Either way, your job has to find the gaps by ID and resubmit them.
  • A retry can double the bill. Google’s docs warn that creating a batch is not idempotent: send the same job twice after a timeout and you have two jobs, both billed. Record every submission under your own job ID before you send it.
  • Results expire. Anthropic keeps results for 29 days, OpenAI deletes the output file 30 days after the batch completes, and Google keeps results for six weeks. A job that submits but never downloads loses its output and keeps its invoice.
  • Your data sits on their servers until then. Batch inputs and outputs are stored by the provider until you collect them. Anthropic lets you delete a batch once it has finished. Check the timing against your own retention rules.
  • Caching becomes best effort. Anthropic’s caching and batch discounts stack, but because batch requests run in any order, it reports cache hit rates anywhere from 30% to 98%, and suggests its one-hour cache for batches that share a long prefix.
  • Turnaround varies. Anthropic says most batches finish within an hour, and also warns that under heavy demand more requests expire at 24 hours. Do not promise anyone a deadline until you have watched your own jobs for a couple of weeks.

Moving a job over

Moving a back-office job to batch
  1. 1List every AI job and who reads the outputNote when they read it. Anything read hours later is a candidate.
  2. 2Pick one job with a reader who is not waitingTicket summaries and test runs are the easiest first moves.
  3. 3Give every request your own IDTie it to the ticket, invoice or product it belongs to, so results can be matched and gaps found.
  4. 4Submit, poll and download the same dayStore the job ID before submitting so a retry never creates a duplicate.
  5. 5Resubmit errored and expired requestsCollect them by ID and send them in the next batch.
  6. 6Watch turnaround for two weeksThen decide what deadline you can promise the people who use the output.

To price your own jobs, paste a real prompt into the token and cost calculator, set the calls per day, and halve the result for the providers above. It counts tokens per model family, prices every major model and needs no API key. To see whether a cheaper model can do the job before you batch it, try a real ticket on a small, a mid and a top model side by side in Model Compare, then confirm on your full set of cases in Prompt Tester.

Key takeaways

  • Anthropic, OpenAI and Google all charge 50% of standard prices for batch requests that can wait up to a day.
  • Ask of every job whether a person is waiting for the answer. If not, it is a batch candidate.
  • Five hypothetical back-office jobs on Claude Sonnet 5.5 drop from $1,078.80 to $539.40 a month.
  • Claude Opus 5.5 at batch costs what Sonnet 5.5 costs live, so batch can buy a stronger model on the same budget.
  • Backfills of historical data are where batch pays on the first day: $8,424 instead of $16,848 in the example.
  • Plan for expired requests, duplicate submissions, results that expire and caching that becomes best effort.

Questions

How much does the OpenAI Batch API cost?

Half the standard price of the same model, in return for results within a 24-hour window, often sooner. GPT-6.1 Sol lists at $2 per million input tokens and $10 per million output tokens standard, so $1 and $5 at batch. Batch work also draws on its own rate limit pool, so a big job does not slow your live traffic. Standard prices for every model are on the LLM price comparison.

Can you use prompt caching with a batch API?

On Claude, yes: Anthropic says its caching and batch discounts stack. Because batch requests run in any order, it reports cache hit rates anywhere from 30% to 98%, and suggests its one-hour cache when many requests share a long prefix. Put the shared text first and the per-request text last. The AI cost calculator shows a job’s monthly cost with caching and batch discounts.

Is a batch API worth setting up for a small team?

Only if the saving beats the work. A batch job needs a queue, an ID on every request, polling, retries and somewhere to put the results, which takes a few days for a team that already runs scheduled jobs. Add up what your jobs that nobody waits on cost today, halve it, and compare. Prompt test runs make the easiest first job, because nobody watches them live.