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:

ScopeAccess granted
readRead-only operations — list tools, fetch cases, retrieve documents.
writeRead + create and update operations — invoke tools, create cases, upload documents.
adminFull 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 Requests response with a Retry-After header

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.