Skip to main content

stedi

PyPI Python versions License

The Stedi SDK for Python — unified, typed access to Stedi's APIs from a single client.

Requirements

Installing

pip install stedi
# or: uv add stedi
# or: poetry add stedi

Authentication

You must authenticate every request with a Stedi API key. Set the API key on the Config you use to construct the client. The client is async, so build it inside a running event loop:

import asyncio

from stedi import Config, Stedi


async def main() -> None:
    async with Stedi(Config(api_key="...")) as client:
        ...  # send operations here — see the Quickstart below


asyncio.run(main())

An API key is the only credential the Python client accepts; OAuth access tokens are supported in the TypeScript SDK. Visit the Stedi documentation for how to obtain and manage API keys.

Quickstart

The client is async and acts as a context manager. To send a typed operation, pass its input model:

import asyncio

from stedi import Config, Stedi


async def main() -> None:
    # Submit a complete CMS-1500 claim. See the runnable claims example for a full payload.
    # `load_claim` is your own function — the runnable examples read a JSON fixture.
    claim = load_claim()

    async with Stedi(Config(api_key="...")) as client:
        response = await client.create_professional_claim_submission(claim)

        print(f"claim {response.claim_id}, submission {response.submission_id}")


asyncio.run(main())

Operation input models are under stedi.models.

One client for every Stedi API

A single client routes each operation to the correct Stedi host automatically. This lets you use one client and one set of credentials for the entire SDK.

from stedi import Config, Stedi


async def main() -> None:
    async with Stedi(Config(api_key="...")) as client:
        # `claim` is a CreateProfessionalClaimSubmissionInput, as built in the Quickstart above.
        await client.create_professional_claim_submission(claim)

Available operations

Claims

Method Description
create_professional_claim_submission Submit a professional claim in JSON modeled after the CMS-1500 form structure
get_claim Retrieve summary information for a claim, including current processing status and key details from its most recent submission
get_claim_timeline Retrieve a paginated list of a claim's timeline entries, newest first. Timeline entries include submissions, acknowledgments, and claim payment information
get_professional_claim_submission Retrieve a claim's data and map it to Stedi's CMS-1500 JSON format
list_claims Retrieve a paginated list of claim records, newest first. Filter by status, patient control numbers, or submission time
validate_professional_claim_submission Validate a professional claim in the Stedi JSON format without submitting it

Eligibility Check

Method Description
create_eligibility_check Submit a real-time 270/271 eligibility check in JSON format

Event Destinations

Method Description
create_event_destination Creates an event destination. Returns destination details and a signing secret for verifying event payloads.
delete_event_destination Deletes an existing destination. This action is irreversible. Deleting a destination that is already deleted succeeds with the same response (idempotent).
get_event_destination Retrieves details for an existing event destination.
get_event_destination_event Retrieves the details of an existing event by its identifier.
get_event_destination_secret Retrieves the current signing secret for a destination. Use this secret to verify the authenticity of event payloads.
list_event_destination_events Lists all events for your account. Results are paginated.
list_event_destinations Lists all destinations configured for your account. Results are paginated.
rotate_event_destination_secret Rotates the signing secret for a destination. The previous secret remains valid for the period specified by previousSecretExpiryHours (or 0 for immediate invalidation) to allow for a graceful transition.
update_event_destination Updates an existing destination configuration.

This list grows as Stedi releases more APIs through the SDK.

Configuration

Configure everything through the Config, including the API key:

import asyncio

from stedi import Config, RetryStrategyOptions, Stedi


async def main() -> None:
    config = Config(
        api_key="...",
        # Retry policy — the client defaults to StandardRetryStrategy(max_attempts=3).
        retry_strategy=RetryStrategyOptions(max_attempts=4),
    )

    async with Stedi(config) as client:
        ...


asyncio.run(main())

Error handling

Service errors are raised as CallError. Every error class under stedi.models is a subclass, so catch CallError for any of them, or a specific class for one:

from stedi import CallError, Config, Stedi


async def main() -> None:
    async with Stedi(Config(api_key="...")) as client:
        try:
            await client.create_professional_claim_submission(claim)
        except CallError as exc:
            print(f"{type(exc).__name__}: {exc}")
            raise

Examples

Access runnable, end-to-end examples for every operation in the examples/python/ directory.

Documentation & support

License

Apache-2.0

Download files

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

Source Distribution

stedi-1.0.0.tar.gz (158.5 kB view details)

Uploaded Source

Built Distribution

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

stedi-1.0.0-py3-none-any.whl (163.4 kB view details)

Uploaded Python 3

File details

Details for the file stedi-1.0.0.tar.gz.

File metadata

  • Download URL: stedi-1.0.0.tar.gz
  • Upload date:
  • Size: 158.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stedi-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ad71f0cd4a5ba4d612cf587514dd2cff4982178117c827870766ca701b90c2f8
MD5 7b59f46785067ef99bedd0977e1c1fb6
BLAKE2b-256 191b481f4fe677ea552a7c3dba990725ca954567dcc4f3cd41c01351b4ca3f94

See more details on using hashes here.

Provenance

The following attestation bundles were made for stedi-1.0.0.tar.gz:

Publisher: release.yml on Stedi/sdk-build-and-publish

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

File details

Details for the file stedi-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: stedi-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 163.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for stedi-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0928990aeb69e29a77432ad039789951e8739368e1221c777b62405172d4121d
MD5 be19615b3a7315b9169a2a2c371aea25
BLAKE2b-256 83faf802f1ce2efa03d186b66a43d4f798c6f1fb9ecc9ce32951ad7d00d80617

See more details on using hashes here.

Provenance

The following attestation bundles were made for stedi-1.0.0-py3-none-any.whl:

Publisher: release.yml on Stedi/sdk-build-and-publish

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

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 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