Storage and Bandwidth

Stream applies fair-usage limits to storage, bandwidth, and API calls on every Chat plan. You only start to pay extra for storage and bandwidth after you exceed these fair usage limits.

Common causes of overages

Most overages we see come from a handful of integration patterns:

  • Automated cron jobs hitting query channels. Background jobs that poll Stream on a schedule (for example, to refresh inboxes or compute unread counts) can multiply API calls many times over without any real user activity.
  • Query channels with high pagination limits. Requesting large numbers of channels and messages on your query channel API calls. This increases bandwidth usage significantly. This is particularly an issue when you store large custom objects on channels, users or messages.
  • Bot users on your app. Bots that watch many channels, send frequent messages, or run analytics in the background can dwarf the activity of real users.
  • Frontend or client-side bugs. Tight retry loops, unmounted components that keep firing requests, or misconfigured reconnect logic can produce high call volumes that look like organic traffic but are not.

Reducing storage and bandwidth costs

Two levers cover the vast majority of cost-reduction work:

  1. Apply retention policies. Configuring channel-level message retention is the most effective way to cap stored messages and the bandwidth required to read them back. See the Data Retention Policy guide for setup details.
  2. Improve your client and server-side integration. Audit query channel calls for pagination size, frequency, and necessity. Replace polling with webhooks or real-time events where possible. Use query syntax operators to fetch only what you need, and apply slow mode and throttling on noisy channels.

Included fair-usage limits by plan

The following allowances are included with each plan tier. Usage above these thresholds is billed as an overage (see the next section).

PlanMessagesChannelsAPI callsQuery channelsQuery channel budget limiter (ms per minute)Bandwidth
Self-serveUp to 10MUp to 1MUp to 1M100,000200,00010 GB
Up to $100KUp to 50MUp to 5MUp to 20M2,000,000200,000500 GB
Enterprise $100K to $300KUp to 100MUp to 10MUp to 80M8,000,000400,0001 TB
Enterprise $300K to $600KUp to 200MUp to 20MUp to 200M20,000,000800,0002 TB
Enterprise $600K to $2MUp to 2BUp to 200MUp to 800M80,000,0001,600,0005 TB

The query channel budget limiter caps the total milliseconds of query channel processing time consumed per minute. It is the metric that catches bursty cron jobs and oversized pagination before they translate into a bill.

Overage pricing

Overages are billed independently for each resource. You only pay for the resource that exceeds its included allowance.

Messages

Stored messagesFee per 1M messages
0 to 50M$5.00
50M to 100M$4.00
100M to 500M$3.50
500M to 1B$3.50
1B to 2B$3.50

Channels

Stored channelsFee per channel
0 to 2.5M$0.0006
0 to 5M$0.0005
5M to 10M$0.0004
10M to 20M$0.0004
20M and above$0.0004

Bandwidth and API calls

ResourceRate
Bandwidth$0.40 per GB
Total API calls$7 per million
Total query channel API calls$2.50 per 100,000

If you are seeing unexpected overage charges, the fastest path to a fix is to look at the four causes listed above, then apply retention policies and tighten your query channel usage. Reach out to your account team if you want help auditing your traffic patterns.