52 media types, three ways to attach a manifest
Images, audio and video that we decode can take a watermark and fingerprints. Further containers are signed without decoding. Documents, text, fonts and model files get a sidecar manifest.
Embedded9 types
Decoded. The manifest goes inside the file; watermark and fingerprints are available.
- AAC / M4A
- MP3
- WAV
- AVIF
- JPEG
- PNG
- TIFF
- WebP
- MP4
Structural11 types
Not decoded. The manifest is written into the container. Sign only.
- FLAC
- GIF
- HEIC
- HEIC seq
- HEIF
- HEIF seq
- JPEG XL
- SVG
- DNG
- MOV
- AVI
Sidecar32 types
The bytes stay unchanged; a separate .c2pa manifest is published beside them.
- EPUB
- ONNX
- oxps
- ODT
- DOCX
- jax
- keras
- mlnet
- mxnet
- npy
- openvino-ir+xml
- openvino-weights
- pickle
- protobuf
- pytorch
- tensorflow
- tensorflow-savedmodel
- zip-based
- xhtml+xml
- xml
- MPA
- aac
- riff-based
- OTF
- riff-based
- tiff-based
- HTML
- TXT
- xml
- bmff-based
- riff-based
watermark available · GET /v1/capabilities is the live authority
Embedded (decoded)
The manifest is embedded in the file. These types can also take an invisible watermark and fingerprints, depending on the recipe.
| Format | Media type | Upload limit | Sign | Watermark | Fingerprint |
|---|---|---|---|---|---|
| JPEG | image/jpeg | 25 MiB | Yes | Yes | Yes |
| PNG | image/png | 50 MiB | Yes | Yes | Yes |
| WebP | image/webp | 50 MiB | Yes | Yes | Yes |
| TIFF | image/tiff | 128 MiB | Yes | Yes | Yes |
| AVIF | image/avif | 50 MiB | Yes | Yes | Yes |
| WAV | audio/wav | 200 MiB | Yes | Yes | Yes |
| MP3 | audio/mpeg | 100 MiB | Yes | Yes | Yes |
| AAC / M4A | audio/mp4 | 256 MiB | Yes | No | Yes |
| MP4 | video/mp4 | 256 MiB | Yes | Yes | Yes |
AAC audio in MP4 takes a manifest and fingerprints, but no watermark.
Structural (not decoded)
The signing engine writes a manifest into the container without decoding the media. Sign only: no watermark and no fingerprint.
| Format | Media type | Upload limit |
|---|---|---|
| FLAC | audio/flac | 200 MiB |
| GIF | image/gif | 50 MiB |
| HEIC | image/heic | 50 MiB |
| HEIC sequence | image/heic-sequence | 128 MiB |
| HEIF | image/heif | 50 MiB |
| HEIF sequence | image/heif-sequence | 128 MiB |
| JPEG XL | image/jxl | 50 MiB |
| SVG | image/svg+xml | 16 MiB |
| DNG | image/x-adobe-dng | 128 MiB |
| QuickTime (MOV) | video/quicktime | 256 MiB |
| AVI | video/x-msvideo | 256 MiB |
Sidecar manifest
The file's bytes are not changed. Its C2PA manifest is published beside it as a separate .c2pa file, which you keep next to the asset. Sign only.
| Kind | Media types | Upload limit |
|---|---|---|
| Documents | application/epub+zip, application/oxps, application/pdf, application/vnd.oasis.opendocument.text, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/x-zip-based | 32 MiB |
| Text | application/xhtml+xml, application/xml, text/html, text/plain, text/xml | 32 MiB (HTML 4 MiB) |
| Fonts | font/otf | 32 MiB |
| ML models | application/onnx, application/x-jax, application/x-keras, application/x-mlnet, application/x-mxnet, application/x-npy, application/x-openvino-ir+xml, application/x-openvino-weights, application/x-pickle, application/x-protobuf, application/x-pytorch, application/x-tensorflow, application/x-tensorflow-savedmodel | 32 MiB |
| Image | image/x-riff-based, image/x-tiff-based | 32 MiB |
| Audio | audio/MPA, audio/aac, audio/x-riff-based | 32 MiB |
| Video | video/x-bmff-based, video/x-riff-based | 32 MiB |
Text has no watermark. Marking text under a rule such as EU AI Act Article 50(2) needs a separate solution.
Check at run time
These tables come from the capability snapshot the API is built with. A deployment can enable fewer types, so GET /v1/capabilities is the authority at run time. It lists, per media type, the recipes, watermark algorithms and fingerprints your key can use, and whether each is available now.
Not sure your format fits?
Tell us the media types you publish and we will show you which lane and recipe each one takes.