Client for the ChronoVerify image capture-time and provenance verification API.
Project description
chronoverify
Python client for the ChronoVerify image capture-time and provenance verification API. Send any image, get one plain verdict (provenance_confirmed, consistent, inconclusive, metadata_anomaly, or manipulation_indicated) with a 0 to 100 confidence and the signals behind it. It reads C2PA Content Credentials when present and falls back to EXIF, XMP, and pixel forensics when they are not, so it works on any image, signed or not.
Get an API key (the first 100 verifications each month are included, then a flat $0.003 per image, no per-operation multipliers): https://chronoverify.com/pricing
ChronoVerify is provenance-first and deliberately not a deepfake detector. Verdicts are investigative triage to support human review, not proof.
Install
pip install chronoverify
Use
from chronoverify import Client
client = Client("cv_live_...") # or omit the key to use the free, rate-limited public path
result = client.verify(file="photo.jpg")
print(result["verdict"], result["confidence"])
print(result["capture_time"]) # {"value": "...", "source": "exif", ...}
Verify a remote image by URL (the server fetches it):
result = client.verify(url="https://example.com/photo.jpg")
You can pass a path, raw bytes, or an open binary file:
with open("photo.jpg", "rb") as fh:
result = client.verify(file=fh)
The key can also come from the CHRONOVERIFY_API_KEY environment variable.
Command line
chronoverify verify photo.jpg
chronoverify verify --url https://example.com/photo.jpg
chronoverify verify photo.jpg --json
Set CHRONOVERIFY_API_KEY (or pass --key) to use a metered key; omit it for the free public path.
Response
The verdict object is documented in full, with field reference and examples, at https://chronoverify.com/method#api . A clean result means a file's saved data is internally consistent, not that the scene it shows is real.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chronoverify-0.1.0.tar.gz.
File metadata
- Download URL: chronoverify-0.1.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b400eb8ba6fab2ca9d1ae09aa88d53d379f806e9e6f4a79f54ec6115affee2da
|
|
| MD5 |
9d04baf5cb21835e65ddb6ff7c6f9525
|
|
| BLAKE2b-256 |
1ce3f91cee4a6dded3cfb4274bd6d4cdd6be5c3128bf3adf3aa27d59f5e62d01
|
File details
Details for the file chronoverify-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chronoverify-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e38a56626bb96aa2929e94224af18c9c3ade486a59fc6fc0b86df2f11bdddcf1
|
|
| MD5 |
3e3de50fad6bbf7c16dd8e8fff91d848
|
|
| BLAKE2b-256 |
5f6de6a66342d2838c9fa18e7b76d4ff8a16e5f3c4ed8dd47f0919a8f9378d10
|