Send a hash, get a Polygon-anchored certificate anyone can verify without us. The file never leaves your servers; only its SHA-256 fingerprint does.
The free plan includes 100 API proofs a month. No card.
# hash on your side; the file stays where it is HASH=$(sha256sum contract.pdf | cut -d' ' -f1) curl https://proofledger.io/api/v1/proof \ -H "Authorization: Bearer $PROOFLEDGER_KEY" \ -H "Content-Type: application/json" \ -d "{\"sha256\": \"$HASH\", \"external_id\": \"doc-42\"}"
{
"id": 42,
"external_id": "doc-42",
"polygon_status": "PENDING",
"certificate_url": "https://proofledger.io/cert/42",
"verification_url": "https://proofledger.io/verify.html?hash=9f2c..."
}
Abridged. The Polygon anchor usually lands within a minute, and a signed webhook tells you when.
Plain HTTPS and JSON with a Bearer key. Clients for Python and Node are there if you want them.
One at a time, or up to 100 in a single batch call. Attach your own record id: sending the same id again returns the same proof, so retries never create duplicates.
Register a webhook once. When the Polygon anchor lands, we POST a signed event with the proof and its bundle. Or poll for proofs anchored since a time.
Every proof has a public certificate page and a verify link anyone can open. On paid plans the certificate can carry your product's name: Recorded through YourApp · Anchored by ProofLedger.
If your users face a counterparty, a dispute or a claim, a dated record of the exact file is a feature they will thank you for. You already hold the file; the proof is one call away.
Anchor the split sheet, the demo and each stem as they are uploaded, so the date each exact file existed sits on a public chain rather than only in your database.
Timestamp every beat at listing time, a hundred per call. A producer who sent a preview can show the full file existed first, without handing anyone the stems.
Your audit trail says what your servers say. An anchor adds a date that does not depend on your company existing, and a certificate the other party can check on their own.
Inspection photos, condition reports, before-and-after sets. Anchor them as they are captured, so the date is fixed by the network and not by a device clock anyone can change.
When software acts on someone's behalf, anchor the log or the output for a tamper-evident record that this exact output existed by the anchor time. One hash per run, or one batch a day.
A checksum next to a build proves two copies match, not that the build existed by a given date. Anchor each release from CI so that date does not depend on whoever controls the storage.
Plain HTTPS works from anything. These save you the wiring.
API client, command line and the offline verifier, in one package.
verify-proof on PyPIAPI client with a webhook signature check. No dependencies.
verify-proof on npmAn MCP server for Claude Desktop, Cursor (one-click install) and other MCP clients, listed in the MCP Registry, and a Claude Code plugin that anchors a file in one step.
Set it upAnchor a file from any workflow, or start one when a proof is anchored.
The node on npmCreate a proof from a hash or a file, find one by your own id, verify a hash, or start a Zap when a proof is anchored. By invite link until Zapier lists it publicly.
Use the invite linkA custom app for Make scenarios: create, look up, list and verify proofs, and watch for anchored ones. By invite link.
Use the invite linkProve what an AI agent did without storing what it saw: a hash chain over the run's steps, anchored as one proof. Python, Node, CLI, MCP tools.
How receipts workInstall the App on a repository and every release is anchored: a proof per file in the release notes, the bundle attached. Or run the Action from your own workflow.
Install the GitHub AppProofLedger Community: the proof core as an AGPL server you run with your own Polygon key. Same API, same bundles.
The server on GitHubA Postman collection, and an OpenAPI 3.1 spec that generates a client in most languages.
Download the collectionA certificate card, a status badge and a verify widget for your own pages, one tag each.
Embed docsVerification
A timestamp in your own database is only as good as whoever controls the database. An anchor puts the date on a public chain that nobody owns, and the bundle lets anyone check it long after the fact.
Check a hash, with no key and no account
curl "https://proofledger.io/api/v1/verify?hash=$HASH"
# or offline, without contacting us at all
pip install verify-proof
verify-proof verify contract.pdf --proof bundle.json
verify-proof format. Store it next to the file.No account and no card. The file is hashed in your browser and never uploaded. We receive only its fingerprint and file name, and you get a real certificate anchored on Polygon.
Free proofs from this box are rate-limited to prevent abuse. Anchors to Polygon. The file name is shown on the public certificate.
Every plan gets the whole API. Paid plans add volume and your product's name on the certificate.
Past the allowance, paid plans pay $0.01 a proof. Free stops at 100 until the 1st. See plans and how billing works
Worth being clear about before you build on it.
A branded certificate reads Recorded through YourApp · Anchored by ProofLedger. It never says "verified by": the proof is a dated record, not an endorsement.
Making music? The web tool timestamps a demo in your browser before you send it anywhere, free for up to 1,000 tracks a month.
For songwriters and producersWire the whole flow on the free plan, then pick the plan that matches your volume. Using the API accepts the API Terms.
Reference
Proof of existence is a record that a specific file existed by a specific time. A proof-of-existence API takes a cryptographic fingerprint of the file, records it on a public blockchain, and returns a certificate and a link anyone can check, so the date does not rest on trusting whoever stored the file or ran the service.
ProofLedger is one such API, anchoring SHA-256 fingerprints on Polygon. Software teams can call it from their own products to give their users a dated, independently checkable record of a draft, a contract, a photo, a release build or an agent's output. It records existence and integrity at a point in time; it does not establish authorship or ownership.