Official Auth0 SDK for Python. Current version is 5.0.0 (Feb 2026). Three separate API generations exist (v3, v4, v5) with incompatible import paths and response types. The 'auth0.v3' namespace was removed in v4. v5 rewrites the Management API responses from dicts to Pydantic models. Enormous tutorial and LLM corpus still references auth0.v3 imports.
Install & Compatibility
Where this runs
tested against v5.6.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.925 runs
installs and imports cleanly · install 0.0s · import 1.321s · 96.1MB
glibcpy 3.10–3.925 runs
installs and imports cleanly · install 9.4s · import 1.202s · 97MB
96MB installed
● package 96MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ManagementClient
✓ from auth0.management import ManagementClient
✗ from auth0.v3.management import Auth0
auth0.v3 namespace was removed in v4. 'from auth0.v3.*' raises ModuleNotFoundError on any version >= 4.0. This is the single most common error in LLM-generated auth0 code.
GetToken
✓ from auth0.authentication import GetToken
✗ from auth0.v3.authentication import GetToken
Same v3 namespace removal. Authentication API import path is now auth0.authentication (no version segment).
Management API access using v5 ManagementClient with client credentials.
from auth0.authentication import GetToken
from auth0.management import ManagementClient
domain = 'your-tenant.auth0.com'
# Option A: ManagementClient with client credentials (auto token refresh)
client = ManagementClient(
domain=domain,
client_id='YOUR_CLIENT_ID',
client_secret='YOUR_CLIENT_SECRET',
)
# v5: responses are Pydantic models, not dicts
user = client.users.get('auth0|123456')
print(user.email) # attribute access, not user['email']
# Option B: manual token then client
token_client = GetToken(
domain=domain,
client_id='YOUR_CLIENT_ID',
client_secret='YOUR_CLIENT_SECRET',
)
tokens = token_client.client_credentials(
audience=f'https://{domain}/api/v2/'
)
client2 = ManagementClient(domain=domain, token=tokens['access_token'])
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'auth0.v3'
The 'auth0.v3' namespace was removed in version 4.0 of the auth0-python library.
fixUpdate import statements to use the new structure without 'v3', e.g., 'from auth0.authentication import GetToken'.
ImportError: cannot import name 'Auth0' from 'auth0.v3.management'
The 'auth0.v3' namespace was removed in version 4.0 of the auth0-python library.
fixUpdate import statements to use the new structure without 'v3', e.g., 'from auth0.management import Auth0'.
AttributeError: module 'auth0' has no attribute 'v3'
The 'auth0.v3' namespace was removed in version 4.0 of the auth0-python library.
fixUpdate import statements to use the new structure without 'v3', e.g., 'from auth0.authentication import GetToken'.
TypeError: 'dict' object is not callable
In version 5.0.0, Management API responses were changed from dictionaries to Pydantic models, affecting how responses are accessed.
fixUpdate code to access attributes of the Pydantic models directly, e.g., 'response.attribute_name' instead of 'response['attribute_name']'.
TypeError: 'User' object is not subscriptable
In version 5.0.0, Management API responses were changed from dictionaries to Pydantic models, making them non-subscriptable.
fixAccess attributes directly using dot notation, e.g., 'user.id' instead of 'user['id']'.
Audit
Dependencies
pydanticrequiredRequired in v5 — Management API responses are now Pydantic models. Auto-installed.
aiohttpoptionalRequired for AsyncManagementClient. Not auto-installed.