Skip to content

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.

BucketAllowance
Chat messages12 per minute
Media — transcription, speech, uploads12 per minute
Voice signalling60 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.

SettingDefault
New conversations per IP per hour30
Messages per conversation per hour30
Messages per conversation, lifetime150
Characters per message4,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.

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.

Both are covered in security and privacy. Origin enforcement stops your assistant being embedded elsewhere; Turnstile stops automated clients starting conversations at all.

Every rejection is logged by type:

TypeMeans
rate_limitA per-minute burst limit
conv_capToo many new conversations from one address
msg_capToo many messages in one conversation
msg_too_longOver the character limit
turnstile_failFailed the bot check
origin_blockCame from a site that is not allowed to embed this agent
budgetThe 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.