Foony Realtime meters one thing, messages. Everything else is a capacity limit that scales with your plan. The numbers here are the enforced values, the same ones behind the pricing page.
Per-plan limits
| Limit | Free | Starter | Growth | Scale |
|---|---|---|---|---|
| Included messages / month | 9M | 100M | 500M | 1.5B |
| Messages / second | 1,000 | 10,000 | 50,000 | 150,000 |
| Max message size | 64 KB | 256 KB | 1 MB | 1 MB |
| Concurrent connections | 300 | 10,000 | 50,000 | 150,000 |
| Concurrent channels | 300 | 10,000 | 50,000 | 150,000 |
| History retention | 24 h | 30 d | 30 d | 30 d |
Above the included messages, Free stops accepting new messages until the month rolls over, while paid plans keep going and bill overage per million. Channels themselves have no per-channel rate ceiling: the message rate is per app, and one busy channel may use all of it.
Fixed limits on every plan
| Limit | Value |
|---|---|
| Channel name length | 255 characters |
| Channels attached per connection | 1,000 |
| Token lifetime | 24 hours maximum, 1 hour default |
| History page size | 100 messages default |
| REST publish body | 2 MB |
What happens at a limit
Every limit responds the same way: error 42900 with a message naming the exceeded quota. Messages over the rate limit are rejected, not queued, so a client that sees 42900 should back off and retry. Connection and channel ceilings refuse the new connection or attach and leave existing ones untouched.
Plan changes propagate within about 15 seconds.