Skip to Content
SDK referenceOverview & Choosing a Package

VeriProof SDKs

Choose the core SDK for your application’s language, then add the Enforce adapter for each framework your application uses. Every package in the 1.0.0 release enforces policy: 35 Enforce adapters build on the six core SDKs.

Who can use this
Available to
DeveloperAdministrator
Not available to
Governance EngineerCompliance OfficerBusiness OwnerAuditor

Tools and SDKs in the customer portal provides the packages and private installation commands available to your tenant.

Choose your language

LanguageCore packageEnforce adaptersRuntime
TypeScript@veriproof/sdk-core11Node.js 22
Pythonveriproof-sdk8Python 3.11 or later
.NETVeriproof.Sdk.Core5.NET 10
Javacom.veriproof:veriproof-sdk-core6Java 21
Goveriproof.app/sdk/go3Go 1.26.6 or later
Rustveriproof-sdk2Rust 1.96 or later

Choose the right package category

CategoryUse it forEnforcement
Core SDKApplication-owned model calls, tools, workflows, and business actionsYes
Enforce adapterOne documented framework operationYes, within that boundary

An Enforce adapter uses the same typed outcomes and fail-closed behavior as its core SDK. Tracing on its own doesn’t enforce anything.

Read SDK categories and framework coverage to see exactly what each adapter checks.

What every core SDK does

Every core SDK checks policy before protected work starts and before its result is released. Each SDK provides:

  • typed allow, warning, transform, deny, review, stop, degraded, timeout, and cancellation results;
  • signed, durable human-review continuation with structured responses;
  • run-scoped and application-scoped stop delivery;
  • application facts and generated industry vocabulary for policy rules;
  • hosted Server Ingest and licensed Edge Gateway paths;
  • an account-free test harness for deterministic application tests;
  • evidence references, diagnostics, flush, and graceful shutdown.

Only completed, completed-with-warning, and transformed results can contain a released value. Reconcile an uncertain execution before retrying an external side effect.

Govern one action

  1. Open your application in the customer portal.
  2. Copy its application SDK key to VERIPROOF_API_KEY in your secret store.
  3. Copy the private package commands from Tools and SDKs.
  4. Create one SDK client when the application starts.
  5. Put the protected model, tool, or business side effect inside the SDK’s govern callback.
  6. Pass application facts and industry values that active rules need.
  7. Handle the typed result. Never release a denied or withheld value.
  8. Flush and close the client during graceful shutdown.

The hosted service is the default. Set the language’s Edge endpoint option only when your tenant has an Edge Gateway license. Edge keeps policy checks off the central request path while its signed policy lease remains valid.

Continue after human review

A review_required result contains a durable checkpoint. Save it before returning control to the caller. Your callback must verify the signed raw request before parsing it. A worker then claims the checkpoint, revalidates current application state and policy, and resumes the protected action once.

Your application owns its checkpoint store, protected side effect, and idempotency key. The SDK fences uncertain execution until your application reconciles the durable effect.

Read the human-review lifecycle and your language guide before implementing a callback.

Add policy data

Use application facts for values specific to your workflow. Use generated industry values when a shared business term or external code improves consistency. The authenticated field contract tells the SDK which active-rule fields are required, their types, and any allowed values.

Read Provide data for policy rules for the exact payload shape.

Record the model and prompt version

In TypeScript, Python, and .NET, pass the model option on each governed call with the model ID and, optionally, its provider. Each call records its own model, so a session can show more than one.

LanguageModel option
TypeScriptmodel: { id: 'gpt-4.1-mini', provider: 'openai' }
Pythonmodel=GovernModel(id="gpt-4.1-mini", provider="openai")
.NETModel = new GovernModel("gpt-4.1-mini", "openai")

Set the prompt version in the session context of each governed call. Use the name your team gives the prompt release, such as invoice-triage-v12, up to 128 characters. It is recorded even when content capture is off, so don’t include prompt text or personal data.

LanguageSession context field
TypeScriptsessionContext: { promptVersion }
Pythonsession_context=SessionContext(prompt_version=...)
.NETSessionContext = new SessionContext { PromptVersion = ... }
GoSessionContext: &SessionContext{PromptVersion: &version}
JavaSessionContext.builder().promptVersion(...)
RustSessionContext { prompt_version: Some(...), ..Default::default() }

VeriProof compares the models and prompt versions each application reports. A value the application hasn’t used before is treated as a change and added to the Inbox. The first value an application reports becomes its baseline, and returning to an earlier value isn’t a change.

Next steps

Last updated on