C2PA Supported Media Types
All 31 MIME types supported with C2PA provenance embedding. One API, one key, all your content types.
How Embedding Differs by Format
C2PA uses container-native embedding methods for each format type. The manifest data is placed in the format-standard location for extension data, ensuring compatibility with existing tools that process each format.
Images
13 image formats with JUMBF manifest embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| JPEG | image/jpeg | JUMBF box appended to file after EOI marker, per C2PA specification |
| PNG | image/png | JUMBF data stored in a custom PNG chunk, per C2PA specification |
| WebP | image/webp | JUMBF data stored in a RIFF-based WebP container chunk |
| TIFF | image/tiff | JUMBF box stored in TIFF IFD structure, per C2PA specification |
| AVIF | image/avif | JUMBF box in ISO BMFF container (AVIF uses HEIF container) |
| HEIC | image/heic | JUMBF box in ISO BMFF/HEIF container |
| HEIC Sequence | image/heic-sequence | JUMBF box in ISO BMFF/HEIF sequence container |
| HEIF | image/heif | JUMBF box in ISO BMFF/HEIF container |
| HEIF Sequence | image/heif-sequence | JUMBF box in ISO BMFF/HEIF sequence container |
| SVG | image/svg+xml | JUMBF data encoded and stored in SVG metadata element |
| DNG | image/x-adobe-dng | JUMBF box stored in TIFF/EP IFD structure (DNG is TIFF-based) |
| GIF | image/gif | JUMBF data stored in GIF application extension block |
| JPEG XL | image/jxl | Custom JUMBF/COSE structural embedding (c2pa-python does not yet natively support JXL) |
Audio
6 audio formats across RIFF, ID3, and ISO BMFF containers
| Format | MIME Type | Embedding Method |
|---|---|---|
| WAV | audio/wav | JUMBF data stored in a RIFF chunk within the WAV container |
| MP3 | audio/mpeg | JUMBF data stored in an ID3v2 GEOB (General Encapsulated Object) frame |
| M4A | audio/mp4 | JUMBF data stored in an ISO BMFF uuid box within the MP4/M4A container |
| AAC | audio/aac | JUMBF data stored in an ISO BMFF uuid box (AAC in MP4/M4A container) |
| FLAC | audio/flac | Custom JUMBF/COSE structural embedding (c2pa-python does not yet natively support FLAC) |
| MPA | audio/mpa | JUMBF data stored in MPEG audio frame structure |
Video
4 video formats with ISO BMFF and RIFF embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| MP4 | video/mp4 | JUMBF data stored in an ISO BMFF uuid box within the MP4 container |
| MOV | video/quicktime | JUMBF data stored in a QuickTime uuid atom within the MOV container |
| M4V | video/x-m4v | JUMBF data stored in an ISO BMFF uuid box within the M4V container |
| AVI | video/x-msvideo | JUMBF data stored in a RIFF chunk within the AVI container |
Documents
5 document formats with custom JUMBF/COSE embedding
| Format | MIME Type | Embedding Method |
|---|---|---|
| application/pdf | Custom JUMBF/COSE structural embedding with two-pass manifest insertion (c2pa-python does not yet natively support PDF embedding) | |
| EPUB | application/epub+zip | Custom JUMBF/COSE structural embedding within the EPUB ZIP container |
| DOCX | application/vnd.openxmlformats-officedocument.wordprocessingml.document | Custom JUMBF/COSE structural embedding within the OOXML ZIP container |
| ODT | application/vnd.oasis.opendocument.text | Custom JUMBF/COSE structural embedding within the ODF ZIP container |
| OXPS | application/oxps | Custom JUMBF/COSE structural embedding within the OpenXPS ZIP container |
Fonts
3 font formats with custom JUMBF/COSE embedding
Text Content
Unstructured text - articles, social posts, email, and any plain text - is covered by C2PA Section A.7, which Encypher contributed to the specification. Text does not have a file container, so provenance is embedded using invisible Unicode characters within the text itself.
Text is not included in the MIME type table because it does not have a single MIME type - it covers text/plain, text/html content bodies, and any unstructured text context. See Text Content Provenance and C2PA Section A.7 for details.
Verification Pipeline
Encypher uses two verification pipelines depending on format:
- c2pa-python-native
Formats natively supported by the c2pa-python library: all 13 image formats, 4 of 6 audio formats (WAV, MP3, M4A, AAC, MPA), all 4 video formats. The c2pa-python library handles manifest extraction and signature verification directly.
- custom-jumbf-cose
Formats requiring custom implementation: FLAC, JPEG XL, all 5 document formats, all 3 font formats. Encypher implements JUMBF embedding and COSE signing directly for these formats. Verification uses the same cryptographic primitives but with custom manifest extraction.
Signing via the API
All 31 MIME types are accessible through a single signing endpoint. Format detection is automatic based on file content, not file extension:
# Sign any media file - format auto-detected
curl -X POST https://api.encypher.com/v1/sign/media \
-H "Authorization: Bearer ey_your_key_here" \
-F "file=@content.pdf"
Related Resources
All 31 Types in One API
One API key, all media types. Free tier covers 1,000 signing operations per month. Verification is always free.