Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

OpenMeter Python SDK

On PyPI

This package is generated by @typespec/http-client-python with Typespec.

Prerequisites

  • Python 3.9 or later is required to use this package.

Install

The Python SDK is in preview mode.

pip install --pre openmeter
# or using an exact version
pip install openmeter==1.0.0bXXX

Examples

Setup

Synchronous Client

from openmeter import Client

client = Client(
    endpoint="https://openmeter.cloud",
    token="your-api-token",
)

Async Client

from openmeter.aio import Client

client = Client(
    endpoint="https://openmeter.cloud",
    token="your-api-token",
)

Ingest an Event

Synchronous

import datetime
import uuid

from openmeter.models import Event

# Create an Event instance (following CloudEvents specification)
event = Event(
    id=str(uuid.uuid4()),
    source="my-app",
    specversion="1.0",
    type="prompt",
    subject="customer-1",
    time=datetime.datetime.now(datetime.timezone.utc),
    data={
        "tokens": 100,
        "model": "gpt-4o",
        "type": "input",
    },
)

# Ingest the event
client.events.ingest_event(event)

Async

import datetime
import uuid
import asyncio

from openmeter.aio import Client
from openmeter.models import Event

async def main():
    async with Client(
        endpoint="https://openmeter.cloud",
        token="your-api-token",
    ) as client:
        # Create an Event instance (following CloudEvents specification)
        event = Event(
            id=str(uuid.uuid4()),
            source="my-app",
            specversion="1.0",
            type="prompt",
            subject="customer-1",
            time=datetime.datetime.now(datetime.timezone.utc),
            data={
                "tokens": 100,
                "model": "gpt-4o",
                "type": "input",
            },
        )

        # Ingest the event
        await client.events.ingest_event(event)

asyncio.run(main())

Query Meter

Synchronous

from openmeter.models import MeterQueryResult

# Query total values
r: MeterQueryResult = client.meters.query_json(meter_id_or_slug="tokens_total")
print("Query total values:", r.data[0].value)

Async

import asyncio

from openmeter.aio import Client
from openmeter.models import MeterQueryResult

async def main():
    async with Client(
        endpoint="https://openmeter.cloud",
        token="your-api-token",
    ) as client:
        # Query total values
        r: MeterQueryResult = await client.meters.query_json(
            meter_id_or_slug="tokens_total"
        )
        print("Query total values:", r.data[0].value)

asyncio.run(main())

Client API Reference

The OpenMeter Python SDK provides a comprehensive client interface organized into logical operation groups. Below is a complete reference of all available methods.

Overview

Namespace Operation Method Description
Events Track usage by ingesting events
Create client.events.ingest_event(event) Ingest a single event
Create client.events.ingest_events(events) Ingest batch of events
Create client.events.ingest_events_json(events_json) Ingest events from JSON
Read client.events.list(**kwargs) List ingested events with filtering
Read client.events_v2.list(**kwargs) List ingested events with advanced filtering (V2)
Meters Track and aggregate usage data from events
Create client.meters.create(meter) Create a new meter
Read client.meters.get(meter_id_or_slug) Get a meter by ID or slug
Read client.meters.list(**kwargs) List all meters
Read client.meters.query_json(meter_id_or_slug, **kwargs) Query usage data in JSON format
Read client.meters.query_csv(meter_id_or_slug, **kwargs) Query usage data in CSV format
Read client.meters.query(meter_id_or_slug, **kwargs) Query usage data
Read client.meters.list_subjects(meter_id_or_slug, **kwargs) List subjects for a meter
Read client.meters.list_group_by_values(meter_id_or_slug, **kwargs) List group-by values for a meter
Update client.meters.update(meter_id_or_slug, meter) Update a meter by ID or slug
Delete client.meters.delete(meter_id_or_slug) Delete a meter by ID or slug
Subjects Manage entities that consume resources
Create client.subjects.upsert(subjects) Create or update one or multiple subjects
Read client.subjects.get(subject_id_or_key) Get a subject by ID or key
Read client.subjects.list() List all subjects
Delete client.subjects.delete(subject_id_or_key) Delete a subject by ID or key
Customers Manage customer information and lifecycles
Create client.customers.create(customer) Create a new customer
Read client.customers.get(customer_id_or_key, **kwargs) Get a customer by ID or key
Read client.customers.list(**kwargs) List all customers
Read client.customers.list_customer_subscriptions(customer_id_or_key, **kwargs) List customer subscriptions
Update client.customers.update(customer_id_or_key, customer) Update a customer
Delete client.customers.delete(customer_id_or_key) Delete a customer
Customer (Single) Customer-specific operations
Read client.customer.get_customer_access(customer_id_or_key) Get customer access information
Customer Apps Manage customer app integrations
Read client.customer_apps.list_app_data(customer_id_or_key, **kwargs) List app data for a customer
Update client.customer_apps.upsert_app_data(customer_id_or_key, app_data) Upsert app data for a customer
Delete client.customer_apps.delete_app_data(customer_id_or_key, app_id) Delete app data for a customer
Customer Stripe Manage Stripe integration for customers
Read client.customer_stripe.get(customer_id_or_key) Get Stripe customer data
Update client.customer_stripe.upsert(customer_id_or_key, data) Upsert Stripe customer data
Create client.customer_stripe.create_portal_session(customer_id_or_key, **kwargs) Create a Stripe customer portal session
Customer Entitlement Single customer entitlement operations
Read client.customer_entitlement.get_customer_entitlement_value(customer_id_or_key, **kwargs) Get customer entitlement value
Customer Overrides Manage customer-specific pricing overrides
Read client.customer_overrides.list(customer_id_or_key) List customer overrides
Read client.customer_overrides.get(customer_id_or_key, override_id) Get a customer override
Update client.customer_overrides.upsert(customer_id_or_key, override) Upsert a customer override
Delete client.customer_overrides.delete(customer_id_or_key, override_id) Delete a customer override
Features Define application capabilities and services
Create client.features.create(feature) Create a new feature
Read client.features.get(feature_id) Get a feature by ID
Read client.features.list(**kwargs) List all features
Delete client.features.delete(feature_id) Delete a feature by ID
Plans Manage subscription plans and pricing
Create client.plans.create(request) Create a new plan
Read client.plans.get(plan_id, **kwargs) Get a plan by ID
Read client.plans.list(**kwargs) List all plans
Update client.plans.update(plan_id, body) Update a plan
Delete client.plans.delete(plan_id) Delete a plan by ID
Other client.plans.publish(plan_id) Publish a plan
Other client.plans.archive(plan_id) Archive a plan version
Other client.plans.next(plan_id_or_key) Create new draft plan version
Plan Addons Manage addons assigned to plans
Create client.plan_addons.create(plan_id, body) Create addon assignment for plan
Read client.plan_addons.get(plan_id, plan_addon_id) Get addon assignment for plan
Read client.plan_addons.list(plan_id, **kwargs) List addon assignments for plan
Update client.plan_addons.update(plan_id, plan_addon_id, body) Update addon assignment for plan
Delete client.plan_addons.delete(plan_id, plan_addon_id) Delete addon assignment for plan
Addons Manage standalone addons available across plans
Create client.addons.create(request) Create a new addon
Read client.addons.get(addon_id, **kwargs) Get an addon by ID
Read client.addons.list(**kwargs) List all addons
Update client.addons.update(addon_id, request) Update an addon
Delete client.addons.delete(addon_id) Delete an addon by ID
Other client.addons.publish(addon_id) Publish an addon
Other client.addons.archive(addon_id) Archive an addon
Subscriptions Manage customer subscriptions
Create client.subscriptions.create(body) Create a new subscription
Read client.subscriptions.get_expanded(subscription_id, **kwargs) Get a subscription with expanded details
Update client.subscriptions.edit(subscription_id, body) Edit a subscription
Update client.subscriptions.change(subscription_id, body) Change a subscription
Update client.subscriptions.migrate(subscription_id, body) Migrate subscription to a new plan version
Update client.subscriptions.restore(subscription_id) Restore a canceled subscription
Delete client.subscriptions.cancel(subscription_id, body) Cancel a subscription
Delete client.subscriptions.delete(subscription_id) Delete a subscription
Other client.subscriptions.unschedule_cancelation(subscription_id) Unschedule a subscription cancelation
Subscription Addons Manage addons on subscriptions
Create client.subscription_addons.create(subscription_id, body) Add an addon to a subscription
Read client.subscription_addons.get(subscription_id, subscription_addon_id) Get a subscription addon
Read client.subscription_addons.list(subscription_id, **kwargs) List addons on a subscription
Update client.subscription_addons.update(subscription_id, subscription_addon_id, body) Update a subscription addon
Entitlements Admin entitlements management
Read client.entitlements.list(**kwargs) List all entitlements (admin)
Read client.entitlements.get(entitlement_id) Get an entitlement by ID
Entitlements V2 V2 Admin entitlements management
Read client.entitlements_v2.list(**kwargs) List all entitlements V2 (admin)
Read client.entitlements_v2.get(entitlement_id_or_feature_key, **kwargs) Get an entitlement V2 by ID or feature key
Customer Entitlements V2 Manage customer entitlements (V2)
Create client.customer_entitlements_v2.post(customer_id_or_key, body) Create a customer entitlement
Read client.customer_entitlements_v2.list(customer_id_or_key, **kwargs) List customer entitlements
Read client.customer_entitlements_v2.get(customer_id_or_key, entitlement_id_or_feature_key) Get a customer entitlement
Delete client.customer_entitlements_v2.delete(customer_id_or_key, entitlement_id) Delete a customer entitlement
Update client.customer_entitlements_v2.override(customer_id_or_key, entitlement_id_or_feature_key, override) Override a customer entitlement
Customer Entitlement V2 Single customer entitlement operations (V2)
Read client.customer_entitlement_v2.get_grants(customer_id_or_key, entitlement_id_or_feature_key, **kwargs) List grants for a customer entitlement
Read client.customer_entitlement_v2.get_customer_entitlement_value(customer_id_or_key, entitlement_id_or_feature_key, **kwargs) Get customer entitlement value
Read client.customer_entitlement_v2.get_customer_entitlement_history(customer_id_or_key, entitlement_id_or_feature_key, **kwargs) Get customer entitlement history
Create client.customer_entitlement_v2.create_customer_entitlement_grant(customer_id_or_key, entitlement_id_or_feature_key, grant) Create a grant for customer entitlement
Update client.customer_entitlement_v2.reset_customer_entitlement(customer_id_or_key, entitlement_id, **kwargs) Reset customer entitlement usage
Grants Admin grants management
Read client.grants.list(**kwargs) List all grants (admin)
Delete client.grants.delete(grant_id) Delete (void) a grant
Grants V2 V2 Admin grants management
Read client.grants_v2.list(**kwargs) List all grants V2 (admin)
Billing Profiles Manage billing profiles
Create client.billing_profiles.create(profile) Create a billing profile
Read client.billing_profiles.get(id) Get a billing profile by ID
Read client.billing_profiles.list(**kwargs) List billing profiles
Update client.billing_profiles.update(id, profile) Update a billing profile
Delete client.billing_profiles.delete(id) Delete a billing profile
Invoices Manage invoices
Read client.invoices.list(**kwargs) List invoices
Other client.invoices.invoice_pending_lines_action(customer_id, **kwargs) Invoice pending lines for customer
Invoice Single invoice operations
Read client.invoice.get_invoice(id, **kwargs) Get an invoice by ID
Update client.invoice.update_invoice(id, invoice) Update an invoice
Delete client.invoice.delete_invoice(id) Delete an invoice
Other client.invoice.advance_action(id) Advance invoice to next status
Other client.invoice.approve_action(id) Approve an invoice
Other client.invoice.retry_action(id, body) Retry advancing invoice after failure
Other client.invoice.void_invoice_action(id) Void an invoice
Other client.invoice.recalculate_tax_action(id) Recalculate invoice tax amounts
Other client.invoice.snapshot_quantities_action(id) Snapshot invoice quantities
Customer Invoice Customer-specific invoice operations
Create client.customer_invoice.create_pending_invoice_line(customer_id, body) Create pending invoice line for customer
Other client.customer_invoice.simulate_invoice(customer_id, **kwargs) Simulate an invoice for a customer
Apps Manage integrations and app installations
Read client.apps.list(**kwargs) List installed apps
Read client.apps.get(id) Get an app by ID
Update client.apps.update(id, app) Update an app
Delete client.apps.uninstall(id) Uninstall an app
App Stripe Stripe app integration
Create client.app_stripe.webhook(id, body) Handle Stripe webhook event
Update client.app_stripe.update_stripe_api_key(id, request) Update Stripe API key
Create client.app_stripe.create_checkout_session(body) Create Stripe checkout session
App Custom Invoicing Custom invoicing app integration
Other client.app_custom_invoicing.draft_syncronized(id, invoice_number, **kwargs) Notify when draft invoice synchronized
Other client.app_custom_invoicing.finalized(id, invoice_number, **kwargs) Notify when invoice finalized
Other client.app_custom_invoicing.payment_status(id, invoice_number, body) Update invoice payment status
Marketplace App marketplace operations
Read client.marketplace.list(**kwargs) List marketplace apps
Read client.marketplace.get(app_type) Get marketplace app
Read client.marketplace.get_o_auth2_install_url(app_type, **kwargs) Get OAuth2 install URL
Create client.marketplace.authorize_o_auth2_install(app_type, **kwargs) Authorize OAuth2 installation
Create client.marketplace.install_with_api_key(app_type, body) Install app with API key
Create client.marketplace.install(app_type, body) Install marketplace app
Notification Channels Manage notification channels
Create client.notification_channels.create(channel) Create a notification channel
Read client.notification_channels.get(channel_id) Get a notification channel by ID
Read client.notification_channels.list(**kwargs) List notification channels
Update client.notification_channels.update(channel_id, channel) Update a notification channel
Delete client.notification_channels.delete(channel_id) Delete a notification channel
Notification Rules Manage notification rules
Create client.notification_rules.create(rule) Create a notification rule
Read client.notification_rules.get(rule_id) Get a notification rule by ID
Read client.notification_rules.list(**kwargs) List notification rules
Update client.notification_rules.update(rule_id, rule) Update a notification rule
Delete client.notification_rules.delete(rule_id) Delete a notification rule
Other client.notification_rules.test(rule_id) Test a notification rule
Notification Events View notification events
Read client.notification_events.get(event_id) Get a notification event by ID
Read client.notification_events.list(**kwargs) List notification events
Progress Track long-running operations
Read client.progress.get_progress(id) Get progress of a long-running operation
Currencies Currency information
Read client.currencies.list_currencies() List all supported currencies
Debug Debug utilities for monitoring and troubleshooting
Read client.debug.metrics() Get event ingestion metrics

Release files for openmeter 1.0.0a1204

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

Source distribution (sdist)

Source distribution for openmeter 1.0.0a1204
File Size Uploaded
openmeter-1.0.0a1204.tar.gz 256.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openmeter 1.0.0a1204
File Interpreter ABI Platform
openmeter-1.0.0a1204-py3-none-any.whl Python 3 none any Details

Total release size: 526.1 kB

Release files / openmeter-1.0.0a1204.tar.gz

Download URL openmeter-1.0.0a1204.tar.gz
Size 256.9 kB
Tags Source
SHA-256 checksum
How to use checksums
767ab4460806f3367370144749e6f2d456a1b8e0853e680db5058cb681aff5df
BLAKE2b-256 checksum
How to use checksums
42bb53fa6628e9d6c583ad7d5073ec1ba74759f447cfafd8bafdabe502272b56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.14.7 Linux/6.12.109+

Release files / openmeter-1.0.0a1204-py3-none-any.whl

Download URL openmeter-1.0.0a1204-py3-none-any.whl
Size 269.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e9e85e934809edb45373b51ff2b3047f0d426e2e034f149475474150dc316b14
BLAKE2b-256 checksum
How to use checksums
36f63f49c4de10b7817c970733ac3e91c95875b7310271d7cb9c31c7ca3fc24a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.4.1 CPython/3.14.7 Linux/6.12.109+

Release history Release notifications | RSS feed

2.0.0

2 release files

This release

1.0.0a1204 This release

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