Skip to main content

API Overview

Both the Python and TypeScript SDKs expose the same five methods. Python uses snake_case, TypeScript uses camelCase.

Methods

MethodPythonTypeScriptReturns
Emit eventtp.emit(event_type, actor_id, ...)tp.emit({ eventType, actorId, ... })TrailEvent
Query eventstp.query(event_type, actor_id, ...)tp.query({ eventType, actorId, ... })QueryResult
Verify chaintp.verify()tp.verify()VerifyResult
Get by tracetp.get_trace(trace_id)tp.getTrace(traceId)TrailEvent[]
Flush to disktp.flush()tp.flush()void

SDK Parity

Both SDKs are functionally identical:
  • Same canonical JSON algorithm
  • Same SHA-256 hash chain
  • Same genesis hash ("0" x 64)
  • Same HMAC-SHA256 signing
  • Same error types
  • Same store interface
  • Shared test vectors ensure byte-for-byte hash parity
The only differences between SDKs are language conventions: snake_case vs camelCase for method and field names, keyword arguments vs options objects for parameters.

Quick Reference

from trailproof import Trailproof, TrailEvent, QueryResult, VerifyResult

tp = Trailproof()

event: TrailEvent = tp.emit(
    event_type="app.action",
    actor_id="user-42",
    tenant_id="acme-corp",
    payload={"key": "value"},
)

result: QueryResult = tp.query(actor_id="user-42", limit=50)
verification: VerifyResult = tp.verify()
events: list[TrailEvent] = tp.get_trace("trace-abc")
tp.flush()