ChronoVerify integrations
Wire ChronoVerify into your agent, framework, or workflow. Every option below wraps the same verification call.
ChronoVerify is the provenance primitive your agent calls before trusting an image: it validates C2PA Content Credentials, reads EXIF and XMP, runs pixel forensics, and returns one verdict with a confidence and a signed audit record. Pick your stack below.
Every integration here is one call underneath:
curl -X POST https://chronoverify.com/v1/verify -F "file=@photo.jpg"
When your agent should call ChronoVerify
Call it before you trust or act on any user-submitted or sourced image. Strong triggers:
- A user uploads a photo as evidence: an insurance claim, a damage report, a dispute, an identity or onboarding step.
- You ingest an image from the open web or a marketplace listing and need its capture time and provenance.
- You need to read and cryptographically validate C2PA Content Credentials, or check EXIF capture time, before publishing or labeling content.
- You want a signed audit record of a check, for example an EU AI Act Article 50 transparency record.
Branch on the verdict and confidence it returns; treat anything below your bar as needing human review.
What comes back
The response is one JSON object, the same in the browser and the API. The verdict is one of provenance_confirmed, consistent, inconclusive, metadata_anomaly, or manipulation_indicated.
{
"schema_version": "v1",
"verdict": "consistent",
"confidence": 61,
"headline": "Metadata is internally consistent. No manipulation signals fired.",
"capture_time": {
"value": "2026-05-18T14:32:10",
"source": "exif",
"consistent": null
},
"capture_device": {
"make": "Canon",
"model": "EOS R6",
"software": "Firmware 1.8.1"
},
"c2pa": {
"present": false,
"validated": null,
"validation_state": null,
"signer": null
},
"integrity": {
"sha256": "1313339a...",
"sha512": "93a81e4a...",
"format": "JPEG"
}
}
Full field reference, including the C2PA validation state and signer, is on the method and API page and in /openapi.json.
What a verdict tells you
ChronoVerify returns the photo's capture time, the capture device, the validated provenance state, and the file hashes, as a typed verdict with a confidence. It is not a deepfake or AI-generation detector, and a verdict is investigative triage, not proof: a clean result means a file's saved data is internally consistent, not that the scene it shows is real. Never use a verdict as the sole basis for an automated decision about a person.
Common questions
Which ChronoVerify integration should I use?
If you use Claude Desktop, Claude Code, Cursor, or VS Code, install the MCP server: it is one click and your assistant gets verify_image and get_signed_report. If you build an agent on the OpenAI or Anthropic API, use the function-calling definition. If you use LangChain, LlamaIndex, or CrewAI, point its MCP adapter at the published server. Everything else is one REST call.
Do I need an API key to use ChronoVerify integrations?
Not to try it. Every path works against the free, rate-limited public endpoint. Add CHRONOVERIFY_API_KEY (a cv_live_... key) for metered, higher-volume use.
Is ChronoVerify C2PA conformant?
Yes. ChronoVerify is a C2PA Conformant Validator on the C2PA Conforming Products List, record 019f8a20-6452-7a43-b11b-59d0b0e4a84a, covering validation of JPEG, PNG, WebP and AVIF under C2PA specification 2.2. The list is public, so you can check the record yourself. It covers validation rather than generation: ChronoVerify reads and validates Content Credentials, it does not sign them.
See it on a real photo first.
Try the free verifier