Python SDK · v1 stable

Typed. Async-first. Built for production.

One typed Python client for every product on the platform. Pydantic v2 throughout, idempotency keys handled for you, evidence verification a single call. Matching CLI for the moments code is overkill.

SDK referenceSee the flagship agent
Type coverage
100%
Python
3.11+
Notebooks
6
Wheel
signed
radmah-quickstart.ipynbpython 3.11
cell · in[1]
1from radmah_sdk import Client2 3client = Client(api_key="rm_live_…")4 5# Synthesize from a CSV upload6ds  = await client.datasets.upload("./customers.csv")7job = await client.synthesize.run(8    dataset_id=ds.id,9    model="synthesize",10    rows=10_000,11    seed=42,12)13await job.wait()14 15bundle = await client.evidence.fetch(job.id)16assert bundle.verify()  # cryptographic hash, offline17print(job.metrics.qa_score)
stream · out[1]
  • ▶ uploading customers.csv ………… 4.7 MB
  • dataset ds_4a7c81 · 20 cols · 482 931 rows
  • ▶ POST /v1/synthesize/jobs 202
  • job_9b3df1 · estimate 38 s · 14 credits
  • ▶ training the engine on 17 numeric / 3 cat …
  • epoch 12 / 20 loss 0.083
  • epoch 20 / 20 loss 0.041
  • ▶ generating 10 000 rows ………… 1.6 s
  • ✓ K-S gate 0.018 · χ² gate ok · constraints ok
  • ▶ fetching evidence bundle …
  • ✓ chain verified root a4f2…d801
  • >>> 0.9569

Six things every SDK call guarantees.

The same guarantees whether you’re uploading a CSV or driving the autonomous agent. No surprises, no hidden retries, no untyped JSON blobs.

rule · 01

100 % typed

Pydantic v2 models for every request and response. mypy-strict on the client. Your IDE knows every field.

rule · 02

Async-first

Every method is awaitable. Sync wrappers exist where you need them, but async is the primary surface.

Idempotency built in

Idempotent retries on POSTs out of the box; the SDK manages your Idempotency-Key for you.

Streaming evidence

First-class helpers to subscribe to evidence-chain events and verify cryptographic hash chains offline.

Contract-test runner

Drop the contract runner into your CI to lock the SDK<->API contract — caught upstream, not in prod.

Matching CLI

Every SDK call has a `rady` CLI sibling for shell pipelines, one-off ops, and the chatty interactive REPL. See /developer/cli.

From pip install to a signed bundle in 30 seconds.

shell · zsh
pip install radmah-sdk radmah-cli
rady auth login                          # OS-keyring credential, one-time

# 30-second mock dataset via the SDK
python3 -c "
from radmah_sdk import RadMahClient
c = RadMahClient(api_key='rm_live_...')
job = c.submit_job_with_budget(
    kind='mock', engine='mock_fast',
    prompt='200 SaaS accounts MRR 50-5000',
    rows=200, seed=42, max_credits=1,
)
print(job.wait().to_dataframe().head())
"

# Or one-shot via the CLI
rady mock -p "200 SaaS accounts MRR 50-5000" -n 200 -o bundle.csv

# Verify any evidence bundle offline
rady verify bundle.tar.zst

Six reference notebooks. One per product surface.

01-mock.ipynb

Generate a sealed mock dataset from a prompt.

02-synthesize.ipynb

Train it on a CSV upload, fetch the bundle.

03-agent.ipynb

Drive the autonomous data scientist end-to-end.

04-scada.ipynb

Spin up a Virtual SCADA run, capture telemetry.

05-evidence.ipynb

Verify any bundle, walk the cryptographic hash chain offline.

06-webhooks.ipynb

Receive signed events, validate signatures.

Language support, version policy.

SurfaceVersionsStatus
Python3.11 – 3.13stable
Asyncasyncio, anyiostable
Pydanticv2.xrequired
HTTPhttpx 0.27+vendored
TypeScript SDKQ3in design
Go SDKQ4planned

pip install radmah-sdk

One install. Every product surface. Bring an OpenAPI test suite if you have one, drop the contract runner into your CI, and you can ship in a day.

SDK installation docs
terminal · install
$ pip install radmah-sdk
Collecting radmah-sdk
Downloading radmah_sdk-0.9.3-py3-none-any.whl (182 kB)
Collecting pydantic>=2.6
Collecting httpx>=0.27
Successfully installed radmah-sdk-0.9.3
$ python -c "from radmah_sdk import Client"
$ radmah --version
radmah-sdk 0.9.3 · python 3.12 · macOS/linux/windows