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.