Abuse limits
A chat box on a public page is an open door to a language model. These are the locks. Most are platform-level, set by the operator; all of them log their rejections, which show up in the security digest and analytics.
Burst limits, per IP
Section titled “Burst limits, per IP”| Bucket | Allowance |
|---|---|
| Chat messages | 12 per minute |
| Media — transcription, speech, uploads | 12 per minute |
| Voice signalling | 60 per minute |
Voice is far higher on purpose: one spoken turn fires several calls, and a tighter limit would drop transcripts out of the conversation log rather than visibly failing.
API keys get the same chat budget as a visitor’s IP, counted per key.
Conversation caps
Section titled “Conversation caps”| Setting | Default |
|---|---|
| New conversations per IP per hour | 30 |
| Messages per conversation per hour | 30 |
| Messages per conversation, lifetime | 150 |
| Characters per message | 4,000 |
The per-IP conversation cap is the one to be careful with. Offices, schools and mobile networks put many real people behind one address, so a low value locks out legitimate visitors in exactly the buildings you most want to hear from.
The daily budget
Section titled “The daily budget”A platform-wide cap on visitor messages per day, off by default. It is the circuit breaker: when it trips, chat stops for everyone until tomorrow.
Set it well above a normal day’s traffic. It is there to bound the damage from something going wrong at three in the morning, not to shape ordinary usage.
Origin enforcement and Turnstile
Section titled “Origin enforcement and Turnstile”Both are covered in security and privacy. Origin enforcement stops your assistant being embedded elsewhere; Turnstile stops automated clients starting conversations at all.
Reading rejections
Section titled “Reading rejections”Every rejection is logged by type:
| Type | Means |
|---|---|
rate_limit | A per-minute burst limit |
conv_cap | Too many new conversations from one address |
msg_cap | Too many messages in one conversation |
msg_too_long | Over the character limit |
turnstile_fail | Failed the bot check |
origin_block | Came from a site that is not allowed to embed this agent |
budget | The platform’s daily message budget is spent |
A steady trickle of rate_limit and msg_too_long is normal background noise
on any public site. A spike in origin_block means someone has copied your
script tag onto their own site. A single budget event means everything
stopped, and is worth an alarm rather than a digest entry.