Skip to main content

Python client for ModelPricing.ai cost estimates

Project description

modelpricing-ai

Python client for the ModelPricing.ai API — estimate LLM usage costs with a single call.

Installation

pip install modelpricing-ai

Quick Start

from modelpricing_ai import ModelPricingClient

client = ModelPricingClient(api_key="YOUR_API_KEY")

estimate = client.estimate(
    model="gpt-4o-mini",
    tokens_in=1000,
    tokens_out=500,
    trace_id={"requestId": "abc-123"},
)
print(f"Cost: ${estimate.total:.6f}")

Async Usage

import asyncio
from modelpricing_ai import AsyncModelPricingClient

async def main():
    client = AsyncModelPricingClient(api_key="YOUR_API_KEY")
    estimate = await client.estimate(
        model="gpt-4o-mini",
        tokens_in=1000,
        tokens_out=500,
        trace_id={"requestId": "abc-123"},
    )
    print(f"Cost: ${estimate.total:.6f}")

asyncio.run(main())

Response Structure

Both estimate() and await estimate() return an EstimateResponse object:

estimate.total        # float — total USD cost
estimate.model        # str   — canonical model name
estimate.traceId      # dict | None — your pass-through trace ID
estimate.breakdown    # EstimateBreakdownGroup
  .input              # EstimateBreakdown
    .unit             #   str   — e.g. "token"
    .branch           #   str   — pricing tier that matched
    .qty              #   int   — number of input tokens
    .rate             #   float — per-unit rate
    .subtotal         #   float — input cost
  .output             # EstimateBreakdown (same fields for output tokens)

Configuration

Parameter Default Description
api_key required Your ModelPricing.ai API key (also reads MODELPRICING_API_KEY env var)
base_url "https://api.modelpricing.ai" API base URL (also reads MODELPRICING_BASE_URL env var)
timeout 30.0 Request timeout in seconds
max_retries 3 Maximum retry attempts for transient errors
session None Optional requests.Session (sync) or aiohttp.ClientSession (async)
client = ModelPricingClient(
    api_key="YOUR_API_KEY",
    base_url="https://api.modelpricing.ai",
    timeout=30.0,
    max_retries=3,
)

Error Handling

The client raises typed exceptions for different failure modes:

Exception HTTP Status When
Unauthorized 401 Invalid or missing API key
ValidationError 422 Invalid model name or metrics
NotFound 404 Unknown endpoint
ServerError 5xx Server-side failures

All exceptions inherit from ModelPricingError and include a status_code attribute.

from modelpricing_ai.errors import Unauthorized, ValidationError, ServerError

try:
    estimate = client.estimate(model="gpt-4o-mini", tokens_in=1000, tokens_out=500)
except Unauthorized:
    print("Check your API key")
except ValidationError as e:
    print(f"Bad request: {e}")
except ServerError:
    print("Server error — will be retried automatically")

Retry Behavior

The client automatically retries on transient errors with exponential backoff:

  • Retries: 5xx server errors and network/connection errors
  • No retry: 4xx client errors (401, 404, 422)
  • Default: 3 retries with exponential backoff (1 s, 2 s, 4 s up to 10 s max)
# Increase retries for unreliable networks
client = ModelPricingClient(api_key="YOUR_API_KEY", max_retries=5)

# Disable retries (no retry attempts)
client = ModelPricingClient(api_key="YOUR_API_KEY", max_retries=0)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

modelpricing_ai-2026.2.11.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

modelpricing_ai-2026.2.11-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file modelpricing_ai-2026.2.11.tar.gz.

File metadata

  • Download URL: modelpricing_ai-2026.2.11.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for modelpricing_ai-2026.2.11.tar.gz
Algorithm Hash digest
SHA256 555e35cfa4a157a5eae3fffd0dfa28898acccb0fb356480b133fe8b8d950f2c3
MD5 ce9698a8e1d4822703681c132e36c849
BLAKE2b-256 3bb2a40f78c542b3e60d4278dd9dd2f80afd6baa2fe42f71ad5bd3505a904c01

See more details on using hashes here.

Provenance

The following attestation bundles were made for modelpricing_ai-2026.2.11.tar.gz:

Publisher: publish-python.yml on humanspeak/modelpricing-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file modelpricing_ai-2026.2.11-py3-none-any.whl.

File metadata

File hashes

Hashes for modelpricing_ai-2026.2.11-py3-none-any.whl
Algorithm Hash digest
SHA256 a91a7ecfe734d549c00c16d2a94c756032927c0b06d7ac030f95e04d787c6ffb
MD5 c6bf891ed6521e539b80ef0e2635476c
BLAKE2b-256 57598ca9151c60c33f5bb2ec00cb9506457f91e1d2e0a635c976137d565229f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for modelpricing_ai-2026.2.11-py3-none-any.whl:

Publisher: publish-python.yml on humanspeak/modelpricing-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page