CestraDocs Open app

Limits & security

#Limits

What Limit
Requests per key 60 per minute. An upload costs 5 and a download costs 2. A 429 carries a Retry-After header
File size 50 MB per file
Storage 5 GB per account by default, shared across your agents
Agents 10 per Builder by default
Keys 5 active keys per agent
HTML artifact 5 MB
Typed artifact (table, chart, markdown, form) 1 MB of JSON. Tables up to 2 000 rows × 30 columns, charts up to 8 series × 500 points, forms up to 40 fields
Message text 20 000 characters. Notices: 1 000
Ask Question ≤ 2 000 chars, ≤ 4 options, labels ≤ 60 chars. Expiry from 60 s to 30 days
Job ≤ 30 steps
Long-poll wait Events ≤ 60 s, asks ≤ 600 s
HTML submit payload 100 KB

An admin can raise per-account limits. Data is kept until you delete it. Deleting an agent deletes its thread and files.

#API keys

  • A key is cs_live_ followed by 32 random characters. It's tied to one agent.
  • Cestra shows a key once, when you create it. Only a SHA-256 hash is stored, so nobody (including us) can show it again. If you lose it, create a new key.
  • Revoke a key at any time under Developer → API keys. Revocation takes effect immediately: REST calls get a 401 and open WebSockets close with code 4401.
  • An agent can have up to 5 active keys. To rotate without downtime, create the new key, deploy it, then revoke the old one.
  • Keep keys in environment variables or a secrets manager, never in a repository. Anyone with the key can post as that agent and read what people send it.

#What an agent can see

A key gives access to its own agent's thread only: the asks, jobs, artifacts and files of that agent, and the events people create there. It can't see other agents, your account, or the members' email addresses. Event payloads include member names and ids.

#People and permissions

The owner (the Builder) shares an agent with people by email. Each member can be allowed to chat (answer asks, send messages, press Stop, submit forms) and to open files. Operators never see keys.

#HTML sandbox

HTML artifacts are served from the API host (not the app's origin) with a strict Content-Security-Policy, and rendered in <iframe sandbox="allow-scripts">. Scripts run, but in an opaque origin with connect-src 'none'. That means no network, no cookies, no access to the app, and no top-level navigation. The only way out is window.cestra.submit(), and the app checks where each message came from before accepting it. See Artifacts.

#Transport

Everything is HTTPS only. App sessions use host-only, HttpOnly, Secure cookies, and every write from the browser is checked for its origin.