1. 🏗️ Platform
  • HMS Sovereign Introduction
  • 🚀 Get Started
    • Authentication
    • Quickstart
  • 🧩 Core Concepts
    • Assistants
    • Calls
    • Phone Numbers
    • Webhooks
  • 🏗️ Platform
    • Privacy policy
    • Dashboard Security
    • Billing and Credits
    • EU Data Sovereignty
    • Voice Selection
    • Whitelabel Portal
  • 🛠️ SDKs
    • Node.js SDK
  • 🪝 Webhooks
    • Assistant Request
    • End of Call Report
    • Webhooks Overview
    • Webhook Security
    • Status Update
    • Tool Calls
  • ⚙️ Configuration
    • Analysis Templates
    • Custom Tools
    • SIP Trunks
    • Tool Templates
  • ✨ Features
    • AI Generation
    • Autonomous Silence Handling
    • Call Analysis
    • Call Transfers
    • Campaigns Setup
    • Outbound Campaigns
    • Voicemail Detection
    • Web Calls
    • Privacy & Compliance Features
  • 🔗 Integrations
    • MCP Server
    • BYOK Setup
    • Provider Pricing
    • xAI Grok Integration
  • 📖 Reference
    • Error Codes
    • Rate Limits
    • Troubleshooting
Book a meeting
Linkedin
Github
📄 Documentation
🔌 API Reference🤖 MCP🕐 Changelog📦 SDK🟢 Status
📄 Documentation
🔌 API Reference🤖 MCP🕐 Changelog📦 SDK🟢 Status
  1. 🏗️ Platform

Dashboard Security

HMS Sovereign's dashboard is built with security as a foundational requirement. This document describes the authentication model, access controls, and protective measures in place for all dashboard users.

Authentication#

Password-Based Login#

All accounts are secured with email/password authentication. Passwords must be at least 8 characters and are never stored in plaintext. Authentication is handled via an open-source identity server (GoTrue) running on HMS Sovereign's own EU-hosted infrastructure.

PKCE Flow#

Authentication tokens are exchanged using the Proof Key for Code Exchange (PKCE) flow. This prevents authorization code interception attacks by binding the token exchange to the originating client. All email confirmation links, password reset links, and OAuth callbacks use PKCE.

GitHub OAuth#

Users can sign in with GitHub as an alternative to email/password. The OAuth code is exchanged server-side before any session is established.

Session Management#

Sessions are managed via secure, HTTP-only cookies. Sessions are automatically refreshed on activity and validated on every request by the server-side middleware. There are no long-lived tokens stored in browser localStorage.

Two-Factor Authentication (2FA)#

HMS Sovereign supports TOTP-based two-factor authentication (Time-based One-Time Password), compatible with any standard authenticator app (Google Authenticator, Authy, 1Password, etc.).

How It Works#

1.
Enable 2FA in Settings → Security
2.
Scan the QR code with your authenticator app
3.
Enter the 6-digit code to confirm enrollment
4.
On future logins, you will be prompted for your 6-digit code after your password

Assurance Levels#

The authentication system tracks assurance levels per session:
LevelMeaning
AAL1Authenticated with password only
AAL2Authenticated with password + second factor (2FA)
Protected routes require at minimum AAL1. Users with 2FA enrolled are required to complete AAL2 before accessing the dashboard.

Disabling 2FA#

2FA can be disabled from Settings → Security. This requires re-authenticating with your current TOTP code.

API Key Security#

Key Format#

API keys use the format fl_<64 hex characters>, generated using cryptographically secure random bytes.

Storage#

API keys are never stored in plaintext in the database. Each key is encrypted and stored in a dedicated secrets vault (using envelope encryption). The database only stores a reference ID to the vault entry, not the key itself.

Usage#

Keys are passed as Bearer tokens in the Authorization header:
Authorization: Bearer fl_...
Keys are validated on every API request before any data is returned or action is taken.

Rotation#

API keys can be regenerated at any time from Settings → API Keys. Regenerating a key immediately invalidates the previous key. Old vault entries are deleted on rotation.

Access Control#

Role-Based Access#

The dashboard distinguishes between two roles:
RoleAccess
UserFull access to their own organization's data
AdminAdditional access to platform-wide admin features (account management, credits, support tickets)

Organization Isolation#

All data is scoped to your organization. Every database query filters by org_id, ensuring organizations cannot access each other's data. This is enforced both at the application layer and at the database level via Row-Level Security (RLS) policies.

Protected Routes#

The following routes require an active authenticated session:
/dashboard — Overview
/agents — Voice assistants
/numbers — Phone numbers
/calls — Call history
/usage — Usage & billing
/settings — Account settings
/integrations — BYOK & provider setup
/campaigns — Outbound campaigns
/admin — Admin panel (admin role required)
Unauthenticated requests to protected routes are redirected to the login page.

Email Verification & Password Reset#

Email Verification#

New accounts receive a confirmation email before access is granted. The confirmation link uses a time-limited, signed token exchanged via the PKCE flow. Unverified accounts cannot sign in.

Password Reset#

1.
Request a reset link on the Forgot Password page
2.
A signed recovery link is sent to your email address
3.
Clicking the link initiates a PKCE token exchange
4.
You are directed to set a new password (minimum 8 characters)
Recovery links expire after a short time window and can only be used once.

Rate Limiting#

API endpoints are rate-limited to prevent abuse:
EndpointLimit
API requests100 requests/minute per API key
Outbound calls20 requests/minute per organization
Domain management5 requests/hour per organization
Rate limit status is returned in response headers:
X-RateLimit-Remaining — Requests remaining in the current window
X-RateLimit-Reset — Unix timestamp when the limit resets

Infrastructure Security#

Hosting: Dashboard is hosted on Vercel with edge network protection
Data: All customer data is stored on HMS Sovereign's own EU-hosted infrastructure (Nuremberg, Germany)
Encryption in transit: All connections use TLS. HTTP is redirected to HTTPS.
Encryption at rest: API keys and BYOK secrets are encrypted at rest using envelope encryption in the secrets vault
Error tracking: Errors are monitored via Sentry. Session replays have maskAllText and blockAllMedia enabled to prevent sensitive content from being captured

Responsible Disclosure#

If you discover a security vulnerability in the HMS Sovereign dashboard or API, please contact us at support@flireo.com. We aim to respond within 48 hours and will work with you to resolve the issue responsibly.
Modified at 2026-03-28 09:01:42
Previous
Privacy policy
Next
Billing and Credits
Built with