How 9thSense protects your data
Security Overview
9thSense is built for regulated industries — KYC, lending, insurance, and financial services — where document data is sensitive by definition. This page summarizes the security controls in place at the platform layer.
Authentication
API keys
Every API request must include an API key in the X-Api-Key header. Keys use a split-key format:
zk_<prefix>_<secret>
- The prefix is stored in plaintext and used for key lookup.
- The secret is hashed with bcrypt before storage. The raw secret is never stored.
- No secret can be recovered from the database — compromised keys must be rotated, not retrieved.
Keys are created in Settings → API Keys in the dashboard and can be revoked at any time.
Scopes and RBAC
Every endpoint enforces a required scope. Keys can be issued with restricted permissions:
| Scope | Access granted |
|---|---|
read | Read-only operations — list tools, fetch cases, retrieve documents. |
write | Read + create and update operations — invoke tools, create cases, upload documents. |
admin | Full access — manage agents, API keys, tenant configuration. |
Requests with insufficient scope receive a 403 Forbidden response.
Rate limiting
Requests are rate-limited per tenant:
- 200 requests per minute per tenant
- Exceeding the limit returns a
429 Too Many Requestsresponse with aRetry-Afterheader
Rate limits apply uniformly across all endpoints.
Encryption
In transit
All traffic to the 9thSense API is encrypted with TLS. Connections over plain HTTP are rejected.
At rest
All stored data — documents, extracted fields, case records, embeddings — is encrypted at rest using AES-256.
Audit logging
Every API operation is logged to an immutable audit trail, including:
- Authenticated identity (API key prefix and tenant)
- Endpoint, method, and timestamp
- Success or failure status
Audit logs are available to administrators through the platform and are retained for compliance review.
Self-hosted AI
By default, 9thSense routes all AI inference — document analysis, classification, enrichment — through your self-hosted AI runtime. Document content never leaves your infrastructure for AI processing unless you explicitly enable cloud fallback.
Cloud AI fallback is opt-in per request via the allow_cloud flag on tool invocations. When disabled (the default), inference fails closed if the self-hosted runtime is unavailable, rather than silently routing to a cloud provider.
Multi-tenant isolation
All data is scoped to a tenant identifier at the storage and query layer. Cross-tenant data access is not possible through the API. Tenant identifiers are enforced server-side — a key issued for tenant A cannot access data belonging to tenant B.
Responsible disclosure
To report a security vulnerability, contact security@9thsense.ai. We respond to all reports within one business day.