Skip to main content
The server enforces every ceiling below. Most violations return 422 invalid_request. Exceptions are called out on their rows, and in Errors.

Rate limits

Message writes use a fixed window per conversation. A 429 response carries Retry-After in seconds. Wait that long before retrying. Retrying sooner consumes the next window. Other writes hold their own budgets, per caller and per network address. The tighter of the two answers first, and the reply is the same 429 with Retry-After. Attachment uploads are budgeted in megabytes rather than requests, charged from the declared Content-Length before the body streams. /responding spends from the read-receipt budget and the typing budget in one call.

Messages

On /v1 the server splits the parts at ingest: each visible non-media part commits as its own message, contiguous media parts commit as one media message, and a voice memo always commits as its own message. On /v2 one send is one message and the 32 is a per-message ceiling.

Streamed replies

A streamed reply commits one or more messages, so it obeys every message limit above, plus these transport ceilings. Breaching one commits nothing.

Attachments

Message edit and unsend

Which operations a part accepts is per kind, and the server publishes the answer on every message as edit_capabilities. See the message model.

Groups

See group conversations.

Handles

A handle is a mutable label over a stable participant id. See Handles are labels, not identities.

Contact discovery

Webhooks

Delivery and retention

See also