TrueSecurix

Know which customer images were made or changed.

Send any image a customer submits: a shop or product photo, a claim photo, an invoice, a bill, a receipt or a document. TrueSecurix answers real, AI generated, AI edited or digitally edited, tells your team whether to pass, review or flag it, and shows the evidence and the edited areas behind the answer.

In our held-out test of 31,966 images, 0 of 2,526 genuine business photos (shops, markets, receipts, documents) were flagged and 87.8% of manipulated images were caught. Read how we measured

One request: a generated kirana store photo from our test set

curl https://truesecurix.com/v1/image/authenticity \
  -H "X-API-Key: $TRUESECURIX_API_KEY" \
  -H "Idempotency-Key: loan-48211-shop-1" \
  -F "image=@kirana_front.jpg" \
  -F "reference=loan-48211"
{
  "object": "image_authenticity",
  "reference": "loan-48211",
  "decision": "flag",
  "classification": "ai_generated",
  "label": "AI Generated",
  "confidence": 0.9905,
  "review_recommended": false,
  "suspected": null,
  "scores": { "real": 0.0028, "ai_generated": 0.9905,
              "ai_edited": 0.0045, "digitally_edited": 0.0022 },
  "indicators": [
    { "code": "generator_fingerprint", "strength": "strong",
      "detail": "Generative-model traces in 6 of 6 areas of the image, a level genuine camera photos in our reference set do not reach." },
    { "code": "metadata_absent", "strength": "neutral",
      "detail": "No metadata in the file. Common for images sent through messaging apps; not counted as evidence." }
  ],
  "regions": [],
  "model_version": "ia-2026.10.15",
  ...
}

A real result from model ia-2026.10.15 on a held-out test image, trimmed for length. The full field list is below and in the API reference.

Each answer is a class the model was trained and measured on.

Four answers, in the terms of your own files

Every image comes back as exactly one of four classes, with a score for each, so your team knows not only that something is wrong but what kind of wrong it is.

AnswerWhat it meansWhat it looks like in practice
RealA camera photo with no sign of generation or editing.A seller's own shopfront, a car photographed after a real accident, a delivery partner's licence, a receipt photographed on the counter.
AI generatedThe whole image was made by an image model. Nothing in it was photographed.A kirana store that does not exist, a dented car that was never in an accident, a product listing with no product behind it, a made-up invoice.
AI editedA real photo with part of it redrawn by an AI editor.A signboard renamed to match the application, damage added to a car or a parcel, empty shelves filled with stock, a crack added to a phone screen for a refund.
Digitally editedA real photo changed by hand in an image editor: pasted, cloned or retouched.An amount changed on an invoice or a repair estimate, a figure changed on a medical bill or a payslip, a stamp copied onto a certificate.

Real results from model ia-2026.10.15 on held-out test images. The marked boxes are the regions the API returned.

Three images, as the API examined them

A genuine tea stall passes. A generated kirana store is flagged. A street photo with a pasted price display is flagged, with the pasted areas located.

Genuine photo: a tea stall in Tamil Nadu
Passed
Genuine photo: a tea stall in Tamil Nadu
AnswerReal 61.8%

No generative traces, no noise or compression inconsistency and no duplicated regions were found.

Karthickbala, Wikimedia Commons, CC BY-SA 3.0

Generated: a kirana store that does not exist
Flagged
Generated: a kirana store that does not exist
AnswerAI Generated 99.0%

Generative-model traces in 6 of 6 areas of the image, a level genuine camera photos in our reference set do not reach.

Made with Stable Diffusion XL for our test set

Edited: a price display pasted into a street photoarea 1, 1.00
Flagged
Edited: a price display pasted into a street photo
AnswerDigitally Edited 97.9%

5 areas (about 6% of the image, lower left) show noise and compression traces that differ from the rest of the photo, the signature of pasted, cloned or retouched content.

Biswarup Ganguly (street, CC BY 3.0) and Wikimedia Commons (price tags, CC BY 2.0), edited for our test set

Nobody is rejected on a guess. When the evidence is not strong enough to accuse a genuine customer, a person decides.

Three outcomes your team can act on

The decision field turns the answer into an action. Route on it directly in your onboarding, claims or case system.

Pass

Accept the image

The answer is Real and no evidence points to a manipulation. The file continues through your normal checks.

Review

A person decides

Some evidence points to a manipulation, but not strongly enough to accuse a genuine customer. The suspected field names the class it leans toward.

Flag

Treat as manipulated

Strong evidence of generation or editing, with the indicators that support it and, for edits, the regions where the change was found.

What a review looks like

An image sent to review is answered Real with review_recommended set to true, because the evidence did not clear the bar for an accusation. It is never reported as a pass. The suspected field tells your reviewer what to look for: the manipulation class the evidence leans toward, and its score.

Test keys return this exact shape when you send reference=review, so you can build your review queue before you spend a credit.

{
  "decision": "review",
  "classification": "real",
  "review_recommended": true,
  "suspected": {
    "classification": "ai_edited",
    "label": "AI Edited",
    "score": 0.62
  },
  ...
}

The contract is versioned. Fields are added, never renamed or removed.

What every response contains

Enough for an automated rule and enough for a reviewer in your team to understand the call without asking us.

FieldWhat it holds
decisionThe outcome to act on: pass, review or flag.
classificationOne of real, ai_generated, ai_edited, digitally_edited, with a readable label beside it.
confidenceThe calibrated probability of the answer, from 0 to 1.
scoresA probability for each of the four classes. They add up to 1.
suspectedFor a review only: the manipulation class the evidence leans toward and its score. Null otherwise.
indicatorsThe evidence behind the answer. Each has a stable code you can build rules on, the class it supports, a strength (strong, moderate, weak or neutral) and a plain-English detail for a reviewer.
regionsLocated edited areas, each with x, y, width and height as fractions of the image's width and height from the top-left corner, a score, and the class it supports. A box at x 0.2281 starts 22.81% of the way across, at any display size.
provenanceWhat the file declares about its own origin: C2PA content credentials and whether they verify, the IPTC digital source type, the editing software, and the camera make and model. Only present evidence counts: a file with no metadata is not treated as suspicious.
imageWidth, height, format and the SHA-256 fingerprint of the file you sent.
model_versionThe model that made the call, for example ia-2026.10.15. It is also written to your history with every check.
referenceYour own identifier, such as an application, claim or order number, echoed back for matching.

Indicator codes you will see

CodePoints toWhat was found
generator_fingerprintAI generatedTraces left by image generation models across areas of the image.
localized_generative_regionAI editedGeneration traces confined to part of an otherwise camera-made photo.
tamper_localizedDigitally editedAreas whose noise and compression traces differ from the rest of the photo.
duplicated_regionDigitally editedPart of the image copied to another place in the same image.
generator_parametersAI generatedGeneration settings written into the file by an image generation tool.
editing_softwareDigitally editedThe file was saved by an image editor. Weak on its own: re-saving is not tampering.
no_manipulation_foundRealNo generative traces, no noise or compression inconsistency and no duplicated regions.
metadata_absentContext onlyNo metadata in the file, which is normal after a messaging app. Not counted as evidence.

The full list of codes is in the API reference.

Measured on images it never saw

Every figure comes from a test set of 31,966 images kept apart from training, threshold setting and model choice. Four generator families were kept out of training entirely, to show how the model does on tools it has never seen.

Training used 49,941 images and validation 24,908. Every image is licensed for commercial use, recorded per image. About half of every class was passed through messaging-app recompression and screenshots, the way customer images actually arrive.

Read every measured result

Genuine business photos flaggedShops, markets, receipts and documents. 95% upper bound 0.15%.0 of 2,526
Manipulated images caughtAt the setting that serves every customer today.87.8%
Sent to reviewHeld for a person instead of being passed or flagged.7.7%
Correct when not sent to reviewImages that came back as a confident pass or flag.98.2%

The image tools fraudsters reach for

Share of each tool's held-out test images that the model answered as not real. "Held out" means no image from that tool was used in training.

ToolKindTest imagesFlagged as not real
IdeogramGenerator1,26596.0%
Grok Imagine (xAI)Generator1,03395.7%
GPT Image (OpenAI)Generator82695.3%
Nano Banana (Google Gemini)Generator83993.9%
Seedream (ByteDance) held outGenerator4,48893.7%
Imagen (Google)Generator82692.6%
FLUX (Black Forest Labs)Generator1,21792.6%
GPT-4o image editsAI editor86284.1%
FLUX Kontext editsAI editor82876.4%

Model ia-2026.10.15. The measured results page has every tool, every photo source and every operating point.

What a security or compliance review asks first.

How your images are handled

Analysed in memory, never stored

The image is examined in memory and discarded. We keep its SHA-256 fingerprint and the result, so you can prove which file produced which answer without us holding the file.

Hosted in India

The service runs on Azure in Central India. Data handling is aligned with the DPDP Act, 2023, and a data processing agreement is available on request.

Charged once, only on success

One credit per image. A check that fails is not charged, and a repeated Idempotency-Key returns the original result without a second charge.

Every answer on record

Each check is written to your history with its outcome and model version. Filter it, export it as CSV, or receive it at your endpoint through signed webhooks.

Read how we secure the service

Formats and limits

One image per request, sent as a multipart upload in the image field.

iPhone photos saved as HEIC are not accepted. Convert them to JPEG first; most phones and gallery apps can export JPEG directly. The batch script lists HEIC files as not sent rather than skipping them silently.

FormatsChecked before a credit is reserved.JPEG, PNG, WebP
Shorter side, at leastSmaller images are refused with a clear error, not guessed at.128 px
Image size, at mostWidth times height, in megapixels.40 MP
File size, at mostLarger files are refused before any analysis.15 MB

A whole folder of images in one command

For a portfolio review or a proof of concept, the batch script sends every image in a folder and writes one CSV with the outcome, class, scores, top indicators and regions for each file.

  • Safe to stop and run again: images already in the CSV are skipped.
  • Each request uses the image's SHA-256 as its idempotency key, so no image is charged twice, even if a run is interrupted.
  • Nothing is skipped silently: unsupported files and images the API refuses are listed separately from failures worth retrying.
  • With your own labels, it prints accuracy per class, the confusion matrix, genuine images wrongly flagged and the share sent to review.

Download the batch script or read the batch instructions in the developer docs.

# Needs Python 3 and httpx
pip install httpx
export TRUESECURIX_API_KEY=tsx_live_xxx

python batch_image_authenticity.py ./images results.csv

# With your own labels, for a POC
python batch_image_authenticity.py ./images results.csv \
  --workers 4 --labels labels.csv

Run your own images today

Try a photo in the live demo now, or create an account for 100 free checks. No card is needed, and test keys are free while you build.

One image checkPay as you go. Credits never expire.Rs 5
Plans with checks includedStarter and Scale, from Rs 3,999 a month.See pricing
Lakhs of images a monthDedicated capacity and volume pricing.Enterprise