The Batch API trades latency for price: you submit a job file, results land within 24 hours. On input and output tokens the discount really is a clean halving, and it holds for every model in this calculator. Two details are not clean, and both of them are the kind of thing a blanket percentage quietly gets wrong, so this OpenAI API cost calculator stores the batch card separately rather than deriving it.
First, gpt-5.4 publishes a batch cached-input rate of $0.13 per 1M against a standard $0.25. Half of $0.25 is $0.125, so the published cell is a 48% cut rather than exactly half, rounded to the cent. Small in isolation, and a good signal that the batch table is a separate rate card rather than a formula applied to the standard one.
Second, and much larger: 8 models publish no batch cached-input rate at all. The cell is empty for gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, gpt-4o, gpt-4o-mini, o3, o4-mini, o3-mini. There is a real difference between a rate of zero, a rate equal to the standard one, and a rate that has not been published, and only the third is true here. When you set a cached share above zero on the batch tier, this calculator moves those models out of the ranking and says why, rather than halving their standard cached rate and presenting the output as a price.
Three models were left out of this OpenAI API cost calculator for related reasons. gpt-3.5-turbo and gpt-3.5-turbo-instruct appear in the standard table with no batch row at all. gpt-3.5-turbo-1106 does have a batch row, but its batch rates are identical to its standard rates, so it is the one model here that gets no batch discount. That is a legitimate published price rather than an error, and it is worth knowing precisely because a reader who assumes batch always halves the bill would get that model wrong.