Python library for Runpod API and serverless worker SDK.
—
Credential management, API authentication, and configuration utilities for managing multiple profiles and environments. Includes user account management and SSH key configuration for secure access to RunPod resources.
Secure storage and management of API credentials with support for multiple profiles and environments.
def set_credentials(
api_key: str,
profile: str = "default"
) -> None:
"""
Set API credentials for authentication.
Parameters:
- api_key: RunPod API key for authentication
- profile: Profile name for storing credentials (default: "default")
Credentials are stored securely in ~/.runpod/config.toml
"""
def get_credentials(profile: str = "default") -> dict:
"""
Get stored API credentials for a profile.
Parameters:
- profile: Profile name to retrieve (default: "default")
Returns:
dict: Credentials dictionary with api_key, or None if not found
Example: {"api_key": "your-api-key"}
"""
def check_credentials(profile: str = "default") -> bool:
"""
Check if API credentials are valid and working.
Parameters:
- profile: Profile name to check (default: "default")
Returns:
bool: True if credentials are valid, False otherwise
"""User profile and account settings management including SSH key configuration and account information retrieval.
def get_user() -> dict:
"""
Get current user information and account details.
Returns:
dict: User information including account status, limits, and settings
Example:
{
"id": "user-123",
"email": "user@example.com",
"credits": 100.50,
"spendLimit": 500.00,
"notificationSettings": {...}
}
"""
def update_user_settings(pubkey: str) -> dict:
"""
Update user settings with SSH public key.
Parameters:
- pubkey: SSH public key for pod access
Returns:
dict: Updated user settings confirmation
"""import runpod
# Set API credentials for default profile
runpod.set_credentials("your-api-key-here")
# Verify credentials work
if runpod.check_credentials():
print("Credentials are valid!")
else:
print("Invalid credentials")
# Get current credentials
creds = runpod.get_credentials()
if creds:
print(f"API key configured: {creds['api_key'][:8]}...")
else:
print("No credentials found")import runpod
# Set up multiple profiles for different environments
runpod.set_credentials("prod-api-key", profile="production")
runpod.set_credentials("dev-api-key", profile="development")
runpod.set_credentials("test-api-key", profile="testing")
# Check each profile
profiles = ["production", "development", "testing"]
for profile in profiles:
is_valid = runpod.check_credentials(profile)
print(f"{profile}: {'✓' if is_valid else '✗'}")
# Use specific profile
runpod.profile = "development"
dev_creds = runpod.get_credentials("development")import runpod
# Set credentials first
runpod.set_credentials("your-api-key")
# Get user information
user_info = runpod.get_user()
print(f"User: {user_info['email']}")
print(f"Credits: ${user_info['credits']:.2f}")
print(f"Spend Limit: ${user_info['spendLimit']:.2f}")
# Update SSH key for pod access
ssh_public_key = open("~/.ssh/id_rsa.pub").read().strip()
result = runpod.update_user_settings(
public_key=ssh_public_key,
spend_limit=1000.00,
notification_email="alerts@mycompany.com"
)
print("Settings updated:", result)import runpod
import os
def configure_runpod():
"""Configure RunPod based on environment."""
# Check for environment variable first
api_key = os.environ.get("RUNPOD_API_KEY")
if api_key:
print("Using API key from environment")
runpod.set_credentials(api_key)
else:
# Try to load from stored credentials
creds = runpod.get_credentials()
if not creds:
raise ValueError("No API key found. Set RUNPOD_API_KEY or use runpod.set_credentials()")
# Verify credentials
if not runpod.check_credentials():
raise ValueError("Invalid API credentials")
print("RunPod configured successfully")
return True
# Usage in application
try:
configure_runpod()
# Now you can use RunPod API
pods = runpod.get_pods()
print(f"Found {len(pods)} pods")
except Exception as e:
print(f"Configuration failed: {e}")import runpod
class RunPodManager:
"""Manage RunPod configurations with profile switching."""
def __init__(self, default_profile="default"):
self.current_profile = default_profile
self.profiles = {}
def add_profile(self, name, api_key):
"""Add a new profile."""
runpod.set_credentials(api_key, profile=name)
self.profiles[name] = api_key
print(f"Added profile: {name}")
def switch_profile(self, profile_name):
"""Switch to a different profile."""
if profile_name not in self.profiles:
creds = runpod.get_credentials(profile_name)
if not creds:
raise ValueError(f"Profile '{profile_name}' not found")
# Update global profile
runpod.profile = profile_name
self.current_profile = profile_name
# Verify the switch worked
if runpod.check_credentials(profile_name):
print(f"Switched to profile: {profile_name}")
else:
raise ValueError(f"Invalid credentials for profile: {profile_name}")
def list_profiles(self):
"""List all available profiles."""
print("Available profiles:")
for profile in self.profiles:
status = "✓" if runpod.check_credentials(profile) else "✗"
current = " (current)" if profile == self.current_profile else ""
print(f" {profile}: {status}{current}")
# Usage
manager = RunPodManager()
# Add profiles
manager.add_profile("production", "prod-api-key")
manager.add_profile("staging", "staging-api-key")
# Switch between environments
manager.switch_profile("production")
prod_pods = runpod.get_pods()
manager.switch_profile("staging")
staging_pods = runpod.get_pods()
# List all profiles
manager.list_profiles()import runpod
# Access global configuration variables
print(f"Current profile: {runpod.profile}")
print(f"API key set: {'Yes' if runpod.api_key else 'No'}")
print(f"SSH key path: {runpod.SSH_KEY_PATH}")
print(f"Endpoint base URL: {runpod.endpoint_url_base}")
# Modify global settings
runpod.profile = "production"
# Custom endpoint URL (for testing or enterprise)
import os
os.environ["RUNPOD_ENDPOINT_BASE_URL"] = "https://api.custom-runpod.com/v2"
# Force reload of global variables
import importlib
importlib.reload(runpod)
print(f"New endpoint URL: {runpod.endpoint_url_base}")import runpod
import sys
def validate_configuration():
"""Comprehensive configuration validation."""
issues = []
# Check API key
if not runpod.api_key:
issues.append("No API key configured")
elif not runpod.check_credentials():
issues.append("Invalid API key")
# Check user account
try:
user = runpod.get_user()
if user.get("credits", 0) < 1:
issues.append("Low account credits")
except Exception as e:
issues.append(f"Cannot access user account: {e}")
# Check SSH key path
import os
if not os.path.exists(runpod.SSH_KEY_PATH):
issues.append(f"SSH key directory not found: {runpod.SSH_KEY_PATH}")
# Report results
if issues:
print("Configuration issues found:")
for issue in issues:
print(f" ⚠️ {issue}")
return False
else:
print("✅ Configuration is valid")
return True
# Run validation
if __name__ == "__main__":
if not validate_configuration():
sys.exit(1)
print("Ready to use RunPod!")Install with Tessl CLI
npx tessl i tessl/pypi-runpod