Files API: upload once, reference many
The Files API lets you upload PDFs, images, and other documents once, get back a file_id, and reference it from messages.create() instead of re-uploading bytes every call. Useful for long-lived analysis sessions over the same document set.
Batch API: 50% off, 24-hour SLA
The Batch API runs a list of independent requests asynchronously. The trade: 24-hour completion SLA (often much faster) in exchange for ~50% off per-token pricing. Perfect for evaluations, bulk classification, content backfills, and anything that does not need a real-time response.
When neither fits
If you need real-time streaming for an interactive user, neither helps. If you are running 100 evals where the answer can land tomorrow, batch wins on cost. If the same 50MB PDF feeds a hundred chat turns this week, files cuts upload latency to zero on every turn after the first.