specification: API Commons Rate Limits specificationVersion: '0.1' schema: https://raw.githubusercontent.com/api-evangelist/interface-research/main/schema/api-commons.yml#/$defs/RateLimits provider: Stream providerId: getstream created: '2026-07-03' modified: '2026-07-03' reconciled: false tags: - Chat - Rate Limiting - Quotas - Throttling description: >- Stream applies rate limits per API endpoint and per platform on a rolling 1-minute window. Platforms (Server-side, iOS, Android, Web) have independent counters and do not share quota, so a server-side script hitting a limit does not affect mobile or web clients. Each response returns the current quota in the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers, and a 429 status is returned when a limit is exceeded. Per-user endpoints are additionally capped at roughly 60 requests per minute per endpoint and platform; app-level endpoint limits range from about 60 to 10,000 requests per minute. Applications can query their live quotas via GET /rate_limits. WebSocket connections are separately capped at 50 concurrent connections per user in production (3 in development). notes: >- Numeric limits vary per endpoint and may be adjusted dynamically based on overall platform load and an application's usage patterns for query endpoints. Monitor the X-RateLimit-* response headers and call GET /rate_limits to see current per-platform, per-endpoint quotas. sources: - https://getstream.io/chat/docs/node/rate_limits/ - https://getstream.github.io/protocol/?urls.primaryName=Chat - https://getstream.io/chat/docs/node/instantiating_the_client/ responseCodes: throttled: 429 headers: - name: X-RateLimit-Limit description: Total requests allowed in the current window for this endpoint and platform. - name: X-RateLimit-Remaining description: Requests remaining in the current window. - name: X-RateLimit-Reset description: Unix timestamp when the current window resets. limits: - name: Per-User Endpoint Limit scope: user metric: requests limit: ~60 per minute per endpoint per platform window: 1 minute notes: Each individual user is capped per endpoint and platform. - name: Per-App Endpoint Limit scope: app metric: requests limit: ~60 to 10,000 per minute (varies by endpoint) window: 1 minute notes: Application-wide limit that varies by endpoint; not shared across platforms. - name: Platform Isolation scope: platform metric: requests limit: independent counters per platform window: 1 minute notes: Server-side, iOS, Android, and Web each have their own quota pool. - name: Concurrent WebSocket Connections scope: user metric: connections limit: 50 in production, 3 in development window: concurrent notes: connectUser() should be called once per user session; extra sockets cause billing and behavior issues. policies: - name: Per-Endpoint Per-Platform Windows description: Limits are enforced on a 1-minute rolling window, isolated by endpoint and platform. - name: Dynamic Adjustment description: Query-endpoint limits may be raised or lowered based on platform load and the application's usage patterns. - name: Backoff Strategy description: Clients should honor the X-RateLimit-Reset timestamp and implement exponential backoff with jitter on 429 responses. maintainers: - FN: Kin Lane email: kin@apievangelist.com