Documentation Index
Fetch the complete documentation index at: https://docs.limitly.dev/llms.txt
Use this file to discover all available pages before exploring further.
The Limitly Python SDK provides comprehensive user management capabilities for your application.
Creating Users
Create new user accounts:
from limitly import Limitly
limitly = Limitly(api_key="your_limitly_api_key")
# Create a new user
new_user = limitly.users.create({
"email": "user@example.com",
"name": "John Doe",
"metadata": {
"company": "Example Corp",
"role": "developer"
}
})
print(f"New user created: {new_user.id}")
Listing Users
Retrieve all users in your application:
# Get all users
users = limitly.users.list({
"limit": 10,
"offset": 0
})
print(f"Users: {users.data}")
Getting User Details
Get detailed information about a specific user:
# Get user details
user = limitly.users.get("user_123")
print("User details:", {
"id": user.id,
"email": user.email,
"name": user.name,
"status": user.status,
"created_at": user.created_at,
"metadata": user.metadata
})
Updating Users
Update user properties:
# Update a user
updated_user = limitly.users.update("user_123", {
"name": "John Smith",
"metadata": {
"company": "Updated Corp",
"role": "senior_developer",
"updated_at": "2024-01-01T00:00:00Z"
}
})
print(f"Updated user: {updated_user}")
Deleting Users
Delete user accounts when they’re no longer needed:
# Delete a user
limitly.users.delete("user_123")
print("User deleted successfully")
User Usage
Get usage statistics for a user:
# Get user usage
usage = limitly.users.get_usage("user_123", {
"start_date": "2024-01-01",
"end_date": "2024-01-31"
})
print("User usage:", {
"total_requests": usage.total_requests,
"successful_requests": usage.successful_requests,
"failed_requests": usage.failed_requests,
"average_response_time": usage.average_response_time,
"total_api_keys": usage.total_api_keys
})
User API Keys
Get all API keys associated with a user:
# Get user API keys
api_keys = limitly.users.get_api_keys("user_123", {
"limit": 10,
"offset": 0
})
print(f"User API keys: {api_keys.data}")
FastAPI Example
Here’s a complete example of user management in a FastAPI application:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from limitly import Limitly
app = FastAPI()
limitly = Limitly(api_key=os.getenv("LIMITLY_API_KEY"))
class CreateUserRequest(BaseModel):
email: str
name: str
metadata: dict = {}
@app.post("/api/users")
async def create_user(request: CreateUserRequest):
try:
new_user = limitly.users.create({
"email": request.email,
"name": request.name,
"metadata": request.metadata
})
return {
"success": True,
"user": new_user
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/api/users")
async def list_users(limit: int = 10, offset: int = 0):
try:
users = limitly.users.list({
"limit": limit,
"offset": offset
})
return {
"success": True,
"users": users.data,
"pagination": {
"total": users.total,
"limit": users.limit,
"offset": users.offset
}
}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Flask Example
Here’s a complete example of user management in a Flask application:
from flask import Flask, request, jsonify
from limitly import Limitly
app = Flask(__name__)
limitly = Limitly(api_key=os.getenv("LIMITLY_API_KEY"))
@app.route("/api/users", methods=["POST"])
def create_user():
try:
data = request.get_json()
new_user = limitly.users.create({
"email": data["email"],
"name": data["name"],
"metadata": data.get("metadata", {})
})
return jsonify({
"success": True,
"user": new_user
})
except Exception as e:
return jsonify({
"success": False,
"error": str(e)
}), 500
@app.route("/api/users", methods=["GET"])
def list_users():
try:
limit = int(request.args.get("limit", 10))
offset = int(request.args.get("offset", 0))
users = limitly.users.list({
"limit": limit,
"offset": offset
})
return jsonify({
"success": True,
"users": users.data,
"pagination": {
"total": users.total,
"limit": users.limit,
"offset": users.offset
}
})
except Exception as e:
return jsonify({
"success": False,
"error": str(e)
}), 500
User Status Management
Manage user account status:
# Activate a user
limitly.users.update("user_123", {
"status": "active"
})
# Suspend a user
limitly.users.update("user_123", {
"status": "suspended"
})
# Deactivate a user
limitly.users.update("user_123", {
"status": "inactive"
})
User Search
Search for users by various criteria:
# Search users by email
users = limitly.users.list({
"email": "user@example.com"
})
# Search users by metadata
users = limitly.users.list({
"metadata": {
"company": "Example Corp"
}
})
Error Handling
Handle user management errors:
from limitly import Limitly, LimitlyError
limitly = Limitly(api_key=os.getenv("LIMITLY_API_KEY"))
try:
user = limitly.users.create({
"email": "user@example.com",
"name": "John Doe"
})
print(f"User created: {user.id}")
except LimitlyError as e:
if "Email already exists" in str(e):
print("User with this email already exists")
elif "Invalid email" in str(e):
print("Invalid email format")
else:
print(f"Unexpected error: {e}")
except Exception as e:
print(f"Unexpected error: {e}")
User Types
The SDK supports different types of users:
- Regular Users: Standard user accounts
- Admin Users: Administrative accounts with extended privileges
- Service Users: System accounts for automated processes
- Trial Users: Limited-time accounts for testing
Store custom data with user accounts:
user = limitly.users.create({
"email": "user@example.com",
"name": "John Doe",
"metadata": {
"company": "Example Corp",
"department": "Engineering",
"role": "developer",
"preferences": {
"notifications": True,
"theme": "dark"
}
}
})
CLI Management
Use the CLI tool for user management:
# Create a user
limitly users create --email user@example.com --name "John Doe"
# List users
limitly users list
# Get user details
limitly users get --user-id user_123
# Update a user
limitly users update --user-id user_123 --name "John Smith"
# Delete a user
limitly users delete --user-id user_123
User Analytics
Get analytics for user behavior:
# Get user usage analytics
analytics = limitly.users.get_analytics("user_123", {
"start_date": "2024-01-01",
"end_date": "2024-01-31",
"metrics": ["requests", "errors", "response_time"]
})
print("User analytics:", analytics)
Next Steps