Content provenance on Akamai EdgeWorkers Sign every article at the edge.
An Akamai EdgeWorker adds a signed label to every article as your CDNCDN: Content delivery network: servers around the world that keep copies of a site close to readers so pages load fast. serves it. The label shows who published the text and whether it changed. We roll it out with you and your Akamai team.

- A label in every article
- Each article gets content provenanceContent provenance: The record of where a piece of content came from and how it changed, carried with the content itself.: a C2PA manifestC2PA manifest: The signed label itself: a small package inside a file that records who signed it, what they declared and how to check it. and invisible provenance markersProvenance markers: Encypher's general name for invisible characters that carry a signed label inside text. in its text, sentence by sentence.
- Nothing changes at origin
- The edge functionEdge function: A small program that runs on a CDN's servers and can change a page as it passes through to the reader. sits between readers and your origin serverOrigin server: The server where your site's pages are built and stored before a CDN delivers them.. It finds the article on WordPress, Ghost, Substack, Webflow, Hugo and custom HTML.
- Never blocks a page
- It is fail-openFail open: If signing is down, the page is served unsigned instead of failing, so readers never see an error.: if signing fails for any reason, readers get your original page.
- Fast repeat visits
- Signed results are cached in EdgeKV across the Akamai network, so repeat visits skip the signing call.
- Enterprise rollout
- EdgeWorkers and EdgeKV must be on your Akamai contract. We scope the rollout and plan with you.
Set it up
Scope it with us
We plan the rollout with you and your Akamai team, and you claim your domain to get its worker credentialWorker credential: A secret key, tied to one verified domain, that lets an Encypher edge worker ask for signatures..
Talk to usUpload the EdgeWorker
Build the bundle and upload it to your EdgeWorker ID. Create the EdgeKV namespace.
Add one Property Manager rule
Attach the EdgeWorker to your article paths, set the credential as a PMUSER variable, then activate on staging and production.
Check the label
Open an article and look for the header X-Encypher-Provenance: active. Then paste a paragraph into the free checker.
Open the free checker
Copied text keeps the label

The markers sit between the letters, so they travel when a reader copies a paragraph into a document, a post or an AI prompt.
Some apps strip them. Any edit to the words shows up when the text is checked.
Check a paragraphFor engineers
Show the technical detail
npm run build # writes edgeworker.tgz
akamai edgeworkers upload --edgeWorkerID <YOUR_EW_ID> --bundle edgeworker.tgz
akamai edgeworkers activate --edgeWorkerID <YOUR_EW_ID> --network staging --version <VERSION>
akamai edgeworkers activate --edgeWorkerID <YOUR_EW_ID> --network production --version <VERSION>Default Rule
EdgeWorkers behavior (EdgeWorker ID: <YOUR_EW_ID>)
Match: path /articles/* OR /*.html
(exclude /api/*, /wp-admin/*, /feed/*, /wp-json/*)
PMUSER_ENCYPHER_WORKER_TOKEN = <your worker credential> required
PMUSER_ARTICLE_SELECTOR = .story-body optionalakamai edgekv create ns staging default --retention 30
akamai edgekv create ns production default --retention 30<!-- Page-level terms, embedded in the C2PA manifest -->
<meta name="encypher-rights" content="All rights reserved.">
<meta name="encypher-license" content="CC-BY-4.0">
<!-- Block-level terms, mapped to the sentences inside -->
<div data-encypher-rights="(c) 2026 Your Publication"
data-encypher-license="CC-BY-4.0">
<p>Your original reporting.</p>
</div># Signed pages carry this header
curl -sI https://yourdomain.com/your-article | grep -i x-encypher
# X-Encypher-Provenance: active
# Domain status: your domain token and org ID
curl -s https://yourdomain.com/.well-known/encypher-verify- Article detection
- Eight checks in order: your selector override, the <article> tag, common CMS classes, Schema.org articleBody, <main>, JSON-LD, the densest paragraph cluster, then <body>.
- What is sent
- Only the visible article text, up to 51,200 characters by default. The API returns an embedding plan, and the worker writes the markers into the HTML at those positions.
- Status header
- X-Encypher-Provenance is active on a signed page, or skipped:oversized, skipped:empty or skipped:error when the page passes through unchanged.
- Rights
- Block attributes win over page meta tags, and page tags win over the rights profile in your dashboard. Rights are embedded only on requests that carry the worker credential.
- CPU budget
- EdgeWorkers allow 20 ms of CPU per event. Network waits do not count, and the worker stays inside the limit on standard article pages.
- Large pages
- Responses over 128 KB take a streaming path. If that fails too, the original response is served.