Skip to main content

Python SDK for the TruthChain AI-validation API

Project description

TruthChain Python SDK

PyPI version Python versions License: MIT

Validate AI / LLM outputs against any business rules in <100ms.
Catch hallucinations, schema violations, out-of-range values, and more — before they reach your users.


Installation

pip install truthchain

Requires Python 3.9+. The only dependency (httpx) is installed automatically.


Quick Start

from truthchain import signup, TruthChain

# One-time: create an account
result = signup(
    name="Acme Corp",
    email="dev@acme.com",
    password="s3cretPW!",
    base_url="https://your-server.com",
)
API_KEY = result.api_key   # tc_live_...  — save this securely!

# Validate an AI output
client = TruthChain(api_key=API_KEY, base_url="https://your-server.com")

result = client.validate(
    output={"user_id": 12345, "hours": 8, "project_name": "Project-X"},
    rules=[
        {
            "type": "schema",
            "name": "structure",
            "schema": {
                "type": "object",
                "properties": {
                    "user_id":      {"type": "integer"},
                    "hours":        {"type": "number"},
                    "project_name": {"type": "string"},
                },
                "required": ["user_id", "hours", "project_name"],
            },
        },
        {
            "type": "range",
            "name": "hours_check",
            "field": "hours",
            "min": 0,
            "max": 24,
        },
    ],
    context={"auto_correct": True},
)

print(result.status)            # "passed" | "failed" | "warning"
print(result.is_valid)          # True / False
print(result.violations)        # list of Violation objects
print(result.corrected_output)  # auto-corrected dict (if auto_correct=True)
print(result.latency_ms)        # e.g. 12

Authentication

Sign up

from truthchain import signup

result = signup(
    name="Acme Corp",
    email="dev@acme.com",
    password="s3cretPW!",
    tier="free",   # "free" | "startup" | "business" | "enterprise"
    base_url="https://your-server.com",
)
print(result.api_key)   # tc_live_...  � shown only once, save immediately

Login

from truthchain import login

auth = login("dev@acme.com", "s3cretPW!", base_url="https://your-server.com")
client = TruthChain(api_key=auth.api_key, base_url="https://your-server.com")

Validation

result = client.validate(
    output={"score": 95, "label": "positive"},
    rules=[
        {"type": "range",    "name": "score_range",  "field": "score", "min": 0, "max": 100},
        {"type": "required", "name": "has_label",    "fields": ["label"]},
    ],
)

Rule types

Type Required fields Description
schema schema (JSON Schema) Structure & type validation
range field, min, max Numeric range check
pattern field, pattern (regex) Regex match
required fields (list) Presence check
reference field, reference_type External reference check

All rules accept an optional "severity": "error" (default) or "warning".


Async Usage

import asyncio
from truthchain import AsyncTruthChain

async def main():
    async with AsyncTruthChain(api_key="tc_live_...", base_url="https://your-server.com") as client:
        result = await client.validate(
            output={"score": 95},
            rules=[{"type": "range", "name": "score", "field": "score", "min": 0, "max": 100}],
        )
        print(result.status)

asyncio.run(main())

Error Handling

from truthchain.exceptions import (
    AuthenticationError,
    QuotaExceededError,
    RateLimitError,
    ValidationError,
    ServerError,
)

try:
    result = client.validate(output={}, rules=[])
except AuthenticationError:
    print("Invalid or revoked API key")
except QuotaExceededError:
    print("Monthly quota exhausted — upgrade your plan")
except RateLimitError as e:
    print(f"Rate limited — retry after {e.retry_after}s")
except ValidationError as e:
    print(f"Bad request: {e.message}")
except ServerError:
    print("Server error � try again later")

Error hierarchy:

TruthChainError
├── AuthenticationError   (401)
├── NotFoundError         (404)
├── ValidationError       (422)
├── RateLimitError        (429)
├── QuotaExceededError    (429 + quota)
├── ConflictError         (400 / 409)
└── ServerError           (5xx)

API Reference

TruthChain(api_key, base_url, timeout)

Parameter Default Description
api_key Your tc_live_... API key
base_url http://localhost:8000 TruthChain server URL
timeout 30.0 Request timeout in seconds

Supports context manager: with TruthChain(...) as client:.
AsyncTruthChain mirrors the same interface with async/await.

Methods

Method Returns Description
validate(output, rules, context) ValidationResult Validate AI output
get_analytics() AnalyticsOverview Analytics overview
get_validation_stats() ValidationStats Aggregated stats
get_subscription() Subscription Current plan & usage
get_plans() List[BillingPlan] Available plans
upgrade(tier) Subscription Change plan
list_api_keys() List[APIKey] List all keys
create_api_key(name) APIKey Create new key
rotate_api_key(key_id) APIKey Rotate key
revoke_api_key(key_id) None Revoke key

Top-level helpers

Function Description
signup(name, email, password, tier, base_url) Register new org
login(email, password, base_url) Login, get fresh key

License

MIT © 2026 TruthChain

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

truthchain-1.0.4.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

truthchain-1.0.4-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file truthchain-1.0.4.tar.gz.

File metadata

  • Download URL: truthchain-1.0.4.tar.gz
  • Upload date:
  • Size: 12.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for truthchain-1.0.4.tar.gz
Algorithm Hash digest
SHA256 94d9109f77a16bcda21b3b139e5684f9e0ec32031e0a4eca011f90073fbeda5c
MD5 35d380ded0de9a08bfd6ee06c791bf3f
BLAKE2b-256 a3bd8e612609249ced778e10412037c7801730f17b3d741bccd985c42f7783bd

See more details on using hashes here.

File details

Details for the file truthchain-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: truthchain-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for truthchain-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a78163cb97502331aa9b89277307ad90be3a998a8031ad9634d075d0d9cf913f
MD5 e3a2a8086f5cf0a5284bf5b1aefa2d53
BLAKE2b-256 a19f95fc3505e9684f00d1800f59915bceaaf2b14488d8dcfef8ad813031f154

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page