Skip to navigation

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
import os
import paygent_sdk
from paygent_sdk import UsageData
from openai import OpenAI
# Initialize Paygent SDK
paygent = paygent_sdk.init(api_key=os.getenv("PAYGENT_API_KEY"))
openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Make OpenAI API call
response = openai_client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Explain quantum physics"}]
)
# Extract usage data
usage = response.usage
cached_tokens = 0
if hasattr(usage, 'prompt_tokens_details'):
cached_tokens = usage.prompt_tokens_details.cached_tokens or 0
# Track with Paygent
usage_data = UsageData(
service_provider="OpenAI",
model=response.model,
prompt_tokens=usage.prompt_tokens,
completion_tokens=usage.completion_tokens,
cached_tokens=cached_tokens,
total_tokens=usage.total_tokens
)
paygent.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
import os
import paygent_sdk
from paygent_sdk import UsageData
import google.generativeai as genai
paygent = paygent_sdk.init(api_key=os.getenv("PAYGENT_API_KEY"))
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
# Make Gemini API call
model = genai.GenerativeModel('gemini-2.0-flash-exp')
response = model.generate_content('Write a poem about AI')
# Extract usage data
metadata = response.usage_metadata
# Track with Paygent
usage_data = UsageData(
service_provider="Google DeepMind",
model="gemini-2.0-flash-exp",
prompt_tokens=metadata.prompt_token_count,
completion_tokens=metadata.candidates_token_count,
total_tokens=metadata.total_token_count
)
paygent.send_usage("content-gen", "customer-789", "poem-created", usage_data)