Skip to main content

AI Provider Tracker

PyPI version Python versions License: MIT

AI Provider Tracker is a Python library for tracking AI provider usage and estimating per-generation costs across heterogeneous providers.

It is designed for apps that already call providers such as FAL.AI and OpenRouter, but need a centralized way to:

  • normalize usage metadata
  • calculate request/generation costs
  • store raw request/response payloads for auditability
  • persist optional local analytics in SQLite
  • use bundled pricing snapshots without calling pricing APIs at runtime

Installation

pip install ai-provider-tracker

Optional FastAPI dependencies for the legacy model registry API:

pip install "ai-provider-tracker[api]"

Cost Tracking

Use your provider SDK as usual, then pass the request and response to the tracker.

from ai_provider_tracker import CostTracker

tracker = CostTracker()

event = tracker.track_generation(
    provider="fal",
    model="fal-ai/flux/dev",
    request={"prompt": "A cyberpunk city", "num_images": 2},
    response={"images": [{"url": "a"}, {"url": "b"}]},
)

print(event.cost.total)       # 0.050
print(event.cost.source)      # public_snapshot
print(event.cost.confidence)  # high
print(event.cost.breakdown)

Enable local SQLite persistence:

tracker = CostTracker(sqlite_path="ai_usage.sqlite")

This stores generation events with normalized usage, cost breakdown, raw request, raw response, and metadata.

OpenRouter

For OpenRouter, provider-reported usage cost is preferred when present:

event = tracker.track_generation(
    provider="openrouter",
    model="anthropic/claude-sonnet-4.5",
    request={"messages": [{"role": "user", "content": "Hello"}]},
    response={
        "usage": {
            "prompt_tokens": 1200,
            "completion_tokens": 800,
            "cost": "0.015",
        }
    },
)

print(event.cost.total)   # provider-reported cost
print(event.cost.source)  # provider_reported

If usage.cost is not present, the tracker falls back to token-based calculation using the bundled pricing catalog when possible.

Pricing Catalog

The package ships with a bundled JSON pricing catalog:

ai_provider_tracker/data/pricing_catalog.json

Runtime requests do not call pricing APIs. Pricing sync is handled by:

python scripts/sync_pricing_catalog.py

The GitHub Actions workflow .github/workflows/pricing_sync.yml runs daily and commits the catalog only when prices actually change.

Legacy Model Registry

This package still includes the original OpenRouter model registry APIs:

from ai_provider_tracker import LLMIndexSync

client = LLMIndexSync(mode="json")
models = client.get_cheapest(limit=5)

The old import path remains available temporarily:

from openrouter_insights import CostTracker

New code should use:

from ai_provider_tracker import CostTracker

Accuracy Contract

Cost values are intended for product analytics, internal attribution, and budget monitoring.

  • FAL.AI costs are locally estimated from pricing snapshots and normalized request/response metadata.
  • OpenRouter costs use provider-reported cost when available.
  • Public bundled pricing is a reference snapshot, not a guarantee of account-specific billing.

For invoice-grade accounting, reconcile against provider billing/usage APIs.

License

MIT

Release files for ai-provider-tracker 0.7.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-provider-tracker 0.7.5
File Size Uploaded
ai_provider_tracker-0.7.5.tar.gz 21.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-provider-tracker 0.7.5
File Interpreter ABI Platform
ai_provider_tracker-0.7.5-py3-none-any.whl Python 3 none any Details

Total release size: 53.5 kB

Release files / ai_provider_tracker-0.7.5.tar.gz

Download URL ai_provider_tracker-0.7.5.tar.gz
Size 21.9 kB
Tags Source
SHA-256 checksum
How to use checksums
d1e3968c06df11aba743ed768f44b570b159038ecd2fb1c418705d67e37c208f
BLAKE2b-256 checksum
How to use checksums
bf6eb17d2cebbb7e5f2db90de24e63cb407a09b8e0b73e079541caa94b4df363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-1013-azure

Release files / ai_provider_tracker-0.7.5-py3-none-any.whl

Download URL ai_provider_tracker-0.7.5-py3-none-any.whl
Size 31.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f43dc5fd143adaa4539b709a93c41d7ec774a3ee79ec92a02d024ed2cf42b73e
BLAKE2b-256 checksum
How to use checksums
2583265c5bf7418424e1025d7c675454b46bfecca4feaba9d8392225ee09fbdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.12.3 Linux/6.17.0-1013-azure

Release history Release notifications | RSS feed

This release

0.7.5 This release

2 release files

0.7.4

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page