Configuration
SuperTokens Core is configured using aconfig.yaml file and environment variables. This page documents all available configuration options.
Configuration file location
The default configuration file is located at:--with-config flag:
Core configuration
Service settings
integer
default:"3567"
The port on which SuperTokens Core runs
string
default:"localhost"
The host on which SuperTokens Core runs. Can be
localhost, a domain name, 0.0.0.0, or an IP addressstring
default:""
Base path to prepend to all API endpointsWith this config, endpoints become
/auth/recipe/signup instead of /recipe/signupinteger
default:"10"
Maximum thread pool size for incoming HTTP requests
Logging
string
default:"{installation}/logs/info.log"
Path for INFO level logs. Set to
"null" to log to standard outputstring
default:"{installation}/logs/error.log"
Path for ERROR level logs. Set to
"null" to log to standard errorstring
default:"INFO"
Logging level. Options:
DEBUG, INFO, WARN, ERROR, NONEAuthentication configuration
Access tokens
integer
default:"3600"
DIFFERENT_ACROSS_APPS: Time in seconds for access token validity
integer
default:"168"
DIFFERENT_ACROSS_APPS: Time in hours for signing key rotation
Shorter intervals improve security but increase database queries for key management
Refresh tokens
number
default:"144000"
DIFFERENT_ACROSS_APPS: Time in minutes for refresh token validity
API keys
string
default:"(none)"
DIFFERENT_ACROSS_APPS: Comma-separated API keys for authenticating Backend SDK requests
Password authentication
Password hashing
string
default:"BCRYPT"
DIFFERENT_ACROSS_APPS: Password hashing algorithm. Options:
BCRYPT, ARGON2BCrypt settings
integer
default:"11"
Number of rounds for BCrypt hashing. Higher values are more secure but slower
Argon2 settings
integer
default:"1"
Number of iterations for Argon2 hashing
integer
default:"87795"
Memory usage in KB for Argon2 (default: 85 MB)
integer
default:"2"
Parallelism factor for Argon2
integer
default:"1"
Number of concurrent Argon2 hash operations allowed
Password reset
integer
default:"3600000"
DIFFERENT_ACROSS_TENANTS: Password reset token lifetime in milliseconds
Passwordless authentication
integer
default:"900000"
DIFFERENT_ACROSS_TENANTS: Passwordless code validity in milliseconds
integer
default:"5"
DIFFERENT_ACROSS_TENANTS: Maximum code input attempts before requiring restart
TOTP (MFA)
integer
default:"5"
DIFFERENT_ACROSS_TENANTS: Maximum invalid TOTP attempts before rate limiting
integer
default:"900"
DIFFERENT_ACROSS_TENANTS: Rate limit duration in seconds after max attempts reached
Email verification
integer
default:"86400000"
DIFFERENT_ACROSS_TENANTS: Email verification token lifetime in milliseconds
IP filtering
string
default:"null"
DIFFERENT_ACROSS_TENANTS: Regex pattern for allowed IP addresses
string
default:"null"
DIFFERENT_ACROSS_TENANTS: Regex pattern for denied IP addresses
OAuth configuration
string
default:"null"
Encryption key for OAuth client secrets stored in database
string
default:"null"
URL for OAuth provider public service
string
default:"null"
URL for OAuth provider admin service
SAML configuration
string
default:"https://saml.supertokens.com"
Service provider entity ID for SAML
integer
default:"300000"
Duration in milliseconds for SAML claims validity
Bulk import
integer
default:"(CPU cores)"
DIFFERENT_ACROSS_APPS: Number of parallel threads for bulk user migration
integer
default:"8000"
DIFFERENT_ACROSS_APPS: Number of users to load per batch during migration
Monitoring
boolean
default:"false"
string
default:"null"
OpenTelemetry collector URL for distributed tracing
boolean
default:"false"
Enable deadlock detection logging
Environment variables
Most configuration options can be set via environment variables using uppercase with underscores:Environment variables take precedence over config.yaml settings
Configuration scopes
Configuration parameters are marked with scope annotations:- DIFFERENT_ACROSS_APPS: Can be different for each app in multi-tenancy setup
- DIFFERENT_ACROSS_TENANTS: Can be different for each tenant within an app
- (No annotation): Global configuration, same across all apps and tenants
Example configurations
Development
config.yaml
Production
config.yaml
High security
config.yaml
Validation
Validate your configuration by starting SuperTokens Core:Related documentation
Database setup
Configure your database connection
Docker deployment
Use environment variables with Docker
Self-hosting
Deploy SuperTokens Core to production
Security
Learn about security best practices