inkdna-fingerprint Documentation

Stamp a low-visibility forensic grid at download and prove lineage later — no DRM, no PII stored.  ·  Last updated: 2026-04-14

Where to start

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

Integrity Check (Free Tool)

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.

Download Integrity Tool

Runs locally. No account required.

Designed for

  • Evaluating whether a distributed file has been altered.
  • Understanding how transformations affect attribution.
  • Testing robustness of fingerprinted documents.
  • Academic exploration of document integrity.

Not designed for

  • Preventing copying or redistribution.
  • Guaranteeing detection under extreme transformations.
  • Acting as DRM or access control.
  • Replacing the core InkDNA verification pipeline.

Quick start (any site)

  1. Claim your key at /claim.html.
  2. Add your domain on the claim page.
  3. Paste the loader on your site (near the end of <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>
  1. See the Integration tab for a full setup walkthrough including order IDs.

Other platforms

The CDN loader works on any platform that allows script injection.
We focus on the loader and WooCommerce integration. Reach out for custom setups.

WooCommerce Plugin

Get the WP Plugin →

  1. In your WordPress admin, go to Plugins → Add New.
  2. Search for InkDNA Fingerprinted Downloads and click Install Now, then Activate.
  3. Set API Base and API Key under WooCommerce → Settings → InkDNA.
  4. All digital downloads are stamped automatically using the Woo order number.

API keys are available on the landing page. The plugin simplifies integration — no manual order ID wiring needed.

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.

1 Include the loader

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.

2 Your download link

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.

3 How to pass an Order ID (pick ONE)

⚠️ What if no order token is found?

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.

a) Explicit attribute — recommended, works anywhere

Add the order token directly to the link:

<a href="/assets/sample.pdf" data-inkdna data-inkdna-order="ORDER-123">Download</a>

b) URL parameter — no HTML changes needed

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.

c) Page hint — auto-share one order to all links

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.

On custom thank-you pages

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

4 Notes & best practices

  • Server-rendered tokens are best: the most defensible evidence comes from tokens your backend injects into the checkout/thank-you page (e.g. data-inkdna-order="{{ORDER_TOKEN}}").
  • Do not place PII in attributes: avoid embedding emails, full names or raw personal data in public attributes or in PDFs. Use opaque tokens the server maps to real orders.
  • Loader requirements: the loader requires both 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.

🔍 Verification — Verify Page or API

For structural analysis of modified files, see the Integrity Tool.

Public demo (safe to try)

Use this demo key on Verify to check our stamped sample.

Demo key:
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.

Terminal / curl

# 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

Copy curl

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.

API used by the loader

POST /claim

  • Body: { publicKey, asset, context: { orderId?, referer, userAgent? } }
  • Returns: { token, expiresAt, policy }

GET /fp?token=…

  • Streams the stamped PDF, or 202 + Retry-After if still rendering.

FAQ — Verification

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.

🛠 Troubleshooting

  • Download didn't change? Set data-mode="loose" for testing; switch to "strict" once stable.
  • Origin blocked on /claim? Add your domain on the claim page.
  • Order ID missing? Use 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.