Sign In

Evidence Bundles SDK

Access, download, and verify the signed evidence bundle programmatically.

Overview

Every generation job produces a signed, cryptographically-chained evidence bundle. This is unconditional -- the same on every plan tier and every dataset size. Evidence bundles cannot be disabled.

For a detailed explanation of each artifact, see Evidence Bundles.

Listing Artifacts

List artifacts
from radmah_sdk import RadMahClient

client = RadMahClient(api_key="sl_live_...")

# List all artifacts for a completed job
artifacts = client.artifacts.list(job_id="<job-uuid>")

for a in artifacts:
    print(f"#{a.index} {a.artifact_type}")
    print(f"  Hash: {a.content_hash}")
    print(f"  Size: {a.size_bytes} bytes")

Downloading Artifacts

Download artifacts
# Download a single artifact by ID
client.artifacts.download(
    artifact_id="<artifact-uuid>",
    path="contract_k.bin"
)

# Download the full signed evidence bundle
client.artifacts.download_bundle(
    job_id="<job-uuid>",
    path="evidence/"  # creates evidence/ directory with every artefact
)

Verifying Artifacts

The cryptographic hashes in the evidence bundle form a tamper-evident chain. The final Evidence Seal artefact is a cryptographic seal binding every artefact. You can verify this chain independently.

Verify evidence chain
# Trigger server-side verification
verify_job = client.jobs.create(
    kind="verify",
    job_id="<original-job-uuid>"
)
verify_job.wait()

# Result includes per-artifact verification status
print(verify_job.result)
# {
#   "verified": true,
#   "artifacts_checked": <count>,
#   "seal_valid": true,
#   "determinism_proof_valid": true
# }

REST API

MethodPathDescription
GET/v1/client/artifactsList artifacts (filter by job_id)
GET/v1/client/artifacts/{id}Get artifact metadata
GET/v1/client/artifacts/{id}/downloadDownload artifact content

Determinism Verification

The Determinism Proof artefact contains the cryptographic hash of the generated output. To verify determinism, rerun the job with the same seal and compare hashes:

Verify determinism
# Original job
original = client.artifacts.list(job_id="<original-job>")
original_hash = next(
    a.content_hash for a in original
    if a.artifact_type == "determinism_proof"
)

# Rerun with same seed
rerun = client.jobs.rerun(job_id="<original-job>")
rerun.wait()

rerun_artifacts = client.artifacts.list(job_id=rerun.id)
rerun_hash = next(
    a.content_hash for a in rerun_artifacts
    if a.artifact_type == "determinism_proof"
)

assert original_hash == rerun_hash  # Bit-for-bit identical

Compliance Use

Regulatory Frameworks

Evidence bundles serve as compliance deliverables for regulated environments. The signed evidence bundle provides documented provenance suitable for NERC CIP, IEC 62443, NIST SP 800-82, and similar regulatory frameworks. Each artefact is independently verifiable without access to RadMah AI infrastructure.