Try the interactive chat
Limits
Request limits, automatic replies, conversations, messages, stored responses, files and keys.
Request limits
| Key | Limit |
|---|---|
| Server key | 120 requests per minute per key, including reads |
| Publishable key | 30 requests per minute per visitor address, including reads; a total of 1,200 requests and a separate 20,000 reads per hour per key |
Reads are all GET requests: GET /key, GET /models, stored responses and input items, conversation state and messages, and GET /chat/{id}/stream. Sending messages (POST /chat/completions, POST /responses, POST /chat), DELETE /responses/{id} and POST /responses/{id}/cancel count toward the 1,200 hourly non-read limit.
The two hourly publishable-key limits are independent. Polling team replies does not consume the sending allowance and continues even if sending reaches its limit. One widget polling every five seconds makes 720 reads/hour, allowing about 27 simultaneous visitors waiting for team replies per key. Increase the interval for more visitors: Polling frequency.
A visitor address is an IPv4 address or an IPv6 /64 block. People sharing an address count as one visitor. Each publishable key serves at most 2,000 distinct visitor addresses per minute; this restriction delays only new visitors to that key.
Limits use sliding windows. Exceeding a limit returns 429 rate_limit_exceeded; Retry-After specifies the wait in seconds. Every request except GET /files/{id} counts. Pause polling in background tabs.
Automatic reply limit
API assistant replies are limited per workspace. Defaults are 60 turns/hour and 300/day. All publishable keys together share at most 40 turns/hour and 200/day within that total. The remaining capacity is reserved for server keys: even if the website uses its entire share, server requests retain at least 20 turns/hour and 100/day. Sonecentral may change these values; GET /key returns current limits.
These limits prevent abuse or a faulty loop from affecting your other channels. WhatsApp and other channels have separate reply limits. The publishable-key share prevents a public website key from consuming your server-key allowance.
When the workspace limit or publishable-key share is reached, the assistant does not reply. The request returns 429 ai_turn_ceiling, x-should-retry: false and Retry-After: 300. In an existing conversation, the message still reaches your team with a note. Tell the visitor your team will reply. See When the assistant cannot reply.
Conversations and messages
| Item | Limit |
|---|---|
| New visitor message | 4,000 characters |
| New visitor messages per request | 12 |
| Visitor messages per conversation | 200 |
| History imported into a new conversation | Last 40 messages, up to 4,000 characters each |
| Request body | 1 MB |
| Developer context | 2,000 characters; server keys only |
Idempotency-Key | 200 characters; longer values are ignored |
| First-message retry lookup | 10 minutes |
| Concurrent turns in one conversation | One; a second returns 409 conversation_busy |
| Conversation message page | Maximum 100, default 50 |
Responses
| Item | Limit |
|---|---|
| Stored response lifetime | 30 days |
metadata | 16 keys, key length 64 characters, string value length 512 characters, total JSON size 4 KB |
instructions | 2,000 characters and 4 KB JSON; ignored and not stored for publishable keys |
| Stored input items | Only the request's own new messages, item_reference items and server-key system/developer messages. Up to 40 items and 8 KB JSON total. The newest item is truncated if needed; each item's text is limited to 4,000 characters. |
Files
| Item | Limit |
|---|---|
| File shared by the assistant | 32 MB |
| Signed file URL lifetime | 7 days |
Downloads per file ID (file_…) | 10/hour |
| Workspace daily file downloads | Default 2 GiB, reset at midnight UTC |
| Download requests from one address | 120/minute |
Keys
| Item | Limit |
|---|---|
| Active keys per workspace | 50; revoked keys excluded |
| Allowed origins per publishable key | 20 |
| Key name | 80 characters |
Plans and AI capacity
Assistant replies through this API do not consume your plan's message or AI-reply allowance. They are constrained by the workspace's automatic API reply limits and Sonecentral's AI capacity.
The workspace still needs a plan that permits assistant replies. 402 plan_required means the plan does not allow them; 429 assistant_quota_exhausted means Sonecentral's AI capacity is temporarily unavailable, not that your workspace used its plan allowance.
In an existing conversation, the visitor's message still reaches your team. A rejected first message opens no conversation and stores nothing. See Errors.
API traffic has its own sending limits and cannot stop WhatsApp sending. Other channels continue even if API traffic exceeds its limits. Contact Sonecentral if you need higher limits.