PYTHON SDK

Python SDK

The official Python SDK for the Truthlocks verification platform. Type-safe, with automatic retries and comprehensive error handling.

Installation

pip install truthlock

Requires Python 3.9 or later. Uses httpx for HTTP requests.

Quick Start

from truthlock import TruthlockClient, Algorithm, Verdict

client = TruthlockClient(api_key="your-api-key")

# Create an issuer
issuer = client.issuers.create(
    name="My Organization",
    legal_name="My Organization Inc.",
)

# Register a key
key = client.keys.register(
    issuer_id=issuer.id,
    kid="key-1",
    alg=Algorithm.ED25519.value,
    public_key_b64url="your-base64url-public-key",
)

# Mint an attestation
attestation = client.attestations.mint(
    issuer_id=issuer.id,
    kid="key-1",
    alg=Algorithm.ED25519.value,
    payload_b64url="base64url-encoded-payload",
)
print(f"Attestation: {attestation.attestation_id}")

# Verify
result = client.verify.verify_online(
    attestation_id=attestation.attestation_id,
)
if result.verdict == Verdict.VALID:
    print("Verified successfully")

Client Configuration

client = TruthlockClient(
    api_key="your-api-key",
    base_url="https://api.truthlocks.com",  # default
    environment="production",                 # or "sandbox"
    timeout=30.0,                             # seconds
    max_retries=3,                            # auto-retry on failures
)

Error Handling

from truthlock import TruthlockClient, TruthlockError, NotFoundError

client = TruthlockClient(api_key="your-key")

try:
    att = client.attestations.get("nonexistent-id")
except NotFoundError:
    print("Attestation not found")
except TruthlockError as e:
    print(f"API error {e.status_code}: {e.error_code} - {e}")

Context Manager

with TruthlockClient(api_key="your-key") as client:
    issuers = client.issuers.list()
    for issuer in issuers:
        print(f"{issuer.name} ({issuer.id})")

API Reference

Issuers

client.issuers.create(name, ...)Create a new issuer
client.issuers.list(limit, offset)List issuers
client.issuers.get(issuer_id)Get issuer by ID
client.issuers.trust(issuer_id)Trust an issuer

Attestations

client.attestations.mint(...)Mint a new attestation
client.attestations.get(id)Get attestation details
client.attestations.list(limit, offset)List attestations
client.attestations.revoke(id, reason)Revoke an attestation
client.attestations.proof_bundle(id)Get proof bundle

Verify

client.verify.verify_online(attestation_id, payload_b64url)Verify attestation online

Requirements

Python>= 3.9
Packagetruthlock
AuthTenant API key (X-API-Key header)
Dependencieshttpx