Assured Platform API — Unofficial Python SDK
An unofficial, modern, async-first Python SDK wrapping the Assured Platform API. This library provides fully typed Pydantic models, automatic semantic pagination, and robust file handling designed to streamline interactions with Assured's complex backend.
Features
- Async First: Built on
httpxto support highly concurrent workflows seamlessly. - Type Safety: Thoroughly documented Pydantic v2 classes represent the massive web of API payloads.
- Auto-Pagination: Helper methods to pull data incrementally or extract directly into
pandas.DataFrames. - Session Bridge: A custom JWT authentication layer to shim missing capabilities for undocumented storage and encryption endpoints.
Setup & Installation
The package manages dependencies using standard Python environments (uv, hatch, or pip). The primary configuration is driven via environment variables.
Prerequisites
Create a .env file in your root directory based on the .env.example:
ASSURED_BASE_URL=https://demo-backend.withassured.com
ASSURED_API_KEY=your-api-key-here
ASSURED_USER=your-email@example.com
ASSURED_PASS=your-password
[!NOTE] The API Key handles 95% of requests. However, certain endpoints — file uploading (still undocumented) and SSN encryption (now in the official spec, though its JWT-only auth requirement is not) — require explicit user credentials (
ASSURED_USERandASSURED_PASS) to acquire an internal JWT session token. The client handles fetching and caching this JWT automatically.
Quickstart
import asyncio
from assured import AssuredClient
async def run():
# Automatically loads configuration from your `.env` file using pydantic-settings
async with AssuredClient() as client:
# 1. Standard API Key usage: List all providers into a DataFrame
providers_df = await client.providers.list_df()
print(providers_df[["full_name", "npi", "email"]])
# 2. Extract provider details
detail = await client.credentialing.get_request("some-uuid")
provider_profile_id = detail.provider_id
# 3. Use undocumented JWT bridging: Upload and associate a document seamlessly!
# The client recognizes this requires a JWT, fetches one leveraging your User credentials,
# posts the multipart payload to S3, and links it into the provider profile.
contract_bytes = b"..."
document = await client.provider_profile.upload_and_associate_document(
provider_id=provider_profile_id,
file_content=contract_bytes,
filename="contract.pdf",
document_name="IHCP Rendering Provider Agreement",
document_type="Individual Provider Agreement",
)
# 4. Generate short-lived presigned URLs for assets
secure_link = await client.files.presign_url(document.document_url)
print(f"Download the document at: {secure_link}")
if __name__ == "__main__":
asyncio.run(run())
Structure & Architecture
The domains mirror Assured's core logical groupings:
client.users: Managing internal roles.client.providers: Listing, fetching context, and inviting user providers.client.provider_profile: Encompasses deep profiles ranging from demographics to DEAs to Gap Histories.client.credentialing: Operations wrapping verification tasks.client.files: Storage abstraction logic.
Known Discrepancies
A recent spec update (58 → 94 endpoints) officially documented much of what this SDK had reverse-engineered — login, provider personal info, employment v1, provider documents, and the SSN endpoint among them. Several behaviors still diverge from the spec, however (Encrypted SSN payloads, JWT-only file uploads via S3 Bucket paths, the account-vs-profile ID split), and the SDK continues to handle them automatically under-the-hood. For the current list of active divergences and the quirks that survived documentation, check out the API Divergence Document.
Release files for assured-py 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| assured_py-1.3.0.tar.gz | 395.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| assured_py-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 441.8 kB
Release files / assured_py-1.3.0.tar.gz
| Download URL | assured_py-1.3.0.tar.gz |
|---|---|
| Size | 395.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ca5db0d8756b49646c737681b4ede9f15189ee3c4cdeebb4435efcd4ab177ce
|
|
BLAKE2b-256 checksum How to use checksums |
a59da7c4923d5ef144dd93d4fe5b4ed61d1b67a163a97b261d2b2d7804ea5fe0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency logRelease files / assured_py-1.3.0-py3-none-any.whl
| Download URL | assured_py-1.3.0-py3-none-any.whl |
|---|---|
| Size | 46.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
75126f37b59898dd663e918b495ed25a7f7c05f367f2ad877e4059b08479beab
|
|
BLAKE2b-256 checksum How to use checksums |
6e10be7b937d0ec5e40565a21e69456eb754f0552a514121c8797f2eb3c8cc06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.
Transparency log