What it does

content-authenticity-report takes a page or a block of text and answers the question an agent asks right before it cites, summarizes, or acts on it: is this AI-generated slop?

{
  "url": "https://example.com/some-article"
}

returns a text authenticity read, an image authenticity read for the page's lead images, and one blended score:

{
  "text_analysis": {
    "probability_ai_generated": 0.72,
    "verdict": "likely_ai",
    "suspicious_phrases": ["it is important to note"]
  },
  "image_analysis": [
    { "image_url": "https://example.com/lead.jpg", "probability_ai_generated": 0.15, "verdict": "likely_real" }
  ],
  "authenticity_score": 0.328,
  "overall_verdict": "likely_ai"
}

Send text instead of url to skip page extraction entirely and check a block of text directly.

Why

Checking a page's authenticity already meant three separate calls: extract the page, run the text through an AI-content detector, run the lead image through an AI-image detector, then do the math on how much weight to give each. That's the exact workflow this collapses into one settlement — extraction feeds both detectors, and the response ships with the weighted score already computed (text 70%, images 30% when an image was actually scored).

Degradation

Page extraction is the required leg for a url call — a fetch failure fails the whole call, since there's nothing to score without it. The text-authenticity check is required whenever there's enough extracted (or raw) text to assess; if a page is too thin to score, text_analysis.skipped_reason explains why instead of the call failing outright. Each lead image is an independent optional leg: a broken image URL or a vision-model timeout degrades that part of the report, not the whole call.

Both detectors underneath are calibrated style-signal heuristics — the same phrasing and vision tells a careful human reviewer would notice — not forensic or watermark-level detection, and the report says so plainly.

Price: $0.06.