Detectors
A detector is one check for one kind of provenance marker. This page lists every detector, its status, and the media types it reads. The same list is served by GET /v1/detectors.
Supported checks
A detector with the status available runs today. A detector with the status planned is on the roadmap. A planned check returns unavailable with a reason, so a request that names it still succeeds.
- Name
c2pa- Type
- available
- Description
- C2PA content credentials. Reads the C2PA manifest that tools such as ChatGPT, Adobe Photoshop, and Leica cameras embed in a file. The manifest names the tool that made the file and the party that signed it.
Media types: image/jpeg, image/png, image/webp, image/tiff, image/heic, image/heif, image/avif, video/mp4, video/quicktime, audio/mp4
- Name
synthid- Type
- planned
- Description
- Google SynthID. An invisible watermark that Google adds to images, audio, and video made by its models. Detection depends on access to Google tooling.
Media types: image/jpeg, image/png, image/webp, audio/wav, video/mp4
- Name
gemini- Type
- planned
- Description
- Google Gemini watermark. The marker that Gemini image output carries. It shares the SynthID detection path.
Media types: image/jpeg, image/png, image/webp
- Name
meta_content_seal- Type
- planned
- Description
- Meta content seal. The watermark family that Meta publishes as open source (Video Seal, Audio Seal, Watermark Anything). Detection needs a model runtime.
Media types: image/jpeg, image/png, video/mp4, audio/wav
- Name
apple_reference- Type
- available
- Description
- Apple reference image. Reads the EXIF data for an Apple camera make and the Apple maker note that iPhone and iPad cameras write. A match points to a camera capture. EXIF can be edited, so this is a hint, not a proof. This is an inverse signal. A
foundresult points to a camera capture.
Media types: image/jpeg, image/tiff
What the results mean
found means the marker is present. For C2PA, the API read the manifest and returns the tool that made the file and the party that signed it. In this version the API does not verify the signature, and the signature_verified field is false. Treat the signer name as a claim by the file, not as a proof.
not_found means the check ran and found nothing. A file with no marker is not proof of anything. Most cameras and most editing tools do not write provenance markers yet, and a marker can be removed by a screenshot or a re-encode.
unavailable means the check did not run. Read the reason field. The most common reasons are a media type the check does not support and a check that is not available yet.
Inverse signals
Most markers point to a generated or edited file. An inverse signal points the other way. The Apple reference image check reads the EXIF data for an Apple camera make and the maker note that iPhone and iPad cameras write. A found result here is evidence for a camera capture. EXIF data can be edited by anyone, so the confidence for this check is never 1.
Media types
The API reads the media type from the first bytes of the file, not from the file name or the Content-Type header. Supported types today are JPEG, PNG, WebP, TIFF and DNG, HEIC and HEIF, AVIF, MP4 and QuickTime video, and MP4 audio. Other types are accepted, but every check returns unavailable for them.
List the detectors
This endpoint is public and needs no API key. It returns the list on this page as JSON. Use it to show the available checks in your own interface, or to find out when a planned check becomes available.
Request
curl https://api.provenance.pixellab.nz/v1/detectors
Response
{
"detectors": [
{
"id": "c2pa",
"name": "C2PA content credentials",
"description": "Reads the C2PA manifest that tools such as ChatGPT, Adobe Photoshop, and Leica cameras embed in a file.",
"media_types": ["image/jpeg", "image/png", "image/webp", "image/tiff", "image/heic", "image/heif", "image/avif", "video/mp4", "video/quicktime", "audio/mp4"],
"status": "available",
"inverse": false
},
{
"id": "synthid",
"name": "Google SynthID",
"description": "An invisible watermark that Google adds to media made by its models.",
"media_types": ["image/jpeg", "image/png", "image/webp", "audio/wav", "video/mp4"],
"status": "planned",
"inverse": false
}
]
}