use std::env;
use reqwest::blocking::Client;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
struct UsageReportDay {
day: String,
total_cost: f64,
input_tokens: u64,
output_tokens: u64,
request_count: u64,
}
#[derive(Debug, Deserialize)]
struct UsageReportOutput {
results: Vec<UsageReportDay>,
period: String,
start_date: String,
end_date: String,
timestamp: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let api_key = env::var("SWARMS_API_KEY")
.expect("SWARMS_API_KEY environment variable is required");
let client = Client::new();
let response = client
.get("https://api.swarms.world/v1/usage/report?period=week")
.header("x-api-key", &api_key)
.header("Content-Type", "application/json")
.send()?;
let data: UsageReportOutput = response.json()?;
println!("Period: {}", data.period);
println!("Range: {} to {}", data.start_date, data.end_date);
println!("Days with activity: {}\n", data.results.len());
for day in &data.results {
println!(
" {}: cost=${:.4}, in={}, out={}, reqs={}",
day.day, day.total_cost, day.input_tokens,
day.output_tokens, day.request_count,
);
}
Ok(())
}