Developers · Quickstart

From zero to first signed decision.

Install the SDK, wrap your first model call, receive a signed decision record, verify it with the open-source CLI. Typical time from import to first signed decision is under 10 minutes.

Four lines of Python, one decision record. This is what onboarding to Veridra actually looks like.

Before you start

  • A Veridra sandbox API key (request through contact during pre-GA; self-serve sign-up arrives with GA).
  • A signing key — for sandbox, we provision a managed key; for production, BYOK through your KMS.
  • One model call you want to wrap — any LLM provider, any custom model, any decision you want proved.

Step 1 — Install the SDK

Pick the language you're working in. All four SDKs expose the same conceptual interface.

Python
pip install veridra
Node.js
npm install @veridra/sdk
Go
go get github.com/veridra/sdk-go@latest
Java (Maven)
<dependency>
  <groupId>io.veridra</groupId>
  <artifactId>veridra-sdk</artifactId>
  <version>0.1.0</version>
</dependency>

Step 2 — Wrap your first decision

The pattern is always the same: construct a client, call attest() around your model invocation, receive a signed decision record back. Here is the Python example:

Python
from veridra import Client

veridra = Client(api_key="vk_sandbox_...")

# Your existing model call
def underwrite(application):
    result = your_model.predict(application)
    return result

# Wrap it
application = {"income": 85000, "credit_score": 720, "state": "NY"}

with veridra.attest(
    system="loan-underwriter-v3.2",
    risk_tier="high",              # EU AI Act Annex III
    jurisdiction="US-NY",
    inputs=application,
) as decision:
    result = underwrite(application)
    decision.record(
        outcome=result["approved"],
        confidence=result["confidence"],
        policy_checks=["fair-lending", "adverse-action"],
        human_review="not_required",
    )

print(decision.id)            # dec_9a3f21b4
print(decision.signed)        # True
print(decision.log_entry)     # 18942017

Step 3 — Receive the signed record

The record your SDK produces is the canonical Veridra decision object. Every field is signed together; tampering with any of them breaks the signature.

JSON (example record)
{
  "decision_id": "dec_9a3f21b4",
  "system": "loan-underwriter-v3.2",
  "risk_tier": "high",
  "outcome": "approve",
  "confidence": 0.874,
  "inputs_hash": "sha256:7f2a...c091",
  "model_hash": "sha256:e4d1...b8a3",
  "policy_checks": ["fair-lending", "adverse-action"],
  "human_review": "not_required",
  "timestamp": "2026-04-20T14:22:07.441Z",
  "jurisdiction": "US-NY",
  "signature": "ed25519:5d3b...7a02",
  "log_entry": 18942017
}

Step 4 — Verify it with the open-source CLI

The verification CLI is open-source (Apache 2.0), runs locally, and needs no network connection to Veridra. This is the property that lets customers, regulators, and auditors independently confirm the evidence.

Shell
# Install
brew install veridra-verify           # macOS
apt install veridra-verify            # Debian / Ubuntu

# Verify a single record
veridra-verify record dec_9a3f21b4.json
# ✓ signature valid · ed25519
# ✓ canonical form matches
# ✓ transparency log inclusion proof verified
# ✓ record is internally consistent

# Verify an entire evidence pack
veridra-verify pack evidence-2026-04.zip
The verifier is the product
Why independent verification matters
If verification required connecting back to Veridra, the evidence would depend on our availability and honesty. Because verification is fully local — signature math, Merkle inclusion proof math, canonical form check — an auditor opening a 2030 investigation about a 2026 decision can run the verifier and get a yes-or-no answer without us being involved at all. This is the separation of evidence from vendor that regulators actually want.

Where to go next

  • Wire through your KMS: switch from the sandbox managed key to BYOK in AWS KMS, Azure Key Vault, GCP KMS, or Vault. See SDK configuration.
  • Add policy checks: declare your governance policies in Rego and have them enforced at the signing gateway.
  • Add continuous monitoring: enable Watch module to get drift detection and scheduled evaluation on the same decision stream.
  • Build your first evidence pack: generate a regulator-ready pack with veridra pack once you have decision volume.
  • Integrate with your CI: sign your model cards as part of the deployment pipeline using the same SDK.

Provider-specific wrappers

For common LLM providers, we ship drop-in wrappers that handle the integration boilerplate:

  • veridra.integrations.openai — wraps OpenAI Python SDK with attest
  • veridra.integrations.anthropic — wraps Anthropic Python SDK with attest
  • veridra.integrations.bedrock — AWS Bedrock InvokeModel calls
  • veridra.integrations.vertex — Google Vertex AI prediction requests
Troubleshooting
If the first call doesn't work
The most common first-call failures: missing or mis-scoped API key (check sandbox vs. prod), time skew beyond the 5-minute window (check NTP), network egress rules blocking our API endpoint (allowlist api.veridra.io), or running an older SDK against newer API features (pin SDK versions per the release notes). Our docs team responds within one business day to devrel@veridra.io.