Drop-in Replacement

Perspective API is Retiring. We're Ready.

Google's Perspective API shuts down December 31, 2026. Migrate to moder8r with a single line change — same endpoints, same JSON, same client libraries.

Migrate in 3 Steps

1

Create an Account

Sign up for free at moder8r.app and generate an API key from your dashboard.

2

Change One Line

Replace commentanalyzer.googleapis.com with perspective.moder8r.app. That's the only code change.

3

Done

Same request format, same response shape, same client libraries. Everything just works.

One Line Change

Just swap the hostname. The request and response are identical.

curl

Before (Google)

curl -X POST \
  'https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=YOUR_GOOGLE_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "comment": { "text": "You are terrible." },
    "requestedAttributes": { "TOXICITY": {} }
  }'

After (moder8r)

curl -X POST \
  'https://perspective.moder8r.app/v1alpha1/comments:analyze?key=m8r_sk_YOUR_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "comment": { "text": "You are terrible." },
    "requestedAttributes": { "TOXICITY": {} }
  }'

Node.js

Before (Google)

const url = 'https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze?key=' + API_KEY;

const res = await fetch(url, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    comment: { text: 'You are terrible.' },
    requestedAttributes: { TOXICITY: {} }
  })
});

After (moder8r)

const url = 'https://perspective.moder8r.app/v1alpha1/comments:analyze?key=' + API_KEY;

const res = await fetch(url, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    comment: { text: 'You are terrible.' },
    requestedAttributes: { TOXICITY: {} }
  })
});

Python

Before (Google)

from googleapiclient import discovery

client = discovery.build(
    "commentanalyzer", "v1alpha1",
    developerKey=GOOGLE_API_KEY
)

After (moder8r)

from googleapiclient import discovery

client = discovery.build(
    "commentanalyzer", "v1alpha1",
    developerKey="m8r_sk_YOUR_KEY",
    discoveryServiceUrl="https://perspective.moder8r.app/$discovery/rest?version=v1alpha1"
)

Supported Attributes

All 16 Perspective attributes supported, plus _EXPERIMENTAL variants.

AttributeDescriptionQuality
TOXICITYRude, disrespectful, or unreasonable
Good
SEVERE_TOXICITYVery hateful, aggressive, or threatening
Good
IDENTITY_ATTACKTargeting race, religion, gender, etc.
Good
INSULTInsulting or demeaning
Good
PROFANITYSwear words and explicit language
Good
THREATThreatening language
Good
SEXUALLY_EXPLICITSexually explicit content
Good
FLIRTATIONFlirtatious content
Approximate
OBSCENEObscene content
Good
ATTACK_ON_COMMENTERTargeting another commenter
Approximate
ATTACK_ON_AUTHORTargeting the author
Approximate
INFLAMMATORYInflammatory content
Good
LIKELY_TO_REJECTLikely to be rejected by moderators
Good
SPAMSpam content
Approximate
INCOHERENTIncoherent content
Approximate
UNSUBSTANTIALLow-substance content
Approximate

Key Differences from Google

Score Precision

Full-precision floats from the underlying model, not rounded to 3 decimal places like Google's API.

Span Annotations

When enabled, spans are identified by GPT-4.1 Nano. Character offsets are approximate (~200-500ms extra latency).

Approximate Attributes

SPAM, INCOHERENT, and UNSUBSTANTIAL are scored by a GPT-4.1 Nano classifier with binary confidence (high/low).

Transparent Pricing That Scales

Start free with 1,000 requests/month. Paid plans from $19/mo for 25,000 requests up to $249/mo for 500,000 requests.

View Full Pricing

Migration FAQ

Don't wait for the shutdown.

Migrate now while Google's API is still running so you can verify everything works side-by-side.

Start Free Migration