Attesto

10 minutes

Attesto in 10 minutes

This is the shortest safe path from a clean tenant to a verified event. Use it to learn the shape of Attesto before you wire a full production integration.

1. Login

Open dashboard.attesto.eu and sign in as a tenant user. The tenant dashboard is where external users manage systems, streams, exports, webhooks, connectors, and billing.

2. Create a system key

Create one system for the backend service that will send events. Copy the generated key exactly once and store it in your server-side secret manager. Do not place it in browser code or public configuration.

3. Log one event

Python:

import os
from attesto import AttestoClient

client = AttestoClient(api_key=os.environ["ATTESTO_API_KEY"])
ack = client.log_event(
    type="ai.decision",
    status="verified",
    payload={
        "model": "risk-classifier-v4",
        "decision": "manual_review",
        "policy_id": "policy-2026-01"
    },
)
print(ack.id)

TypeScript:

import { AttestoClient } from "@attesto/sdk";

const client = new AttestoClient({
  apiKey: process.env.ATTESTO_API_KEY!,
});

const ack = await client.logEvent({
  type: "ai.decision",
  status: "verified",
  payload: {
    model: "risk-classifier-v4",
    decision: "manual_review",
    policy_id: "policy-2026-01",
  },
});
console.log(ack.id);

4. Verify the evidence

For v1, retrieve the proof for the event and submit it to POST /v1/public/verify. For v2 Proofstream, use POST /v2/verify with receipt, stream, checkpoint, anchor, IVC, or bundle objects.

curl -X POST https://verify.attesto.eu/v2/verify \
  -H "Content-Type: application/json" \
  --data-binary @attesto-proofstream-object.json

5. Export a verifier bundle

When stream policy requirements are satisfied, create a bundle from the tenant dashboard or API. A recipient can verify the bundle without an Attesto login.

attesto verify bundle ./attesto-bundle.json