stedi
The Stedi SDK for Python — unified, typed access to Stedi's APIs from a single client.
Requirements
- Python ≥ 3.12 download
- Stedi account sign up free
- Stedi API key: docs
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
- Stedi documentation: stedi.com/docs
- Issues: github.com/Stedi/sdk/issues
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad71f0cd4a5ba4d612cf587514dd2cff4982178117c827870766ca701b90c2f8
|
|
| MD5 |
7b59f46785067ef99bedd0977e1c1fb6
|
|
| BLAKE2b-256 |
191b481f4fe677ea552a7c3dba990725ca954567dcc4f3cd41c01351b4ca3f94
|
Provenance
The following attestation bundles were made for stedi-1.0.0.tar.gz:
Publisher:
release.yml on Stedi/sdk-build-and-publish
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stedi-1.0.0.tar.gz -
Subject digest:
ad71f0cd4a5ba4d612cf587514dd2cff4982178117c827870766ca701b90c2f8 - Sigstore transparency entry: 2763545343
- Sigstore integration time:
-
Permalink:
Stedi/sdk-build-and-publish@8f23077846a81267eb8d7975a562b370a371e141 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Stedi
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8f23077846a81267eb8d7975a562b370a371e141 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0928990aeb69e29a77432ad039789951e8739368e1221c777b62405172d4121d
|
|
| MD5 |
be19615b3a7315b9169a2a2c371aea25
|
|
| BLAKE2b-256 |
83faf802f1ce2efa03d186b66a43d4f798c6f1fb9ecc9ce32951ad7d00d80617
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stedi-1.0.0-py3-none-any.whl -
Subject digest:
0928990aeb69e29a77432ad039789951e8739368e1221c777b62405172d4121d - Sigstore transparency entry: 2763545394
- Sigstore integration time:
-
Permalink:
Stedi/sdk-build-and-publish@8f23077846a81267eb8d7975a562b370a371e141 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/Stedi
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@8f23077846a81267eb8d7975a562b370a371e141 -
Trigger Event:
release
-
Statement type: