Origin Open for pilots
Evidence you can act on
- Decide fasterPhotos with a verified signature can skip manual review
- Redact freelyBlur faces or crop plates before you share, and the photo stays verified
- Share the proofEvery check has a link others can open to confirm it themselves
Signed at capture
Signature from a supported device verified
2 edits proven
Crop and blur, each with a proof
Built for photos that count as evidence
Insurance claims
Damage photos that decide a payout
Refunds and marketplaces
Returns, deliveries, listings and profile photos
Verification desks
Newsrooms and researchers checking what they publish
Get started
Verify a photo in one API call
Send a photo from your upload flow and get back exactly what its evidence shows. Call the API, use an SDK, run the open-source verifier on your own machines, or connect your AI tools over MCP.
- 1
Get a key
Create a test key in your dashboard. It works on our sample photos straight away.
- 2
Send a photo
Post the photo from your upload handler, exactly as it arrived. Re-encoding strips the signature.
- 3
Act on the result
Branch on one field. Every check also gets a public link anyone can open to re-verify it.
# Send the photo exactly as it was uploaded
curl https://api.verena.se/v1/origin/verify \
-H "Authorization: Bearer $VERENA_SECRET_KEY" \
-F photo=@claim-4471.jpg
# Or point at a photo you already store
curl https://api.verena.se/v1/origin/verify \
-H "Authorization: Bearer $VERENA_SECRET_KEY" \
-d url=https://uploads.example.com/claims/4471.jpg
import Verena from "verena";
const verena = new Verena(process.env.VERENA_SECRET_KEY);
// In your upload handler: send the bytes as they arrived
const check = await verena.origin.verify({ photo: req.file.buffer });
if (check.result !== "verified") {
await claims.flagForReview(claim.id, check.id);
}
from verena import Verena
verena = Verena() # reads VERENA_SECRET_KEY
# In your upload handler: send the bytes as they arrived
check = verena.origin.verify(photo=request.files["photo"].read())
if check.result != "verified":
claims.flag_for_review(claim.id, check.id)
import { verify } from "@verena/verify";
// Runs on your own machine: no API key, no upload
const bytes = new Uint8Array(await file.arrayBuffer());
const check = await verify(bytes);
check.result; // "verified"
check.edits; // [{ type: "crop", proof: "valid" }, …]
// Add Verena to any MCP client
{
"mcpServers": {
"verena": {
"url": "https://mcp.verena.se",
"headers": { "Authorization": "Bearer sk_test_…" }
}
}
}
// Then ask your assistant
> Where did claim-4471.jpg come from? Was it edited?
{
"id": "chk_7Hq2xT9e",
"result": "verified", "capture": {
"signed": true,
"signer": "apple",
"signed_at": "2026-10-28T14:02:11Z"
},
"edits": [
{ "type": "crop", "proof": "valid" },
{ "type": "blur", "regions": 1, "proof": "valid" }
],
"proof_url": "https://verify.verena.se/chk_7Hq2xT9e"
}
result is always one of
- verified
- Signed at capture, and every edit since is proven
- no_signature
- No evidence either way. Ask for the original
- invalid
- A signature or an edit proof doesn’t check out
Questions
Precise about what the evidence shows
A result answers one specific question. It doesn’t judge what a photo shows.
What does a verified signature tell me?
That the photo was captured on a supported device, and which edits were made since, each with a proof. It doesn’t say whether the scene is true: a signed photo of a screen is still a photo of a screen.
What if a photo has no signature?
Then there is no evidence either way. Many real photos carry no signature, so it doesn’t mean the photo is fake. You decide what happens next, such as a manual review or asking the sender for the original.
How is this different from AI-image detection?
Detection guesses whether a photo looks generated, and gets less reliable as generators improve. Origin doesn’t guess. It checks cryptographic evidence created when the photo was taken: a photo either carries a valid signature and proven edits, or it doesn’t.
Which photos can Origin verify today?
Photos signed on supported devices, including Apple’s photo signatures. How many of yours carry one depends on where they come from, which is the first thing a pilot measures.
Do our photos have to leave our systems?
No. The open-source verifier runs entirely on your own machines and returns the same result as the API.
See how many of your photos verify
Send us a sample of your incoming photos, and we’ll show you what share carries verifiable evidence and what to do with the rest.