Skip to main content

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


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.0.tar.gz (5.3 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.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

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

Hashes for chronoverify-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b400eb8ba6fab2ca9d1ae09aa88d53d379f806e9e6f4a79f54ec6115affee2da
MD5 9d04baf5cb21835e65ddb6ff7c6f9525
BLAKE2b-256 1ce3f91cee4a6dded3cfb4274bd6d4cdd6be5c3128bf3adf3aa27d59f5e62d01

See more details on using hashes here.

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

Hashes for chronoverify-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e38a56626bb96aa2929e94224af18c9c3ade486a59fc6fc0b86df2f11bdddcf1
MD5 3e3de50fad6bbf7c16dd8e8fff91d848
BLAKE2b-256 5f6de6a66342d2838c9fa18e7b76d4ff8a16e5f3c4ed8dd47f0919a8f9378d10

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 Pingdom Monitoring Sentry Error logging StatusPage Status page