Per-request pricing is the figure most teams actually need, because it is the one that multiplies. Getting it right means separating input from output, since providers price them differently and output is typically several times more expensive per token.
Start with a representative request rather than an average you have guessed. Take a real prompt, including the system message and any tool definitions, and count it. Then take a real response. The ratio matters more than either number: a workload with a long prompt and a short answer behaves very differently from one with a short prompt and a verbose structured response.
Multiply by a thousand and you have a figure you can reason about. The most common mistake at this point is forgetting that retries, failed validations and multi-turn conversations all consume tokens. A pipeline that validates structured output and retries once on failure does not cost what a single call costs — it costs somewhere between one and two calls, weighted by your failure rate.
List pricing is an upper bound, not a forecast. Prompt caching can reduce the input cost of a repeated system prompt substantially. Batch processing trades latency for a lower rate. Committed-use agreements change the numbers again. None of those are visible in a published price table, so treat your calculated figure as the ceiling and expect the invoice to come in below it.
Finally, check the date on whatever prices you are using. Provider pricing changes without much notice, and a spreadsheet built six months ago may be quietly wrong. The provider pricing page is always the authority.