Skip to main content
Encypher Logo

Document content provenance

A signed 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. can sit inside a PDF, a Word file, an EPUB and 35 other document formats. It shows who published the file and whether it changed. Anyone can check it, free.

A file holds a signed label in four layers: who signed it, what they declared including AI use, a fingerprint of the content, and a signature that seals them together.
The label sits inside the file. It names the signer, carries what they declared, fingerprints the content, and is sealed by a signature.
Formats
38 document formats.
Where it sits
Inside the file, apart from the pages.
What it shows
Who signed, what they declared and whether the file changed.
Checking
Free, with no account.

What a label tells a reader

A label answers three questions about a document. The answers come from a signed record, not from the file's details, which anyone can edit.

Four of the five answers a provenance check can give: Verified, Modified after signing, Issuer not recognized, and No provenance found. The fifth is Could not verify.
A check reports who signed and whether the content changed. It never says whether the content is true.
  • Who signed it, backed by a certificate the checker can trace.
  • What they declared, including whether AI was used.
  • Whether the file changed since it was signed.

A label does not say the document is true, who wrote it or who owns it.

In a PDF, the label is an attached part

A PDF can carry attached files. The label rides as one of them, in an attached file inside the PDF, marked as its C2PAC2PA: The Coalition for Content Provenance and Authenticity: the group that publishes the open standard for content labels. label. The pages stay as they were.

In a PDF, the label is stored as a separate part attached to the document.
A PDF keeps the label as a separate attached part.

In Word, EPUB and other ZIP files, the label is one entry

Word, Excel, PowerPoint, EPUB, OpenDocument and many other formats are ZIP packages: a bundle of files in one. The label is one more entry in the packageFile container: The outer structure of a file that holds the picture, sound or text plus extra data..

In a DOCX, EPUB, ODT or OXPS package, the label is one entry among the files inside the package.
Zip-based documents keep the label as one entry in the package.
Guides for ZIP-based documents.
GuideFormatsMade for
EPUB1Ebooks, Digital magazines
DOCX1Business documents, Contract drafts
ODT1Government documents, Open-source office tools
OXPS1Print-ready pages, Archives
Microsoft Office21Contracts and policies, Financial models
OpenDocument4Government documents, Open-source office tools
Apple iWork3Mac and iPad documents, Slide decks
ZIP package7Digital painting, Page layout handoff

Every document format, live from our API

Our APIAPI: Application programming interface: a way for one program to ask another to do a job, such as sign a file. lists 38 document formats. Encypher signs 38 and checks 37 of them. Each is named with its media typeMIME type: The standard name for a file format, such as image/jpeg or audio/wav, that software uses to decide how to read a file..

Documents: 38 formats, live from our API.
FormatFile endingSignCheckMedia type
PDF.pdfYesYesapplication/pdf
EPUB e-book.epubYesYesapplication/epub+zip
Word document (DOCX), Microsoft Office.docxYesYesapplication/vnd.openxmlformats-officedocument.wordprocessingml.document
Excel workbook (XLSX).xlsxYesYesapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet
PowerPoint deck (PPTX).pptxYesYesapplication/vnd.openxmlformats-officedocument.presentationml.presentation
OpenDocument text (ODT), OpenDocument.odtYesYesapplication/vnd.oasis.opendocument.text
OpenXPS page file (OXPS).oxps, .xpsYesYesapplication/oxps, application/vnd.ms-xpsdocument
Krita drawing.kra, .krzYesYesapplication/x-krita
OpenRaster drawing.oraYesYesimage/openraster
InDesign package (IDML).idmlYesYesapplication/vnd.adobe.indesign-idml-package
Google Earth map (KMZ).kmzYesYesapplication/vnd.google-earth.kmz
3D print file (3MF).3mfYesYesmodel/3mf
ZIP archive.zipYesYesapplication/zip
Apple Keynote.keyYesYesapplication/vnd.apple.keynote
Apple Numbers.numbersYesYesapplication/vnd.apple.numbers
Apple Pages.pagesYesYesapplication/vnd.apple.pages
Excel binary workbook (XLSB).xlsbYesYesapplication/vnd.ms-excel.sheet.binary.macroenabled.12
Excel workbook with macros (XLSM).xlsmYesYesapplication/vnd.ms-excel.sheet.macroenabled.12
Excel template with macros (XLTM).xltmYesYesapplication/vnd.ms-excel.template.macroenabled.12
PowerPoint deck with macros (PPTM).pptmYesYesapplication/vnd.ms-powerpoint.presentation.macroenabled.12
PowerPoint show with macros (PPSM).ppsmYesYesapplication/vnd.ms-powerpoint.slideshow.macroenabled.12
PowerPoint template with macros (POTM).potmYesYesapplication/vnd.ms-powerpoint.template.macroenabled.12
Visio drawing (VSDX).vsdxYesYesapplication/vnd.ms-visio.drawing
Visio drawing with macros (VSDM).vsdmYesYesapplication/vnd.ms-visio.drawing.macroenabled.12
Visio stencil (VSSX).vssxYesYesapplication/vnd.ms-visio.stencil
Visio stencil with macros (VSSM).vssmYesYesapplication/vnd.ms-visio.stencil.macroenabled.12
Visio template (VSTX).vstxYesYesapplication/vnd.ms-visio.template
Visio template with macros (VSTM).vstmYesYesapplication/vnd.ms-visio.template.macroenabled.12
Word document with macros (DOCM).docmYesYesapplication/vnd.ms-word.document.macroenabled.12
Word template with macros (DOTM).dotmYesYesapplication/vnd.ms-word.template.macroenabled.12
OpenDocument drawing (ODG).odgYesYesapplication/vnd.oasis.opendocument.graphics
OpenDocument slides (ODP).odpYesYesapplication/vnd.oasis.opendocument.presentation
OpenDocument sheet (ODS).odsYesYesapplication/vnd.oasis.opendocument.spreadsheet
PowerPoint show (PPSX).ppsxYesYesapplication/vnd.openxmlformats-officedocument.presentationml.slideshow
PowerPoint template (POTX).potxYesYesapplication/vnd.openxmlformats-officedocument.presentationml.template
Excel template (XLTX).xltxYesYesapplication/vnd.openxmlformats-officedocument.spreadsheetml.template
Word template (DOTX).dotxYesYesapplication/vnd.openxmlformats-officedocument.wordprocessingml.template
Other ZIP-based filesVariousYesNoapplication/x-zip-based, applications/x-zip-based

How to check a document

Send a file to the signing API, get it back signed with the label inside, and anyone can check it for free without an Encypher account.
Signing is one API call. Checking is free and needs no account.
  1. Open the free checker.

    It runs in your browser. No account needed.

    Open the checker
  2. Add the file you received.

    Check the copy in hand, not the draft it came from.

  3. Read the result.

    It names the signer, what they declared and whether the file changed.

What drops or breaks the label

The label belongs to one exact file. Anything that writes a new file leaves it behind, so sign the copy you send.

Three versions of a paper, preprint, accepted manuscript and version of record, each with its own seal, linked back to the version it was made from.
Each new version carries its own label and points back to the one it came from, so anyone can trace it to the first.
  • Exporting to another format, such as Word to PDF, makes a new file without the label. Sign the export too.
  • Printing and scanning make a new file with no label.
  • Save as, or saving again in an editor, can drop the label or break its seal. Sign after the last edit.
  • A change to the pages after signing shows as a change in the check.
  • To revise a signed file, sign the new version. Its label can name the old one as an ingredientIngredient: A source file used to make new content, recorded in the new content's label with a link to its own label..

For engineers

Show the technical detail

Where the manifest sits

C2PA embedding location by document format and family.
GuideEmbedding
PDFJUMBF manifest store in an embedded file stream with AFRelationship C2PA_Manifest
EPUBJUMBF manifest store in the META-INF/content_credential.c2pa entry of the ZIP package
DOCXJUMBF manifest store in the META-INF/content_credential.c2pa entry of the OOXML ZIP package
ODTJUMBF manifest store in the META-INF/content_credential.c2pa entry of the ODF ZIP package
OXPSJUMBF manifest store in the META-INF/content_credential.c2pa entry of the OpenXPS ZIP package
Microsoft Office (21 formats)JUMBF manifest store in the META-INF/content_credential.c2pa entry of the ZIP package, with a c2pa.hash.collection.data hard binding over every entry and the central directory (Office Open XML)
OpenDocument (4 formats)JUMBF manifest store in the META-INF/content_credential.c2pa entry of the ZIP package, with a c2pa.hash.collection.data hard binding over every entry and the central directory (ODF)
Apple iWork (3 formats)JUMBF manifest store in the META-INF/content_credential.c2pa entry of the ZIP package, with a c2pa.hash.collection.data hard binding over every entry and the central directory (iWork ZIP documents; the other entries stay byte for byte unchanged)
ZIP package (7 formats)JUMBF manifest store in the META-INF/content_credential.c2pa entry of the ZIP package, with a c2pa.hash.collection.data hard binding over every entry and the central directory. In 3MF, the label part is also declared as application/c2pa in [Content_Types].xml.

Sign and check

POST /api/v1/sign/media reads the format from the file for PDF, EPUB, DOCX, XLSX, PPTX, ODT, OXPS and iWork files. The other ZIP formats sign through POST /api/v1/sign/registered-media with an explicit media type and C2PA spec. Generic ZIP containers use POST /api/v1/sign/declared-media. Checking needs no key.

# The format is read from the file itself.
curl -X POST https://api.encypher.com/api/v1/sign/media \
  -H "Authorization: Bearer $ENCYPHER_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "file=@report.pdf" \
  -F "action=c2pa.created"

Support per format comes from the live API capability matrix. Full reference: C2PA media types.

Create. Mark. Endure.

Sign your first document free. Checking stays free for everyone.