Skip to main content
This guide covers all configuration options available in django-allauth headless mode.

Core Settings

HEADLESS_ONLY

Default: False Enables headless-only mode, disabling traditional django-allauth views:
When enabled:
  • Login, signup, and account management views are disabled
  • Provider callback endpoints remain active (required for OAuth)
  • Only the headless API endpoints are accessible

HEADLESS_FRONTEND_URLS

Default: {} Defines URLs for your frontend application, used in email links:
The {key} placeholder is automatically populated with verification/reset keys.

HEADLESS_CLIENTS

Default: ("app", "browser") Specifies supported client types:
Browser clients use CSRF tokens and cookies. App clients use token-based authentication.

HEADLESS_ADAPTER

Default: "allauth.headless.adapter.DefaultHeadlessAdapter" Customize headless behavior with a custom adapter:
Create a custom adapter:

Token Strategy Configuration

HEADLESS_TOKEN_STRATEGY

Default: "allauth.headless.tokens.strategies.sessions.SessionTokenStrategy" Choose your authentication token strategy:

JWT Token Configuration

When using JWT token strategy, configure these settings:

HEADLESS_JWT_ALGORITHM

Default: "RS256" The algorithm used to sign JWT tokens:

HEADLESS_JWT_PRIVATE_KEY

Default: "" The private key or secret for signing JWT tokens:
If not set with symmetric algorithms, SECRET_KEY is used as fallback.

HEADLESS_JWT_ACCESS_TOKEN_EXPIRES_IN

Default: 300 (5 minutes) Lifetime of access tokens in seconds:
Shorter lifetimes are more secure but require more frequent refreshes.

HEADLESS_JWT_REFRESH_TOKEN_EXPIRES_IN

Default: 86400 (24 hours) Lifetime of refresh tokens in seconds:

HEADLESS_JWT_AUTHORIZATION_HEADER_SCHEME

Default: "Bearer" HTTP Authorization header scheme:
Used as: Authorization: Bearer <access-token>

HEADLESS_JWT_STATEFUL_VALIDATION_ENABLED

Default: False Enable stateful JWT validation:
When enabled:
  • Access tokens are validated against active sessions
  • Logout immediately invalidates access tokens
  • Reduces the “stateless” benefit but improves security

HEADLESS_JWT_ROTATE_REFRESH_TOKEN

Default: True Rotate refresh tokens on access token refresh:
When enabled:
  • Each refresh request returns a new refresh token
  • The old refresh token is invalidated
  • Improves security by preventing refresh token reuse

OpenAPI Specification

HEADLESS_SERVE_SPECIFICATION

Default: False Serve OpenAPI specification files:
Requires installing: pip install "django-allauth[headless-spec]" Enables endpoints:
  • /_allauth/openapi.yaml - YAML format
  • /_allauth/openapi.json - JSON format
  • /_allauth/openapi.html - Interactive documentation

HEADLESS_SPECIFICATION_TEMPLATE_NAME

Default: "headless/spec/redoc_cdn.html" Template for HTML specification:

Account Configuration

These are standard django-allauth settings that affect headless behavior:

Email Verification

Login Methods

Login by Code

Password Reset

Complete Example Configuration

Here’s a production-ready configuration:

Next Steps