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: NATS providerId: nats created: '2026-05-04' # Provenance stamped 2026-08-11: this artifact was written by the API Evangelist # bulk sweep dated 2026-05-04, not harvested from the provider. See roadmap#35. method: generated modified: '2026-05-05' reconciled: true tags: - Rate Limiting - Message Broker - Pub Sub - Streaming description: NATS open source does not enforce request-per-second rate limits via HTTP — it is a TCP/WebSocket messaging server. Operator-enforced limits are configured per Account via JWT claims (max connections, max subscriptions, max payload, max data, max leaf nodes). The HTTP monitoring endpoints on port 8222 are unauthenticated and intended for operations dashboards. Synadia Cloud, the managed offering, enforces per-Team quotas defined by subscription tier (connections, subscriptions, network data, storage, message size) rather than RPS throttling. sources: - https://docs.nats.io/running-a-nats-service/configuration/securing_nats/jwt - https://www.synadia.com/cloud - https://docs.synadia.com/cloud/pricing responseCodes: quotaExceeded: -ERR limits: - name: Max connections (per account, OSS) scope: account metric: concurrent_connections limit: see account JWT max_connections claim notes: Configured per Account via JWT claims; default unlimited. - name: Max subscriptions (per account, OSS) scope: account metric: concurrent_subscriptions limit: see account JWT max_subscriptions claim notes: Configured per Account via JWT claims; default unlimited. - name: Max payload (per account, OSS) scope: account metric: bytes_per_message limit: see account JWT max_payload claim notes: Defaults to server max_payload (1 MB). - name: Max data (per account, OSS) scope: account metric: bytes limit: see account JWT max_data claim notes: Aggregate JetStream storage cap. - name: Synadia Cloud Personal — connections scope: team metric: concurrent_connections limit: 10 notes: Free tier; 100 subscriptions, 5 GiB storage, 10 GB network data, 1 MiB max message. - name: Synadia Cloud Starter — connections scope: team metric: concurrent_connections limit: 100 notes: $49/mo; 1,000 subscriptions, 10 GiB storage, 100 GB network data. - name: Synadia Cloud Pro — connections scope: team metric: concurrent_connections limit: 1000 notes: $199/mo; 10,000 subscriptions, 50 GiB storage, 1 TiB network data, 2 MiB max message. - name: Synadia Cloud Premium — connections scope: team metric: concurrent_connections limit: 10000 notes: $899/mo; 100,000 subscriptions, 1 TiB storage, 2 TiB network data, 8 MiB max message. policies: - name: Account-scoped quotas (OSS) description: NATS enforces resource limits per Account via signed JWT claims rather than per-request throttling. Use the operator/account/user hierarchy and `nsc` tool to set max_connections, max_subscriptions, max_payload, max_data, and max_leaf_nodes. - name: Slow consumer detection description: NATS server disconnects subscribers that cannot keep up with publish rate; clients receive a slow-consumer error and must reconnect. Publishers receive `-ERR` flow-control messages. - name: JetStream backpressure description: JetStream applies stream-level limits (max bytes, max messages, max age) and pull/push consumer ack windows. Producers are flow-controlled when stream storage thresholds are reached. - name: Synadia Cloud quota enforcement description: Cloud tier limits are enforced as hard caps on connections, subscriptions, storage, and network data. Exceeding network-data or storage caps triggers degraded service until the next billing period or until the team upgrades / adds storage packs. maintainers: - FN: Kin Lane email: kin@apievangelist.com