All Toolsโ€บClaude Usage Monitor
๐Ÿ”ง 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 matplotlib

Usage

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
Claude Usage Monitor โ€” AI Tools by AutoAIForge