Security

Rate limiting

All API routes are rate-limited per IP via Cloudflare. SCIM endpoints use a higher limit keyed by Bearer token to accommodate directory sync traffic. Exceeding the rate limit returns 429.

Security headers

HeaderValue
X-Frame-OptionsDENY
X-Content-Type-Optionsnosniff
Strict-Transport-Securitymax-age=63072000; includeSubDomains
Referrer-Policystrict-origin-when-cross-origin
X-DNS-Prefetch-Controloff

Authentication security

API tokens are generated with 256-bit entropy and stored as SHA-256 hashes. SCIM tokens are UUID-based and SHA-256 hashed. Device codes expire after 10 minutes and are SHA-256 hashed. SAML assertion replay is prevented with a 10-minute deduplication window.

Content limits

ResourceLimit
Skill content512 KB
Team description / user bio10 KB
SAML metadata256 KB
Skill name1–100 chars
Team name2–50 chars
Username2–39 chars
API tokens per user25