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

Unified SDK Entrypoint: paygent_sdk.init(api_key) enables automatic patching for LLMs (OpenAI, Gemini, Anthropic) AND returns the paygent client object for manual tracking calls (send_usage, send_indicator, etc.).

Standalone Scripts: Paygent sends tracking events asynchronously on background threads so calling threads are never blocked. In short standalone test scripts (unlike web servers), add time.sleep(1) at the end to allow background HTTP requests to complete before the process exits.

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