Stamp a low-visibility forensic grid at download and prove lineage later — no DRM, no PII stored. · Last updated: 2026-04-14
→ New here? You're in the right place — follow the steps below.
→ Using WooCommerce? Switch to the
WooCommerce tab.
→ Need a full HTML walkthrough? See the
Integration tab.
→ Testing or debugging? Try
Verify & API or
Troubleshooting.
Analyze whether a document has been modified after distribution and whether its origin remains recoverable.
The InkDNA Integrity Tool is a local analysis utility that evaluates structural consistency within a document. It detects signs of post-distribution modification by identifying local inconsistencies in texture, edges, and compression patterns. It also estimates whether attribution remains feasible after transformations such as re-encoding, screenshots, or partial degradation.
InkDNA proves origin. The Integrity Tool shows whether that origin survived.
Runs locally. No account required.
/claim.html.<body> on pages with download links):
<script src="https://inkdnafingerprint.com/plugin.js" data-key="pk_XXXX" data-observe='a[href*=".pdf" i],a[data-inkdna]' data-mode="loose" async></script>
The CDN loader works on any platform that allows script
injection.
We focus on the loader and WooCommerce integration. Reach out for
custom setups.
InkDNA Fingerprinted Downloads and click
Install Now, then Activate.
API Base and API Key under
WooCommerce → Settings → InkDNA.
API keys are available on the landing page. The plugin simplifies integration — no manual order ID wiring needed.
Click any screenshot to enlarge. Use ← / → to navigate, Esc to close.
Exact HTML you can drop onto a site that serves downloadable PDFs. Shows the loader, a sample download link, and ways to pass an order token when files are stamped.
Place this near the end of your <body> on pages
that host download links.
<script src="/plugin.js"
data-api="https://your-inkdna-api.example"
data-key="pk_XXXX"
data-observe='a[href*=".pdf" i],a[data-inkdna]'
data-mode="loose" async></script>
Note: the loader requires both
data-api and data-key to run. If either is
missing the loader will warn in the console and will not run —
useful for a non-live demo page.
Add data-inkdna to your normal PDF anchor and — ideally
— a per-order token via data-inkdna-order:
<a href="/assets/sample.pdf" data-inkdna data-inkdna-order="ORDER-123">Download your PDF</a>
When clicked, the loader sends the asset and the detected order token (if present) to your inkdna API to request a stamped PDF.
The loader does not generate order IDs. If none is found, the server may issue an internal token. For strongest attribution, always pass a server-generated order ID tied to your PDF.
Add the order token directly to the link:
<a href="/assets/sample.pdf" data-inkdna data-inkdna-order="ORDER-123">Download</a>
If your platform already appends an order id in the download URL, the loader will detect these query keys:
/assets/sample.pdf?order=ORDER-123
/assets/sample.pdf?order_id=ORDER-123
/assets/sample.pdf?order-received=ORDER-123
Recognized keys: order, order_id,
order-received, oid.
On thank-you or order-complete pages, add this small snippet. It finds common order elements or query params and copies the value into all PDF links so the loader can pick it up.
<script>(function(){
var el = document.querySelector('#orderNo, .order-number, [data-order-number]');
var ord = el ? (el.textContent || el.value || '').trim() : '';
if (!ord) {
var q = new URLSearchParams(location.search);
ord = q.get('order') || q.get('order_id') || q.get('order-received') || q.get('oid') || '';
}
if (ord) {
document.body.dataset.inkdnaOrder = ord;
document.querySelectorAll('a[href*=".pdf" i],a[data-inkdna]').forEach(function(a){
a.dataset.inkdnaOrder = ord;
});
}
})();</script>
This snippet is intentionally minimal and safe — it only reads
visible page content and query params and writes a
data-inkdna-order attribute to anchors. It does not
access any backend or sensitive data.
<script>(function(){
var p=new URLSearchParams(location.search);
var ord=p.get('order-received')||p.get('order')||'';
if(ord) document.body.dataset.inkdnaOrder=ord;
})();</script>
data-inkdna-order="{{ORDER_TOKEN}}").
data-api (your API base) and
data-key (public key prefix). If either is missing
the loader will not run.
If you use WooCommerce, the plugin automates order mapping on the thank-you page — see the WooCommerce tab for visual steps.
For structural analysis of modified files, see the Integrity Tool.
Use this demo key on Verify to check our stamped sample.
demo_live_d12KIiDxdoLLScgy9Suexow3m9oFAAwS
Download BEFORE.pdf Download AFTER.pdf Open Verify
This key only works on AFTER.pdf and cannot mark.
Stamped files include a faint forensic grid that slightly darkens pages; reading remains normal. Optional canary text (a small visible footer) may be enabled in sandbox/demo to confirm stamping; verification does not depend on it. It will be demolished post beta.
# 1) Verify a file with a known order ID
curl -H "X-API-Key: ink_live_xxx" \
-H "X-Order-Id: ORDER-12345" \
-F file=@suspect.pdf \
https://ashtonx24-inkdna.hf.space/detect
# 2) Verify using embedded FID (metadata-based)
curl -H "X-API-Key: ink_live_xxx" \
-F file=@suspect.pdf \
https://ashtonx24-inkdna.hf.space/detect/guess
# 3) Identify origin automatically (no order ID required)
curl -H "X-API-Key: ink_live_xxx" \
-F file=@suspect.pdf \
https://ashtonx24-inkdna.hf.space/detect/identify
Advanced: You can optionally include a layout
reference header X-Ref-Q (Base64 URL-safe) when calling
any of the endpoints above. It supplies a pre-computed layout
signature vector for additional layout-similarity evidence. This is
optional and not required for normal verification.
/claim{ publicKey, asset, context: { orderId?, referer, userAgent? }
}
{ token, expiresAt, policy }/fp?token=…202 +
Retry-After if still rendering.
Do I need to pass an order ID?
Not always. InkDNA supports three verification modes:
/detect — when you know the
order_id to confirm attribution.
/detect/guess — when the file still has its
embedded FID metadata.
/detect/identify — when no order ID or metadata is
available; the system searches your stored fingerprints and
identifies the most likely origin automatically.
Providing the correct order ID still yields the most reliable attribution and highest confidence score, but the identify mode works well for leaked or stripped files too.
What if I call Verify without an order ID?
The system will automatically use /detect/identify to
find the most probable match from your tenant's stored
fingerprints. This process is still secure and tenant-isolated —
only your own fingerprints are compared.
Do screenshots or images work?
Yes. Full-page screenshots and page-captured images are supported.
Partial or low-resolution crops may reduce accuracy, but complete
page captures still yield high confidence.
Summary: Providing an order_id gives
the strongest attribution, but you can also verify files with
embedded metadata or let the system identify the origin
automatically.
data-mode="loose" for testing; switch to
"strict" once stable.
/claim? Add
your domain on the claim page.
data-inkdna-order or the auto-page-hint snippet —
see the
Integration tab.
Questions about order IDs, metadata-stripped files, or screenshot verification? See the Verify & API tab — the full FAQ and curl examples live there.