Documentation
Quick start, in four steps.
One API call, a sealed PDF back, and a public verification link your users can share with anyone.
What you need
- A Deepstamp API key (starts with
dsk_) - A PDF document to certify
- Any language that can send HTTP requests (Node.js, Python, Go, curl...)
Get your API key
Sign in to your Deepstamp dashboard and generate an API key under Settings > API Keys. Your key starts with dsk_. Keep it secret, server-side only.
Confirm your key is active:
curl https://deepstamp.fr/api/v1/whoami \ -H "x-api-key: dsk_YOUR_KEY"
No dashboard access yet? Contact our team to get started.
Certify a document
Send your PDF to the certification endpoint. You get back a certified version of the PDF with an embedded proof, plus a unique verification identifier.
curl -X POST https://deepstamp.fr/api/v1/certify \ -H "x-api-key: dsk_YOUR_KEY" \ -F "file=@invoice.pdf" \ -F "certificationName=Invoice #2026-0504"
import fs from "fs";
import path from "path";
const file = fs.readFileSync("invoice.pdf");
const form = new FormData();
form.append("file", new File([file], "invoice.pdf", { type: "application/pdf" }));
form.append("certificationName", "Invoice #2026-0504");
const res = await fetch("https://deepstamp.fr/api/v1/certify", {
method: "POST",
headers: { "x-api-key": process.env.DEEPSTAMP_API_KEY },
body: form,
});
const json = await res.json();
const result = json.data;
// Save the certified PDF (includes embedded proof + verification link)
const certifiedPdf = Buffer.from(result.pades.signed_pdf_base64, "base64");
fs.writeFileSync("invoice-certified.pdf", certifiedPdf);
console.log("Done! Cert ID:", result.certif_hash);Tip: The certificationName field is the human-readable label shown on the verification page. Use something your users will recognize (e.g., "Invoice #2026-0504").
Return the certified PDF
The API returns a JSON response with the certified PDF (base64-encoded) and a unique certif_hash identifier.
{
"success": true,
"data": {
"certif_hash": "ctf_9f86d081884c7d659a2f...",
"pades": {
"signed_pdf_base64": "JVBERi0xLjQK..."
},
"short_link": {
"id": "abc12xyz",
"url": "https://deepstamp.fr/v/abc12xyz"
}
}
}The certified PDF. Decode from base64 and serve it to your user. This PDF contains embedded proof that anyone can verify.
The public verification link. Share it with your users — anyone can verify the document at this URL without an account.
Verification
Anyone who receives the certified PDF can verify its authenticity. Two options:
Public verification page
Share the link with your users. They (or their clients) open it in a browser and see the certification status instantly.
https://deepstamp.fr/v/abc12xyzProgrammatic verification
Upload any document to the verify endpoint to check if it has been certified. Useful for automated workflows.
POST /api/v1/verifyVerification is always free and public. No API key required for the public proof page.
Error handling
All errors follow a standard JSON format:
{
"success": false,
"error": {
"code": "MISSING_FILE",
"message": "Field 'file' is required"
}
}| Status | Reason |
|---|---|
401 | Missing or invalid API key |
400 | Missing file or certificationName in request body |
413 | File exceeds 25 MB limit |
415 | Unsupported file type (PDF only) |
429 | Rate limit exceeded — retry after the delay in the response header |
500 | Server error — contact support@deepstamp.fr |
Ready to go live?