Manual Tracking

Manual tracking gives you full control when you already know the exact token counts. Use manual tracking when:

  • ✓ You’re calling AI APIs directly and have access to usage data
  • ✓ You want maximum control over what’s reported
  • ✓ You’re tracking non-OpenAI models or custom services
  • ✓ You have your own token counting logic

Example: OpenAI Integration

manual_openai.py
1from paygent_sdk import Client, UsageData
2import os
3from openai import OpenAI
4
5paygent = Client.new_client(os.getenv("PAYGENT_API_KEY"))
6openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
7
8# Make OpenAI API call
9response = openai_client.chat.completions.create(
10 model="gpt-4o",
11 messages=[{"role": "user", "content": "Explain quantum physics"}]
12)
13
14# Extract usage data
15usage = response.usage
16cached_tokens = 0
17if hasattr(usage, 'prompt_tokens_details'):
18 cached_tokens = usage.prompt_tokens_details.cached_tokens or 0
19
20# Track with Paygent
21usage_data = UsageData(
22 service_provider="OpenAI",
23 model=response.model,
24 prompt_tokens=usage.prompt_tokens,
25 completion_tokens=usage.completion_tokens,
26 cached_tokens=cached_tokens,
27 total_tokens=usage.total_tokens
28)
29
30paygent.send_usage("qa-agent", "customer-456", "question-answered", usage_data)

Automate Onboarding. To simplify your workflow, call client.create_or_get_customer() before tracking usage. This ensures the customer exists in Paygent without needing manual setup in the dashboard.

Example: Gemini Integration

manual_gemini.py
1from paygent_sdk import Client, UsageData
2import os
3import google.generativeai as genai
4
5paygent = Client.new_client(os.getenv("PAYGENT_API_KEY"))
6genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
7
8# Make Gemini API call
9model = genai.GenerativeModel('gemini-2.0-flash-exp')
10response = model.generate_content('Write a poem about AI')
11
12# Extract usage data
13metadata = response.usage_metadata
14
15# Track with Paygent
16usage_data = UsageData(
17 service_provider="Google DeepMind",
18 model="gemini-2.0-flash-exp",
19 prompt_tokens=metadata.prompt_token_count,
20 completion_tokens=metadata.candidates_token_count,
21 total_tokens=metadata.total_token_count
22)
23
24paygent.send_usage("content-gen", "customer-789", "poem-created", usage_data)