Truthlocks Content Protection lets individual creators prove authorship of their work with cryptographic attestations anchored to an immutable transparency log. This guide covers the full flow: signing up, protecting content, managing protections, sharing proofs, and embedding badges.Documentation Index
Fetch the complete documentation index at: https://docs.truthlocks.com/llms.txt
Use this file to discover all available pages before exploring further.
How it works
Sign up
Sign up at
verify.truthlocks.com/signup. When you first visit the Protect
page, a setup card prompts you to provision your signing identity with one
click — a personal Ed25519 issuer and key pair are created automatically.Upload content
On the Protect page, select a file up to 50 MB. Your file is hashed
client-side (SHA-256) — the file itself never leaves your browser.
AI metadata
Metadata is automatically extracted (category, description, content type) to
enrich your protection record.
Mint attestation
The hash and metadata are signed by your personal issuer and anchored to the
transparency log.
Protecting Content via the API
Compute the SHA-256 hash of your content client-side, then call the mint endpoint:Request
content_hash you submitted, the protected_at timestamp, and a shareable proof URL:
Response
content_hash and protected_at to confirm which content was protected and exactly when, without making a follow-up API call.
Client-side hashing (JavaScript)
The file never leaves your browser. Compute the hash before calling the API:Duplicate and similarity detection
Before minting a protection, Truthlocks checks whether similar content has already been protected. After hashing your file, the platform runs a similarity check and returns any matches above a confidence threshold. Each match includes:- Similarity score — how closely the content matches an existing protection.
- Owner — the username of the person who protected the original.
- Date — when the original protection was created.
Similarity detection runs automatically in the Protect page UI. When using the API directly, you can check for duplicates before minting by calling
POST /v1/consumer/similarity with your content hash.Quick Protect
Quick Protect is a streamlined flow that lets you protect content in a single step from the consumer dashboard. Instead of navigating to the Protect page, selecting a file, reviewing metadata, and confirming — Quick Protect combines these into one action. From your dashboard, drag a file onto the Quick Protect drop zone — or click it to open a file picker. The protection is minted immediately: Truthlocks hashes the file client-side, runs AI metadata extraction in the background, and creates the protection. The result appears in your protections list within seconds.Quick Protect always creates private protections. To make a protection public and add it to your portfolio, toggle its visibility from the Protections page.
Signing identity auto-provisioning
The first time you protect content, Truthlocks creates a personal signing identity (issuer and Ed25519 key pair) for your account automatically. This is a one-time setup:- You submit a protection request.
- If no signing identity exists, the platform provisions one.
- The protection is then minted using your new identity.
412 response with a NO_ISSUER error code, call POST /v1/consumer/me/provision-issuer to create your signing identity, then retry the mint request.
AI metadata extraction
When you upload a file through the Protect page, Truthlocks automatically extracts metadata to enrich your protection record:- Title and description — generated from the file content.
- Category — one of:
photography,digital_art,source_code,document,music,video,design,data, orother. - Content type — the detected media type of the file.
Verifying a file
Anyone can verify that a file has not been altered since it was protected. Truthlocks compares the SHA-256 hash of the file you provide against the hash that was stored when the content was originally protected.Verify through the portal
The verify portal lets you check a file without writing any code:Open the verify portal
Go to verify.truthlocks.com and switch to
the File tab.
Select your file
Choose the file you want to check. The SHA-256 hash is computed entirely in
your browser — the file is never uploaded.
Read the result
The portal displays one of three outcomes:
- Document Verified — the file matches the original protection.
- Document Altered — the file has been modified since it was protected. The portal shows both the uploaded and expected hashes.
- Document Hash Not Available — the protection was created before document hashes were stored, so the check cannot be performed.
Verify through the API
Pass the file’s SHA-256 hash asdocument_hash_hex to the Verify endpoint:
VALID. If they differ, the verdict is ALTERED. See the Verify API reference for the full list of verdicts and reason codes.
How the document hash is stored
When you protect content, Truthlocks stores a SHA-256 hash that verifiers use to confirm the original file has not been altered. In the consumer flow, this is thecontent_hash you compute client-side. In the B2B/API flow, you can pass the hash explicitly using the document_hash parameter on the Mint Attestation endpoint.
All existing consumer protections now include a verifiable
document_hash in
their proof bundles, so file integrity verification works for both new and
older records.Managing protections
- List protections:
GET /v1/consumer/protectionsreturns all your protected content. - Toggle visibility:
PUT /v1/consumer/protections/{id}/visibilitywith{"visibility": "public"}or"private". - Set username:
PUT /v1/consumer/me/usernameto claim a public portfolio URL. - View stats:
GET /v1/consumer/statsfor total protections, public count, and verification count.
Public proof pages
Every protection generates a public proof page at theverify_url returned by the mint endpoint. Anyone can view the proof page without logging in — it shows what was protected, when, and by whom.
Each proof page includes an AI-generated summary describing the protected content, its category, and the protection date. Summaries are cached for five minutes and regenerate on the next visit after expiry. If AI is unavailable, a structured template summary is shown instead. See the AI metadata guide for details on how summaries and caching work.
To programmatically fetch proof page data (for example, to render custom proof pages or generate Open Graph link previews), use the Get Proof Page Metadata endpoint:
The proof metadata endpoint is read-only and returns only the metadata you provided when protecting the content. Your original file is never stored or exposed.
Embeddable Badges
Add a verification badge to your website, README, or portfolio:Downloadable Certificates
Download a formal SVG protection certificate for any attestation:Public Portfolio
Set a username to get a public portfolio page atverify.truthlocks.com/portfolio/YOUR_USERNAME. Only protections with visibility: "public" are shown. The portfolio includes OpenGraph metadata for rich social sharing.
Pricing Tiers
- Free: 50 protections/month, SHA-256 hashing, transparency log, shareable links, public portfolio.
- Creator ($9/mo): 500 protections/month, priority processing, custom badges, advanced analytics, API access.
- Pro ($29/mo): Unlimited protections, bulk API, custom certificates, priority support, team collaboration.
First-time setup
New users see a Set up content protection card on their dashboard. Click the setup button to provision your personal signing identity — this creates an Ed25519 issuer and key pair in one click. After provisioning, you are redirected to the Protect page to start protecting content.You only need to do this once. After your signing identity is provisioned,
the setup card disappears and you can protect content directly.
Security model
- Files never leave the browser — only the SHA-256 hash is transmitted.
- Each consumer gets a personal Ed25519 signing key provisioned automatically on first use.
- Maximum file size is 50 MB.
- Attestations are anchored to an append-only transparency log (RFC 6962 compatible).
- Row Level Security isolates all tenant data in PostgreSQL.
- Proofs are independently verifiable without Truthlocks involvement.

