This space helps you explore everything Pandora has to offer — from quickstart guides and API integration to advanced security models and use cases.
Use the menu on the left to navigate through topics. Whether you're a developer, legal professional, or enterprise, you'll find what you need to integrate, understand, and trust Pandora.
Don't know where to begin? Start with “What is Pandora?” to discover the foundation.
Pandora is a next-generation notarization platform designed for speed, security, and auditability.
It allows to notarize documents by tamper-proof precise timestamping, i.e. to provide proof of existence, integrity, and ownership for digital documents or data.
It allows users to:
Deliver rock-solid digital proofs for contracts, wills, and sensitive legal documents — instantly verifiable, tamper-proof, and built for trust.
Protect your most valuable assets — from intellectual property to confidential records — with blockchain-grade security and permanent proof.
Supercharge your apps with secure notarization — seamless API integration to add trust and transparency to every workflow.
Preserve your discoveries and intellectual work with immutable, verifiable proofs — because your ideas deserve lasting protection.
Secure official records and public documents with unmatched transparency — enhancing trust and accountability in every action.
Safeguard your most important documents — IDs, certificates, and more — with permanent, verifiable proof, accessible anytime.
The document is processed through a cryptographic hash function (e.g., SHA-256), which produces a unique fixed-size string (hash).
This hash acts as a digital fingerprint of the document.
The hash (not the actual document) is embedded into a blockchain message.
This transaction is then confirmed and stored in Pandora's rollup (a layer-2 solution on top of the blockchain Tezos), creating a permanent, immutable record.
Later, anyone can hash the original document again and compare it with the hash stored on the blockchain.
If the hashes match, it proves that the document has not been tampered with and existed at that timestamp.
Log into the application.
Main page of the application for a new user.
Select a file to notarize.
The browser will hash (i.e. fingerprint) the document, it won't be uploaded anywhere (hashing can take a few seconds if the file is large).
You can check if this document was already notarized. In this case it isn't.
You can also optionally add textual information to the file you want to notarize. This piece of information will not be notarized, but is available in the database and can help annotate notarizations for documents you later want to retrieve.
You can then click the "notarize" button. This will call Pandora's API and will show the notarization as "Pending" if it was successfully sent to the backend.
Once the notarization is effective, the "Pending" field will turn green with the notarization timestamp (after only a few seconds). The notarization will also be added to the list of documents for your account below.
If you try to notarize a document that has already been notarized you will be presented with the following message (here we attempt to notarize the document we just notarized before).
Once you have notarized multiple documents, you can recover information for all previous notarizations in your account.
Paste the proof hash to check its authenticity instantly.
Save your proof locally or share a public verification link.
Simple and powerful REST API to interact with Pandora's services.
You can use any secure hash function that produces 256 bits (32 bytes) hashes. We recommend using SHA256.
On linux, you can hash a file with the following command
$ sha256sum file.txt
88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979 file.txt
This outputs the hash in hexadecimal and the name of the file. You just need the hexadecimal part (which should be 64 characters long).
On mac OS, you can achieve the same with:
$ shasum -a 256 file.txt
88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979 file.txt
On windows, you can use Powershell:
> Get-FileHash -Algorithm SHA256 file.txt
Algorithm : SHA256
Hash : 88DE64A41E9441C36BF24601EED66FC8BC52952178403D3CD3CD8C770EDD7979
Path : C:\path\to\your\file.txt
Submit your hashed data to Pandora and receive a notarization receipt.
To notarize a document whose hash is
88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979
(see how to
generate the hash), use e.g.
curl to call Pandora's API which can be accessed at https://api.openpandora.io
(visit this link to view the OpenAPI specification).
curl -f -X POST -H 'Content-Type: application/json' https://api.openpandora.io/notarize/hash -d '"88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979"'
The server answers with an empty JSON object on success.
{}
Use our API or the public blockchain to independently verify a proof.
To check if a document with
88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979
(see how to
generate the hash) is notarized, use e.g.
curl to call Pandora's API which can be accessed at https://api.openpandora.io
(visit this link to view the OpenAPI specification).
curl -f -X POST -H 'Content-Type: application/json' https://api.openpandora.io/notarize/status -d '"88de64a41e9441c36bf24601eed66fc8bc52952178403d3cd3cd8c770edd7979"'
The server answers with the notarization information (the timestamp) when the hash has already been notarized.
{"status":"notarized","timestamp":"2025-05-23T14:04:00-00:00"}
Examples in JavaScript and Python for integrating with Pandora.
Here is an example script to notarize a document with python
import hashlib
import requests
import sys
import time
def main():
if len(sys.argv) != 2:
print("Usage: python script.py ")
sys.exit(1)
file_path = sys.argv[1]
# Step 1: Read file and compute SHA-256 hash
with open(file_path, "rb") as f:
file_content = f.read()
hash_hex = hashlib.sha256(file_content).hexdigest()
print(f"Hash: {hash_hex}")
# Step 2: Notarize
resp = requests.post(
"https://api.openpandora.io/notarize/hash",
headers={"Content-Type": "application/json"},
json=hash_hex
)
if not resp.ok:
print("Failed to notarize:", resp.text)
return
print("Notarization submitted. Waiting for confirmation...")
# Step 3: Poll status
start_time = time.time()
while time.time() - start_time < 60:
resp = requests.post(
"https://api.openpandora.io/notarize/status",
headers={"Content-Type": "application/json"},
json=hash_hex
)
if resp.ok:
data = resp.json()
if data:
print("Notarization status:", data)
return
else:
print("Error checking status:", resp.text)
return
print("Notarization not yet confirmed, retrying in 5 seconds...")
time.sleep(5)
print("Timeout: Notarization not confirmed within 60 seconds.")
if __name__ == "__main__":
main()
Use it with
python3 script.py example.txt
Here is an example script to notarize a document with javascript
const fs = require('fs');
const crypto = require('crypto');
const axios = require('axios');
if (process.argv.length !== 3) {
console.error("Usage: node script.js ");
process.exit(1);
}
const filePath = process.argv[2];
let fileBuffer;
try {
fileBuffer = fs.readFileSync(filePath);
} catch (err) {
console.error("Error reading file:", err.message);
process.exit(1);
}
const hashHex = crypto.createHash('sha256').update(fileBuffer).digest('hex');
console.log("Hash:", hashHex);
// Step 2: Notarize the hash
axios.post("https://api.openpandora.io/notarize/hash", hashHex, {
headers: { 'Content-Type': 'application/json' }
})
.then(() => {
console.log("Notarization submitted. Waiting for confirmation...");
return pollStatus(hashHex, 60_000, 5_000); // max 60s, every 5s
})
.catch((err) => {
console.error("Notarization request failed:", err.response?.data || err.message);
});
async function pollStatus(hash, timeoutMs, intervalMs) {
const startTime = Date.now();
while (Date.now() - startTime < timeoutMs) {
try {
const response = await axios.post("https://api.openpandora.io/notarize/status", hash, {
headers: { 'Content-Type': 'application/json' }
});
if (response.data && response.data.status === "notarized") {
console.log("Notarization status:", response.data);
return;
}
console.log("Notarization not yet confirmed, retrying in 5 seconds...");
} catch (err) {
console.error("Error checking status:", err.response?.data || err.message);
return;
}
await new Promise(resolve => setTimeout(resolve, intervalMs));
}
console.log("Timeout: Notarization not confirmed within 60 seconds.");
}
Use it with
node script.js example.txt
Compare the features of the free and premium plans.
Each notarization corresponds to a file hash timestamped on-chain.
Learn how we ensure the confidentiality and privacy of your data.
Pandora uses secure, scalable, and low-cost rollup technology.
All proofs can be audited by third parties without relying on Pandora.
Anyone can verify a proof using public blockchain data.
Your data never leaves your device — only the hash is stored on-chain.
You receive the same proof — no duplicates, no extra fees.
Yes, any file type can be notarized — PDF, video, images, etc.
You can reupload your file to regenerate the same proof.
Yes, blockchain-based timestamping is recognized in many jurisdictions.
If you encounter any issue, please let us know via email at contact@functori.com.
Visit our technical documentation to get in-depth insights of the underlying principles of Pandora and its implementation.
Contact our support team directly at contact@functori.com.
We offer custom onboarding and SLA for enterprise clients.