Skip to main content

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.

Signed audit report

Get a shareable, independently verifiable PDF audit record for one image (an Ed25519 signature over the canonical verdict, with an optional RFC 3161 timestamp). A report requires an API key. It is the premium artifact: $2.00 from your prepaid balance from the first report (the free 100 a month covers verifications only), or included in a monthly subscription's quota.

client.report(file="photo.jpg", out="report.pdf")   # writes the PDF, returns the path

pdf_bytes = client.report(file="photo.jpg")          # or get the raw bytes

Verify a report's signature against the public key at https://chronoverify.com/v1/key .

Command line

chronoverify verify photo.jpg
chronoverify verify --url https://example.com/photo.jpg
chronoverify verify photo.jpg --json
chronoverify report photo.jpg -o report.pdf

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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chronoverify-0.1.2.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chronoverify-0.1.2-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file chronoverify-0.1.2.tar.gz.

File metadata

  • Download URL: chronoverify-0.1.2.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for chronoverify-0.1.2.tar.gz
Algorithm Hash digest
SHA256 bfeae4c0eab55802333273d93b925674ccfde7606d300460802c78ac2246fd5e
MD5 9a88b0e96a1eb75fa296f9e9ac53d963
BLAKE2b-256 925e09eda4fe7990e577384e1ac43e8b786f23b1d7b117ba4b7e7989f82be466

See more details on using hashes here.

File details

Details for the file chronoverify-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: chronoverify-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for chronoverify-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2669333d5fe1df978efb5effb609df63f7272573bc39de31fc025457498ac9a2
MD5 dbcc0790cee43b3efb591e385f172a4d
BLAKE2b-256 86a807eca8b8b9965cd40e1825e48d4f143de42e5c51ab18174dc6687a23ca9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page