Built for developers

Proof of existence as an API.

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.

create a proof
# 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\"}"
201 Created
{
  "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.

Your file is never uploaded
Anchored on Polygon, usually within a minute
Anyone can check a proof without us
100 API proofs a month, free
How it works

Three calls, no SDK to learn

Plain HTTPS and JSON with a Bearer key. Clients for Python and Node are there if you want them.

1

Submit hashes

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.

POST /api/v1/proofs/batch
2

Get told when it is anchored

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.

POST /api/v1/webhooks
3

Show your user the certificate

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.

GET /cert/42
What you can build with it

A dated record your users can show to someone else

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.

Split sheets and collaboration

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.

Beat and sample marketplaces

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.

E-signature and document tools

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.

Photo and field apps

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.

Agent and automation logs

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.

Builds and releases

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.

Works with what you already use

Clients, automations and agents

Plain HTTPS works from anything. These save you the wiring.

PythonPyPI
pip install verify-proof

API client, command line and the offline verifier, in one package.

verify-proof on PyPI
Node.jsnpm
npm install verify-proof

API client with a webhook signature check. No dependencies.

verify-proof on npm
AI agentsMCP
pip install "verify-proof[mcp]"

An 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 up
n8nCommunity node
n8n-nodes-proofledger

Anchor a file from any workflow, or start one when a proof is anchored.

The node on npm
ZapierBy invite

Create 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 link
MakeBy invite

A custom app for Make scenarios: create, look up, list and verify proofs, and watch for anchored ones. By invite link.

Use the invite link
Agent run receiptsNew

Prove 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 work
GitHubApp + Action

Install 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 App
Self-hostOpen source
Fulcrum-Enterprises/proofledger-community

ProofLedger Community: the proof core as an AGPL server you run with your own Polygon key. Same API, same bundles.

The server on GitHub
Postman and OpenAPISpec

A Postman collection, and an OpenAPI 3.1 spec that generates a client in most languages.

Download the collection
EmbedsYour pages

A certificate card, a status badge and a verify widget for your own pages, one tag each.

Embed docs

Verification

Checking a proof does not depend on us.

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
  • Hash-only by design. The API takes a SHA-256 hash, not a file, so your files are never ours to lose or hand over.
  • A bundle you keep. Every proof has a downloadable bundle with the hash, the transaction and the anchor time, in the open verify-proof format. Store it next to the file.
  • Still verifiable without us. The transaction is on a public chain and the verifier is open source. If ProofLedger disappeared tomorrow, every proof already anchored would still check out.
Try it

See a proof made from one of your files

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.

Drop a file here, or click to choose
Any file type. Hashed locally in your browser.

Free proofs from this box are rate-limited to prevent abuse. Anchors to Polygon. The file name is shown on the public certificate.

Pricing

Priced by proofs a month

Every plan gets the whole API. Paid plans add volume and your product's name on the certificate.

Free
$0
100 API proofs a month
  • Batch, webhooks, bundles and embeds
  • Public certificate and verify link for every proof
  • No card
Developer
$19 a month
1,000 API proofs a month
  • Everything in Free
  • Your product's name on the certificate
  • Email support
Platform
$79 a month
10,000 API proofs a month
  • Everything in Developer
  • Your proofs go first in the anchoring queue
  • Replies within two business days

Past the allowance, paid plans pay $0.01 a proof. Free stops at 100 until the 1st. See plans and how billing works

Straight answers

What a proof shows, and what it does not

Worth being clear about before you build on it.

What it establishes
  • That a file with this exact SHA-256 fingerprint existed by the anchor time
  • That the file has not changed by a single byte since
  • That the record sits on a public chain, not in a database we control
  • That anyone can check it, without an account and without seeing the file
What it is not
  • It does not show who made the file
  • It is not a copyright registration
  • It does not stop anyone copying the file
  • It is not legal advice, and it promises nothing about how a dispute will go

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 producers

Start with a free key

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