Madar Stamp API
Prove that a document, design, contract, dataset or build existed — exactly as it is — at a given moment. Your software sends only the file's SHA-256 fingerprint; the MADAR network records it permanently, and anyone can check it later. The file itself never leaves your systems.
🔒 Private by design
Only fingerprints are sent. A fingerprint cannot be turned back into the file.
⛓️ Independent of us
The record lives on the MADAR network, not in our database. Anyone can read it from any MADAR node.
⚙️ Built for automation
One HTTPS call per file. Stamp every release, invoice, report or upload as it happens.
Paid in USDC or USDT on Solana, Base or Arbitrum, straight to the MADAR Network wallet. No card, no account. Stamping single files by hand stays free on the stamp page.
Get an API key
How to use it
- Compute the SHA-256 fingerprint of the file (64 hex characters).
sha256sum contract.pdf # Linux / macOS: shasum -a 256 contract.pdf Get-FileHash contract.pdf # Windows PowerShell
- Send it with your key. The answer is
202with your remaining stamps for the month.curl -X POST https://madar-network.com/api/stamp/submit \ -H "Authorization: Bearer msk_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"fingerprint":"9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"}' - About a minute later the record is on chain. Read it any time:
curl https://madar-network.com/api/stamp/9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08 # {"found": true, "block": 78541, "moment": 1791154240005, ...} moment = milliseconds since 1970 (UTC)
Python example
import hashlib, requests
fp = hashlib.sha256(open("contract.pdf", "rb").read()).hexdigest()
r = requests.post("https://madar-network.com/api/stamp/submit",
headers={"Authorization": "Bearer msk_YOUR_KEY"}, json={"fingerprint": fp})
print(r.status_code, r.json())Node.js example
import { createHash } from "node:crypto";
import { readFile } from "node:fs/promises";
const fp = createHash("sha256").update(await readFile("contract.pdf")).digest("hex");
const r = await fetch("https://madar-network.com/api/stamp/submit", {
method: "POST",
headers: { "Authorization": "Bearer msk_YOUR_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ fingerprint: fp }),
});
console.log(r.status, await r.json());Answers and errors
| Status | Meaning |
|---|---|
| 202 | Accepted. It will be on chain in about a minute. Already-queued fingerprints also return 202. |
| 409 | This fingerprint is already stamped (first stamp wins). The existing record is in the answer. Not counted. |
| 400 | The fingerprint is not 64 hex characters. |
| 401 | Unknown API key. |
| 402 | The key is not active — renew it below. |
| 429 | Monthly quota reached (upgrade below), or too many requests at once. |
Verify — without trusting us
A stamp is a record on the MADAR network itself (runtime module Stamp), written by blocks that every node checks. You can confirm it three ways:
- On the web: drop the original file on the stamp page — the fingerprint is computed in your browser.
- From our API:
GET /api/stamp/<fingerprint>as shown above. - From your own node: run any MADAR node (the node app takes a minute to install) and ask it directly with the open-source command
madar-node stamp lookup --rpc 127.0.0.1:9966 --fingerprint <hex>(9966 is the node app’s local port; use your own node’s RPC address otherwise). No request reaches our servers. Source: github.com/MADAR-NETWORK/MADAR.
Keep the original file exactly as stamped: changing a single byte changes the fingerprint.
My key
Paste your API key to see this month's usage, pay an invoice, renew or upgrade.
FAQ
What exactly is stored?
The 32-byte fingerprint, the block it was recorded in and the time of that block. No file, no file name, no customer data. Optional registrant names on the stamp page are stored only as a fingerprint too.
What happens when I reach my monthly quota?
Further requests return 429 until the next calendar month (UTC), or until you upgrade. Requests for fingerprints that are already stamped are not counted.
How does paying with USDC / USDT work?
You get an invoice with a unique amount. Send exactly that amount, on the network you chose, to the address shown. The plan starts as soon as the transfer is seen on chain (usually a few minutes) and runs 30 days. Paying again before the end adds 30 more days.
I sent a different amount or used the wrong network.
Write to contact@madar-network.com with the transaction link and your key.
Is a stamp legal proof?
A stamp is technical evidence that a file with exactly this content existed no later than the recorded time, kept on a public network that no single party controls. How it is weighed is up to whoever examines it.
How do I contact you?
By email only: contact@madar-network.com.