Type-safe Python client for the FlexPrice API: billing, metering, and subscription management for SaaS and usage-based products.
- Python 3.10+
pip install flexpriceWith uv or poetry:
uv add flexprice
# or
poetry add flexpriceRunnable samples are in the examples/ directory.
Initialize the client with your server URL and API key, then ingest an event:
from flexprice import Flexprice
# Always include /v1 in the base URL; no trailing space or slash.
with Flexprice(
server_url="https://us.api.flexprice.io/v1",
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)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/v1",
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())- Pass your API key as
api_key_authwhen creating the client. The SDK sends it in thex-api-keyheader. - Prefer environment variables (e.g.
FLEXPRICE_API_KEY) and load them in code; get keys from your FlexPrice dashboard or docs.
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 exceptionSee the API docs for error formats and status codes.
- 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.
- Missing or invalid API key: Ensure
api_key_authis set (or setFLEXPRICE_API_KEYand pass it in). Keys are for server-side use only. - Wrong server URL: Use
https://us.api.flexprice.io/v1. Always include/v1; no trailing space or slash. - 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.
- FlexPrice API documentation
- Python SDK examples in this repo