Know which photos are real

AI can fake a photo in seconds, and detectors stay a step behind. Origin proves a photo came from a device camera, and every edit made since.

Works today with photos signed on supported devices, including Apple’s.

How Origin verifies a photo

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

Built on Verena’s infrastructure: signed in secure hardware, proven with cryptography. How the platform works

Example photo of a person at dusk by the sea, cropped, with the face blurred

Signed at capture

Signature from a supported device verified

2 edits proven

Crop and blur, each with a proof

Illustrative result

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. 1

    Get a key

    Create a test key in your dashboard. It works on our sample photos straight away.

  2. 2

    Send a photo

    Post the photo from your upload handler, exactly as it arrived. Re-encoding strips the signature.

  3. 3

    Act on the result

    Branch on one field. Every check also gets a public link anyone can open to re-verify it.

EndpointPOSThttps://api.verena.se/v1/origin/verify
# 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
Install$npm install verena
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);
}
Install$pip install verena
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)
Install$npm install @verena/verifyOpen source
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" }, …]
Serverhttps://mcp.verena.se
// 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?
Response200 OK
{
  "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
Read the API reference Get a test key

SDKs for Node.js and Python Verifier is open source

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.

Become a pilot partner