Query Usage and Credits

Project: Query Usage and Credits

User Intent

"I want to check my project usage and remaining credits"

Operation

  • SDK Method: graphlit.queryProjectUsage() or graphlit.queryProjectCredits()

  • GraphQL: queryProjectUsage or queryProjectCredits query

  • Entity Type: Project

  • Common Use Cases: Monitor usage, check credits, track API consumption, billing analysis

TypeScript (Canonical)

import { Graphlit } from 'graphlit-client';
import { Types } from 'graphlit-client/dist/generated/graphql-types';

const graphlit = new Graphlit();

// Query usage for date range
const startDate = new Date('2024-01-01');
const endDate = new Date();

const usageResponse = await graphlit.queryProjectUsage(
  startDate,
  endDate
);

console.log('=== PROJECT USAGE ===');
console.log(`Period: ${startDate.toLocaleDateString()} - ${endDate.toLocaleDateString()}`);
console.log(`\nAPI Calls: ${usageResponse.usage?.length || 0} records`);

// Show usage breakdown
usageResponse.usage?.forEach(record => {
  console.log(`\n${record.date}:`);
  console.log(`  Tokens: ${record.tokens || 0}`);
  console.log(`  Storage: ${record.storage || 0} bytes`);
});

// Query remaining credits
const creditsResponse = await graphlit.queryProjectCredits();

console.log('\n=== CREDITS ===');
console.log(`Remaining: $${creditsResponse.credits?.remaining || 0}`);
console.log(`Total: $${creditsResponse.credits?.total || 0}`);
console.log(`Used: $${(creditsResponse.credits?.total || 0) - (creditsResponse.credits?.remaining || 0)}`);

Query usage (snake_case)

start_date = datetime(2024, 1, 1) end_date = datetime.now()

usage_response = await graphlit.queryProjectUsage( start_date=start_date, end_date=end_date )

print("=== PROJECT USAGE ===") print(f"API Calls: {len(usage_response.usage or [])}")

Query credits

credits_response = await graphlit.queryProjectCredits()

print("\n=== CREDITS ===") print(f"Remaining: ${credits_response.credits.remaining or 0}") print(f"Total: ${credits_response.credits.total or 0}")


**C#**:
```csharp
using Graphlit;

var client = new Graphlit();

// Query usage (PascalCase)
var startDate = new DateTime(2024, 1, 1);
var endDate = DateTime.Now;

var usageResponse = await graphlit.QueryProjectUsage(
    startDate: startDate,
    endDate: endDate
);

Console.WriteLine("=== PROJECT USAGE ===");
Console.WriteLine($"API Calls: {usageResponse.Usage?.Count ?? 0}");

// Query credits
var creditsResponse = await graphlit.QueryProjectCredits();

Console.WriteLine("\n=== CREDITS ===");
Console.WriteLine($"Remaining: ${creditsResponse.Credits?.Remaining ?? 0}");
Console.WriteLine($"Total: ${creditsResponse.Credits?.Total ?? 0}");

Parameters

queryProjectUsage

  • startDate (Date): Start of date range

  • endDate (Date): End of date range

queryProjectCredits

  • No parameters required

Response

queryProjectUsage

{
  usage: UsageRecord[];
}

interface UsageRecord {
  date: string;
  tokens: number;
  storage: number;
  // Other usage metrics
}

queryProjectCredits

{
  credits: {
    remaining: number;  // Remaining credits ($)
    total: number;      // Total credits ($)
  }
}

Developer Hints

Usage Tracking

Important: Usage is tracked by date. Query specific date ranges for analysis.

// Current month usage
const now = new Date();
const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);

const monthUsage = await graphlit.queryProjectUsage(
  startOfMonth,
  now
);

console.log(`Current month usage: ${monthUsage.usage?.length || 0} records`);

Credit Monitoring

// Check if running low on credits
const credits = await graphlit.queryProjectCredits();
const remaining = credits.credits?.remaining || 0;

if (remaining < 10) {
  console.log(' Low credits! Add more to continue.');
} else {
  console.log(` Credits remaining: $${remaining}`);
}

Usage Analysis

// Analyze usage over time
const usage = await graphlit.queryProjectUsage(
  new Date('2024-01-01'),
  new Date()
);

const totalTokens = usage.usage?.reduce((sum, record) => 
  sum + (record.tokens || 0), 0
) || 0;

const totalStorage = usage.usage?.reduce((sum, record) => 
  sum + (record.storage || 0), 0
) || 0;

console.log(`Total tokens: ${totalTokens.toLocaleString()}`);
console.log(`Total storage: ${(totalStorage / 1024 / 1024).toFixed(2)} MB`);

Variations

1. Check Current Credits

Get credit balance:

const credits = await graphlit.queryProjectCredits();

console.log(`Credits remaining: $${credits.credits?.remaining || 0}`);

2. Current Month Usage

This month's usage:

const now = new Date();
const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);

const usage = await graphlit.queryProjectUsage(startOfMonth, now);

console.log(`This month: ${usage.usage?.length || 0} usage records`);

3. Last 30 Days Usage

Recent usage:

const endDate = new Date();
const startDate = new Date();
startDate.setDate(startDate.getDate() - 30);

const usage = await graphlit.queryProjectUsage(startDate, endDate);

console.log(`Last 30 days: ${usage.usage?.length || 0} records`);

4. Yearly Usage Report

Full year analysis:

const year = 2024;
const startDate = new Date(year, 0, 1);
const endDate = new Date(year, 11, 31);

const usage = await graphlit.queryProjectUsage(startDate, endDate);

console.log(`${year} Usage:`);
console.log(`Records: ${usage.usage?.length || 0}`);

5. Usage Alert System

Monitor and alert:

async function checkUsageAndCredits() {
  // Check credits
  const credits = await graphlit.queryProjectCredits();
  const remaining = credits.credits?.remaining || 0;
  
  if (remaining < 10) {
    console.log('🚨 ALERT: Low credits!');
    console.log(`Only $${remaining} remaining`);
    // Send alert email/notification
  }
  
  // Check recent usage
  const last7Days = new Date();
  last7Days.setDate(last7Days.getDate() - 7);
  
  const usage = await graphlit.queryProjectUsage(last7Days, new Date());
  const recordCount = usage.usage?.length || 0;
  
  if (recordCount > 1000) {
    console.log(' High usage detected in last 7 days');
    console.log(`Records: ${recordCount}`);
  }
}

await checkUsageAndCredits();

6. Monthly Cost Report

Generate cost report:

async function generateMonthlyCostReport(year: number, month: number) {
  const startDate = new Date(year, month, 1);
  const endDate = new Date(year, month + 1, 0);
  
  const usage = await graphlit.queryProjectUsage(startDate, endDate);
  const credits = await graphlit.queryProjectCredits();
  
  console.log(`=== COST REPORT: ${startDate.toLocaleString('default', { month: 'long' })} ${year} ===\n`);
  
  const totalTokens = usage.usage?.reduce((sum, r) => sum + (r.tokens || 0), 0) || 0;
  const totalStorage = usage.usage?.reduce((sum, r) => sum + (r.storage || 0), 0) || 0;
  
  console.log(`Tokens Used: ${totalTokens.toLocaleString()}`);
  console.log(`Storage Used: ${(totalStorage / 1024 / 1024).toFixed(2)} MB`);
  console.log(`\nCredits Remaining: $${credits.credits?.remaining || 0}`);
  console.log(`Total Credits: $${credits.credits?.total || 0}`);
}

await generateMonthlyCostReport(2024, 0); // January 2024

Common Issues

Issue: No usage data returned Solution: Check date range is correct. Usage may not be recorded for future dates or very old dates.

Issue: Credits show zero Solution: Add credits to your project in the Graphlit Developer Portal.

Issue: Usage seems incomplete Solution: Usage is recorded periodically. Recent usage may not appear immediately.

Production Example

Usage monitoring dashboard:

async function usageDashboard() {
  console.log('=== GRAPHLIT USAGE DASHBOARD ===\n');
  
  // Current credits
  const credits = await graphlit.queryProjectCredits();
  const remaining = credits.credits?.remaining || 0;
  const total = credits.credits?.total || 0;
  const used = total - remaining;
  const percentUsed = total > 0 ? (used / total * 100).toFixed(1) : 0;
  
  console.log(' CREDITS:');
  console.log(`   Total: $${total}`);
  console.log(`   Used: $${used} (${percentUsed}%)`);
  console.log(`   Remaining: $${remaining}\n`);
  
  // This month usage
  const now = new Date();
  const startOfMonth = new Date(now.getFullYear(), now.getMonth(), 1);
  const monthUsage = await graphlit.queryProjectUsage(startOfMonth, now);
  
  const monthTokens = monthUsage.usage?.reduce((sum, r) => 
    sum + (r.tokens || 0), 0
  ) || 0;
  
  console.log(' THIS MONTH:');
  console.log(`   API Calls: ${monthUsage.usage?.length || 0}`);
  console.log(`   Tokens: ${monthTokens.toLocaleString()}\n`);
  
  // Last 7 days
  const last7Days = new Date();
  last7Days.setDate(last7Days.getDate() - 7);
  const weekUsage = await graphlit.queryProjectUsage(last7Days, now);
  
  console.log('📈 LAST 7 DAYS:');
  console.log(`   API Calls: ${weekUsage.usage?.length || 0}`);
  
  // Alerts
  if (remaining < 10) {
    console.log('\n🚨 ALERT: Low credits! Add more to continue.');
  }
  
  if ((weekUsage.usage?.length || 0) > 500) {
    console.log('\n High usage detected this week');
  }
}

await usageDashboard();

Last updated

Was this helpful?