Quickstart

Get started with Crovia in under 5 minutes. This guide shows you how to register as a provider, push data, and get your first cryptographic proof.

Install the SDK

pip install crovia-sdk

Initialize the Client

from crovia_sdk import Crovia # Initialize with your API key client = Crovia(api_key="crv_your_api_key") # Check connection health = client.health() print(health) # {"status": "healthy", ...}

Register as Provider

# Register your organization provider = client.register( name="My Company", email="contact@mycompany.com", jurisdiction="EU" ) print(provider.crovia_id) # CRV-XXXXXXXX

Push Data & Get Proof

# Push training data proof = client.push( files=["training_data.jsonl"], repository="mycompany/ai-dataset" ) print(proof.proof_id) # PP-XXXXXXXX print(proof.merkle_root) # 0x7f3a... print(proof.verified) # True

That's it! You now have a cryptographic proof that your data was contributed at this specific time. This proof is legally binding and can be verified by anyone.

Installation

Crovia SDK supports Python 3.8+.

# Using pip pip install crovia-sdk # Using poetry poetry add crovia-sdk # From source git clone https://github.com/croviatrust/crovia-sdk cd crovia-sdk && pip install -e .

Authentication

All API requests require an API key. Get yours at crovia.trust.

# Option 1: Pass directly client = Crovia(api_key="crv_xxx") # Option 2: Environment variable # export CROVIA_API_KEY=crv_xxx client = Crovia() # Reads from env

Providers

A Provider is any entity that contributes data for AI training. Providers must register and complete KYC to receive payments.

KYC Levels

LevelRequirementsCapabilities
noneEmail onlyPush receipts
basic+ Phone verification+ Absence proofs
standard+ ID verification+ Payments up to €10K
enhanced+ Business documents+ Unlimited payments

Absence Proofs

Crovia's unique technology can cryptographically prove that specific data was NOT used in AI training.

# Opt-out your data absence = client.optout( data=b"My copyrighted content...", reason="GDPR erasure request", scope="global" # or "training", "inference" ) print(absence.commitment_id) # ABS-XXXXXXXX # Verify absence in a model is_absent = client.verify_absence( data_hash="abc123...", model_id="gpt-crovia-v1" ) print(is_absent) # True

Model DNA

Every AI model can have a cryptographic "birth certificate" that records its provenance.

# Create Model DNA certificate dna = client.create_model_dna( model_name="MyModel", model_version="1.0.0", training_data_hash="0x...", providers=["provider-a", "provider-b"], total_samples=1000000, architecture={"type": "transformer", "layers": 24} ) print(dna.dna_id) # DNA-XXXXXXXX print(dna.crovia_score) # 89

Providers API

POST /api/v1/provider/register

Register a new data provider.

Request Body

ParameterTypeDescription
namestringProvider name
emailstringContact email
jurisdictionstringLegal jurisdiction (EU, US, etc.)

Push API

POST /api/v1/push

Push data and receive cryptographic proof.

Request Body

ParameterTypeDescription
repositorystringRepository identifier
branchstringBranch name (default: main)
filesarrayFiles with path and content_hash

Absence API

POST /api/v1/absence/optout

Register data for opt-out and receive absence proof.

POST /api/v1/absence/verify

Verify data absence in a specific model.

Lineage API

POST /api/v1/lineage/dna

Create Model DNA certificate.

GET /api/v1/lineage/dna/{dna_id}

Retrieve existing Model DNA.

Score API

GET /api/v1/score/{provider_id}

Get Crovia Score for a provider.

POST /api/v1/score/compute

Compute and store Crovia Score.