A compliance team must summarise 60,000 archived support transcripts. Nobody waits on the result, the team has until the end of the week, and the stated requirement is the lowest cost per transcript. A developer proposes firing 60,000 concurrent realtime requests to finish sooner. Which approach best satisfies the stated requirement?
- AKeep the realtime requests but raise concurrency further, since finishing the job sooner is what reduces the total cost of the run.
- BKeep the realtime requests and lower max_tokens sharply on each one, so that each summary is cheaper to produce than it would otherwise be.
- CSubmit the transcripts through the Message Batches API, giving each request its own custom_id, and collect the results when the batch completes. Correct
- DKeep the realtime requests and enable prompt caching on the transcript body of each request, so that repeated content is charged at the cached rate.
Why A is wrong: It is tempting because wall-clock time and spend feel linked, but concurrency changes only how fast the same per-token charges accrue, so cost per transcript is unchanged.
Why B is wrong: It looks like a cost lever, but max_tokens is an upper bound that truncates a long answer rather than a discount, so it damages summaries without addressing the rate paid.
Why C is correct: Correct: the workload is large, uniform and latency tolerant, which is exactly the shape the batch path exists for, and it is charged at a lower rate than equivalent realtime calls.
Why D is wrong: Caching is a real cost control, but it pays off on a stable shared prefix, and each transcript here is unique content that no later request reuses.