Attesto

5 Minute Quickstart

5 Minute Quickstart

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.

Meet Article 13 with 1 line of code

For AI-decision workflows, Attesto turns one server-side event call into a receipt, verifier-ready evidence, and an Article 13 support report. It is an adoption shortcut for logging and traceability, not a legal-compliance claim by itself.

export OPENAI_BASE_URL=http://localhost:8765/v1

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
from datetime import UTC, datetime

client = AttestoClient(api_key=os.environ["ATTESTO_API_KEY"])
ack = client.log_event(
    type="ai.decision",
    status="verified",
    ts=datetime.now(UTC),
    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",
  ts: new Date(),
  payload: {
    model: "risk-classifier-v4",
    decision: "manual_review",
    policy_id: "policy-2026-01",
  },
});
console.log(ack.id);

4. Article 12 report

If your workflow is an AI-decision workflow, add the one-line attestation pattern before production rollout and generate the deterministic Article 12 report. The report states what is recorded and independently verifiable; it does not claim legal conformity.

export OPENAI_BASE_URL=http://localhost:8765/v1

This routes OpenAI-compatible calls through the local Attesto Inference Gateway so evidence capture starts without rewriting every application call site. Use a deployed gateway host in production.

attesto --token-env ATTESTO_TENANT_TOKEN \
  report article12 --stream str_... --output report.md

5. 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

6. 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 bundles offline-verify --file ./attesto-bundle.json