TectraTectra
Quickstart

Sign your first image in 5 minutes

This guide walks you through creating an account, generating a signing key, and signing your first image. Choose your integration method.

Prerequisites

  • A Tectra account (free - create one below)
  • curl installed (for API path) OR Python 3.10+ (for SDK path) OR Node.js 18+ (for TypeScript path) OR Docker (for agent path)

Step 1 - Create your account

Register at tectra.vision or via the API:

bash
curl -X POST https://tectra.vision/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@company.com",
    "password": "your-password",
    "org_name": "Acme AI Inc.",
    "org_type": "ai_provider"
  }'

# Response:
# {
#   "access_token": "eyJ...",
#   "user": { "id": "...", "org_name": "Acme AI Inc." }
# }

Save the access_token - you'll use it below.

Step 2 - Create an API key

API keys (prefixed iai_) are used for programmatic access:

bash
curl -X POST https://tectra.vision/api/v1/keys/api-keys \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "production"}'

# Response:
# {
#   "key": "iai_live_abc123xyz...",
#   "id": "uuid-here"
# }
# Save the key - it is only shown once.

Step 3 - Generate a signing key

Each signing key is an Ed25519 keypair. The private key is Fernet-encrypted and stored server-side.

bash
curl -X POST https://tectra.vision/api/v1/keys/signing-keys \
  -H "Authorization: Bearer iai_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "main-key",
    "origin_type": "ai_generated_image"
  }'

# Response:
# {
#   "id": "signing-key-uuid",
#   "public_key_hex": "abc123...",
#   "name": "main-key"
# }
# Save the signing key ID.

Path A - REST API

Works with any language. Just HTTP.

Sign an image

bash
curl -X POST "https://tectra.vision/api/v1/sign?signing_key_id=YOUR_KEY_UUID" \
  -H "Authorization: Bearer iai_live_abc123..." \
  -F "file=@your-image.png"

# Returns JSON certificate:
# {
#   "record_id": "uuid",
#   "sha256": "abc123...",
#   "blockchain_status": "pending",
#   "certificate": { ... }
# }

Verify an image (no auth needed)

bash
curl -X POST https://tectra.vision/api/v1/verify \
  -F "file=@your-image.png"

# Returns:
# {
#   "authentic": true,
#   "confidence": 0.95,
#   "signer": { "org_name": "Acme AI Inc." },
#   "blockchain_tx": "0x...",
#   "checks": {
#     "watermark": { "passed": true, "details": "..." },
#     "sha256": { "passed": true, "details": "..." },
#     "perceptual_hash": { "passed": true, "details": "..." },
#     "blockchain": { "passed": true, "details": "..." }
#   }
# }

Path B - Python SDK

Signs locally. Your image bytes never leave your machine.

bash
pip install tectravision-sdk

You'll need your Fernet key from the dashboard (used to decrypt your private signing key locally):

python
from tectravision_sdk import TectraClient

client = TectraClient(
    api_key="iai_live_abc123...",
    signing_key_id="your-signing-key-uuid",
    api_url="https://tectra.vision",
    fernet_key="your-fernet-key",  # from dashboard
)

# Sign an image
result = client.sign("photo.jpg")
print(f"Record: {result['record_id']}")
print(f"Watermarked: {result['output_path']}")

# Verify
result = client.verify("photo.jpg")
print(f"Authentic: {result['authentic']}")
print(f"Signer: {result['signer']['org_name']}")

Path C - Docker Agent

Auto-sign all files in a directory. Zero code required.

yaml
# config.yaml
tectra:
  api_url: https://tectra.vision
  api_key: iai_live_abc123...
  signing_key_id: your-signing-key-uuid

watch:
  directories:
    - /data/input
  patterns: ["*.jpg", "*.jpeg", "*.png", "*.mp4"]
  recursive: true

output:
  signed_directory: /data/signed
  keep_originals: true
yaml
# docker-compose.yml
services:
  tectra-agent:
    image: tectravision/agent:latest
    volumes:
      - ./config.yaml:/app/config.yaml:ro
      - /path/to/output:/data/input
      - /path/to/signed:/data/signed
    restart: unless-stopped
bash
docker compose up -d
# The agent watches /path/to/output and signs every new file automatically.

Path D - TypeScript SDK

Sign and verify from Node.js or the browser.

bash
npm install @tectra/sdk
typescript
import { TectraClient } from "@tectra/sdk";

const client = new TectraClient({
  apiKey: "iai_live_abc123...",
  signingKeyId: "your-signing-key-uuid",
});

// Sign an image
const signResult = await client.sign("./photo.jpg");
console.log("Record:", signResult.recordId);
console.log("Watermarked:", signResult.outputPath);

// Verify an image
const verifyResult = await client.verify("./photo.jpg");
console.log("Authentic:", verifyResult.authentic);
console.log("Signer:", verifyResult.signer?.orgName);

See the full TypeScript SDK documentation for batch signing, video support, and more.

Just want to verify?

Install the tectra-verify open-source package or use the Chrome browser extension - no account needed.

What's next?

Learn how each layer of verification works under the hood.

How It Works