Skip to main content

Python Client SDK for the FlexPrice API.

Project description

FlexPrice Python SDK

Type-safe Python client for the FlexPrice API: billing, metering, and subscription management for SaaS and usage-based products.

Requirements

  • Python 3.10+

Installation

pip install flexprice

With uv or poetry:

uv add flexprice
# or
poetry add flexprice

Runnable samples are in the examples/ directory.

Quick start

Initialize the client with your server URL and API key, then ingest an event:

from flexprice import Flexprice

with Flexprice(
    server_url="https://us.api.flexprice.io",
    api_key_auth="YOUR_API_KEY",
) as flexprice:
    # Ingest an event
    result = flexprice.events.ingest_event(
        request={
            "event_name": "Sample Event",
            "external_customer_id": "customer-123",
            "properties": {"source": "python_app", "environment": "test"},
            "source": "python_app",
        }
    )
    print(result)

Async usage

The same client supports async when used as an async context manager:

import asyncio
from flexprice import Flexprice

async def main():
    async with Flexprice(
        server_url="https://us.api.flexprice.io",
        api_key_auth="YOUR_API_KEY",
    ) as flexprice:
        result = await flexprice.events.ingest_event_async(
            request={
                "event_name": "Sample Event",
                "external_customer_id": "customer-123",
                "properties": {"source": "python_async", "environment": "test"},
                "source": "python_async",
            }
        )
        print(result)

asyncio.run(main())

Authentication

  • Pass your API key as api_key_auth when creating the client. The SDK sends it in the x-api-key header.
  • Prefer environment variables (e.g. FLEXPRICE_API_KEY) and load them in code; get keys from your FlexPrice dashboard or docs.

Error handling

API errors are raised as exceptions. Catch them and inspect the response as needed:

try:
    with Flexprice(server_url="...", api_key_auth="...") as flexprice:
        result = flexprice.events.ingest_event(request={...})
except Exception as e:
    print(f"Error: {e}")
    # Inspect status code and body if available on the exception

See the API docs for error formats and status codes.

Features

  • Full API coverage (customers, plans, events, invoices, payments, entitlements, etc.)
  • Sync and async support
  • Type-safe request/response models (Pydantic)
  • Built-in retries and error handling

For a full list of operations, see the API reference and the examples in this repo.

Troubleshooting

  • Missing or invalid API key: Ensure api_key_auth is set (or set FLEXPRICE_API_KEY and pass it in). Keys are for server-side use only.
  • Wrong server URL: Use https://us.api.flexprice.io (no trailing slash). The SDK appends paths as needed.
  • 4xx/5xx on ingest: Event ingest returns 202 Accepted; for errors, check request fields (event_name, external_customer_id, properties, source) against the API docs.

Documentation

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

flexprice_py-0.0.50.tar.gz (221.4 kB view details)

Uploaded Source

Built Distribution

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

flexprice_py-0.0.50-py3-none-any.whl (536.9 kB view details)

Uploaded Python 3

File details

Details for the file flexprice_py-0.0.50.tar.gz.

File metadata

  • Download URL: flexprice_py-0.0.50.tar.gz
  • Upload date:
  • Size: 221.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for flexprice_py-0.0.50.tar.gz
Algorithm Hash digest
SHA256 6f6ed40adfe261c97a871b79408defd50addfa95210c3edbe1076d2672b021aa
MD5 c7c6f0c54f3a14176914c54f648faf6d
BLAKE2b-256 6aab193b70a78dd1311be78e86a1656eac00032c9e3be0251b406bc815bb363d

See more details on using hashes here.

File details

Details for the file flexprice_py-0.0.50-py3-none-any.whl.

File metadata

  • Download URL: flexprice_py-0.0.50-py3-none-any.whl
  • Upload date:
  • Size: 536.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for flexprice_py-0.0.50-py3-none-any.whl
Algorithm Hash digest
SHA256 b01644f5ed27a46be1e13510d8c57a4ea195066f973ef5dd15b299fe7e16de8d
MD5 43fa9199ac0baf31d26aeee727da2272
BLAKE2b-256 2f2a35f54826a9e85a10a794153f0731a64f6f8cd95e9f4571b9149e2d8cc9ab

See more details on using hashes here.

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