๐ง Claude AI Code EnhancementsMay 15, 2026โ
Tests passing
Claude Usage Monitor
A Python library and CLI tool to track usage of Claude AI's API in real-time, including requests per minute and usage against the increased limits. Designed to help developers optimize their API usage.
What It Does
- Fetch real-time usage data from the Claude API.
- Monitor API usage in real-time and receive alerts when usage exceeds a specified threshold.
- Generate usage reports over a specified time range, including CSV and graphical output.
Installation
Install the required dependencies using pip:
pip install requests pandas matplotlibUsage
CLI
#### Monitor Usage
Run the tool in monitoring mode to track usage in real-time:
python claude_usage_monitor.py --api-key YOUR_API_KEY --alert-threshold 80--api-key: Your Claude API key (required).--alert-threshold: Alert threshold percentage (default: 80).
#### Generate Report
Generate a usage report for the last N minutes:
python claude_usage_monitor.py --api-key YOUR_API_KEY --generate-report --time-range 60 --output-file usage_report.csv--api-key: Your Claude API key (required).--generate-report: Flag to generate a usage report.--time-range: Time range for the report in minutes (default: 60).--output-file: Output file for the report (default:usage_report.csv).
Library
You can also use the functions programmatically:
from claude_usage_monitor import fetch_usage, monitor_usage, generate_report
# Fetch usage data
usage_data = fetch_usage("YOUR_API_KEY")
# Monitor usage
monitor_usage("YOUR_API_KEY", alert_threshold=80)
# Generate a report
generate_report("YOUR_API_KEY", time_range=60, output_file="usage_report.csv")Source Code
import argparse
import requests
import time
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
def fetch_usage(api_key):
"""Fetch usage data from the Claude API."""
url = "https://api.claude.ai/usage"
headers = {"Authorization": f"Bearer {api_key}"}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f"Error fetching usage data: {e}")
return None
def monitor_usage(api_key, alert_threshold, max_iterations=5):
"""Monitor API usage in real-time and send alerts if threshold is exceeded."""
print("Starting real-time monitoring...")
iterations = 0
while iterations < max_iterations:
usage_data = fetch_usage(api_key)
if usage_data:
requests_per_minute = usage_data.get("requests_per_minute", 0)
usage_limit = usage_data.get("usage_limit", 100)
usage_percentage = (requests_per_minute / usage_limit) * 100
print(f"Requests per minute: {requests_per_minute}, Usage: {usage_percentage:.2f}%")
if usage_percentage >= alert_threshold:
print(f"ALERT: Usage exceeded {alert_threshold}% of the limit!")
time.sleep(1) # Reduced sleep time for testing purposes
iterations += 1
def generate_report(api_key, time_range, output_file):
"""Generate a usage report over a specified time range."""
print(f"Generating report for the last {time_range} minutes...")
end_time = datetime.now()
start_time = end_time - pd.Timedelta(minutes=time_range)
timestamps = []
usage_percentages = []
for _ in range(time_range):
usage_data = fetch_usage(api_key)
if usage_data:
requests_per_minute = usage_data.get("requests_per_minute", 0)
usage_limit = usage_data.get("usage_limit", 100)
usage_percentage = (requests_per_minute / usage_limit) * 100
timestamps.append(datetime.now())
usage_percentages.append(usage_percentage)
time.sleep(1) # Reduced sleep time for testing purposes
df = pd.DataFrame({"Timestamp": timestamps, "Usage Percentage": usage_percentages})
df.to_csv(output_file, index=False)
print(f"Report saved to {output_file}")
plt.plot(df["Timestamp"], df["Usage Percentage"], label="Usage Percentage")
plt.xlabel("Timestamp")
plt.ylabel("Usage Percentage")
plt.title("Claude API Usage Report")
plt.legend()
plt.savefig(output_file.replace(".csv", ".png"))
print(f"Graph saved to {output_file.replace('.csv', '.png')}")
def main():
parser = argparse.ArgumentParser(description="Claude Usage Monitor")
parser.add_argument("--api-key", required=True, help="API key for Claude AI")
parser.add_argument("--alert-threshold", type=int, default=80, help="Alert threshold percentage")
parser.add_argument("--generate-report", action="store_true", help="Generate usage report")
parser.add_argument("--time-range", type=int, default=60, help="Time range for report in minutes")
parser.add_argument("--output-file", default="usage_report.csv", help="Output file for the report")
args = parser.parse_args()
if args.generate_report:
generate_report(args.api_key, args.time_range, args.output_file)
else:
monitor_usage(args.api_key, args.alert_threshold)
if __name__ == "__main__":
main()
Community
Downloads
ยทยทยท
Rate this tool
No ratings yet โ be the first!
Details
- Tool Name
- claude_usage_monitor
- Category
- Claude AI Code Enhancements
- Generated
- May 15, 2026
- Tests
- Passing โ
- Fix Loops
- 2
Quick Install
Clone just this tool:
git clone --depth 1 --filter=blob:none --sparse \ https://github.com/ptulin/autoaiforge.git cd autoaiforge git sparse-checkout set generated_tools/2026-05-15/claude_usage_monitor cd generated_tools/2026-05-15/claude_usage_monitor pip install -r requirements.txt 2>/dev/null || true python claude_usage_monitor.py