Google's Perspective API ends on December 31, 2026. api.unprofane.com/v1alpha1/comments:analyze answers the same request with the same response, the same error envelope and the key as ?key=.
80days left
The path, the body, the response and the errors stay as they are. Only the host moves.
POST https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=…
POST https://api.unprofane.com/v1alpha1/comments:analyze?key=…
comment.text, requestedAttributes, languages, doNotStore, spanAnnotations. The production attributes and the experimental aliases.
attributeScores with summaryScore and spanScores, languages, detectedLanguages. Errors come back in Google's envelope.
The contract is tested against Google's own discovery document, so a field the old service had is a field this one has.
Each one is the two or three lines that change.
The scores come from a different engine, so a threshold of 0.8 there is not 0.8 here. The replay tool takes a CSV of your texts with their old scores, runs them through this engine in memory, and shows the agreement and the threshold that keeps your queue the same size. Nothing is stored.
Open the replay toolUnprofane-Engine and Unprofane-Route headers, and the request counts as one check against the plan. Until the Civil Comments calibration ships, the scores are the engine's own scale rather than a fit to Perspective's; the replay tool says which is in force. The docs have the full list.