The Stytch Management Python library makes it easy to use Stytch's Programmatic Workspace Actions API in Python applications.
This library requires Python 3.8 or later.
pip install stytch-managementYou need your Stytch Management API credentials from the workspace management section of your Stytch Dashboard.
Note: These credentials allow you to perform read and write actions on your workspace, potentially modifying or deleting important Stytch resources like projects, environments, or secrets.
from stytch_management import Client
# Set your Stytch Management API credentials
client = Client(
workspace_key_id="workspace-test-...",
workspace_key_secret="secret-test-..."
)response = client.projects.create(
name="My new project",
vertical="B2B"
)
new_project = response.project
print(f"Created project: {new_project.project_slug}")response = client.environments.get_all(
project_slug=new_project.project_slug
)
live_env = next((env for env in response.environments if env.type == "LIVE"), None)
print(f"Live environment: {live_env.environment_slug}")response = client.environments.create(
project_slug=new_project.project_slug,
name="My custom environment",
type="TEST"
)
custom_env = response.environment
print(f"Created environment: {custom_env.environment_slug}")response = client.secrets.create(
project_slug=new_project.project_slug,
environment_slug=live_env.environment_slug
)
secret = response.secret
print(f"Created secret: {secret.secret_id}")response = client.sdk.get_consumer_config(
project_slug=new_project.project_slug,
environment_slug=live_env.environment_slug
)
print("Consumer SDK config:", response.config)All request and response types are fully typed using Pydantic models. Import them from the models subpackages:
from stytch_management.models import projects, environments, secrets
# Responses are typed
response: projects.CreateResponse = client.projects.create(
name="My project",
vertical="B2B"
)from stytch_management import Client, StytchError, ClientError
client = Client(
workspace_key_id="workspace-test-...",
workspace_key_secret="secret-test-..."
)
try:
client.projects.get(project_slug="invalid-slug")
except StytchError as e:
print(f"Stytch error: {e.error_type}")
print(f"Message: {e.error_message}")
print(f"Request ID: {e.request_id}")
except ClientError as e:
print(f"Client error: {e.message}")This library includes comprehensive integration tests that verify functionality against the Stytch API. These tests create and clean up disposable projects and resources.
To run the tests, you need valid Stytch Management API credentials:
export STYTCH_WORKSPACE_KEY_ID="your-workspace-key-id"
export STYTCH_WORKSPACE_KEY_SECRET="your-workspace-key-secret"Important: Tests will be skipped if these environment variables are not set. The tests create real resources in your workspace but clean them up automatically.
# Install dependencies (if not already installed)
pip install -r requirements_dev.txt
# Run all tests
python -m unittest discover test/
# Run a specific test file
python test/test_secrets.pyThe test suite includes integration tests for:
- Email Templates - Create, get, update, delete, and default management
- Environments - Environment lifecycle with user locking and IDP configurations
- Secrets - Secret creation, retrieval, and deletion
- Public Tokens - Public token management
- JWT Templates - Session and M2M JWT template configuration
- Redirect URLs - URL validation and type management
- Password Strength Config - LUDS and ZXCVBN policy configuration
- Country Code Allowlist - SMS and WhatsApp country code management
Each test suite:
- ✓ Creates disposable projects/environments
- ✓ Tests all CRUD operations
- ✓ Validates error handling
- ✓ Cleans up all resources automatically
- ✓ Runs independently without side effects
Tests are designed to run in CI environments. Set the environment variables in your CI configuration:
# Example GitHub Actions
env:
STYTCH_WORKSPACE_KEY_ID: ${{ secrets.STYTCH_WORKSPACE_KEY_ID }}
STYTCH_WORKSPACE_KEY_SECRET: ${{ secrets.STYTCH_WORKSPACE_KEY_SECRET }}See DEVELOPMENT.md for information on building and testing the SDK.
See the full Stytch Management API documentation for more details on available endpoints and functionality.
If you've found a bug, open an issue!
If you have questions or want help troubleshooting, join us in Slack or email support@stytch.com.
If you've found a security vulnerability, please follow our responsible disclosure instructions.
MIT