How does Universal Streaming session-based pricing work?

Universal Streaming is billed on the total duration of each streaming session — the entire time the WebSocket connection stays open — not on the amount of audio sent through it. You’re charged for idle time on an open session just the same as you are for time when audio is actively flowing.

This gives you full control over cost and latency. You can keep a stream open continuously for instant response, or open streams strategically on demand to minimize spend.

For the current per-hour streaming rates, see the pricing page or the Models pricing section.

Best practices to avoid unexpected charges

  • Always send a session termination message when your application is finished with a stream. This is what stops billing for the session. See Session termination for details.
  • Sessions that are not terminated auto-close after 3 hours, and you’ll be billed for the full 3-hour session duration regardless of how much audio was actually streamed.
  • Improperly closed streaming sessions are the most common cause of unexpected charges that lead to negative account balances.

Additional resources