Quickstart
This guide takes you from sign in to your first provenance check. You need a terminal with curl, or any HTTP client.
The documentation is public. You only need an account to create an API key. The free plan includes 500 API calls per calendar month.
Create an API key
- Open the sign in page and enter your email address.
- Open the sign in link that we send you.
- The dashboard creates your first key and shows it once. Copy it now.
If you lose a key, revoke it in the dashboard and create a new one. We store only a hash of each key, so we cannot show a key again.
Make your first request
Send a POST request to /v1/detect with the URL of a public image. The API downloads the file, runs every check, and returns the results.
curl -X POST https://api.provenance.pixellab.nz/v1/detect \
-H "Authorization: Bearer pv_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/photo.jpg"}'
Read the response
Each entry in matches is one check. The result field has one of three values. found means the marker is present. not_found means the check ran and did not find the marker. unavailable means the check could not run on this file.
Response
{
"id": "chk_01J5K3W9M2ZC7Q0V4A8B6N1DXY",
"media": {
"type": "image/jpeg",
"bytes": 184320,
"sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
},
"matches": [
{
"check": "c2pa",
"result": "found",
"confidence": 1.0,
"issuer": "OpenAI",
"claims": {
"claim_generator": "ChatGPT",
"assertions": ["c2pa.actions", "c2pa.hash.data"],
"signature_verified": false
}
},
{
"check": "synthid",
"result": "unavailable",
"confidence": 0.0,
"reason": "This check is planned but not available yet."
},
{ "check": "apple_reference", "result": "not_found", "confidence": 0.8 }
],
"checks_run": [
"c2pa",
"synthid",
"gemini",
"meta_content_seal",
"apple_reference"
],
"duration_ms": 412
}
Choose the checks
If you only need some checks, name them in the checks field. The request still costs one API call.
cURL
curl -X POST https://api.provenance.pixellab.nz/v1/detect \
-H "Authorization: Bearer pv_live_..." \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/photo.jpg", "checks": ["c2pa"]}'
What is next
- Read the detect endpoint reference for every request field and the upload flow for large files.
- Read the detectors page to learn what each marker means.
- Read the rate limits page before you send traffic from production.