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
Create an Account
Sign up for free at moder8r.app and generate an API key from your dashboard.
Change One Line
Replace commentanalyzer.googleapis.com with perspective.moder8r.app. That's the only code change.
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.
| Attribute | Description | Quality |
|---|---|---|
| TOXICITY | Rude, disrespectful, or unreasonable | Good |
| SEVERE_TOXICITY | Very hateful, aggressive, or threatening | Good |
| IDENTITY_ATTACK | Targeting race, religion, gender, etc. | Good |
| INSULT | Insulting or demeaning | Good |
| PROFANITY | Swear words and explicit language | Good |
| THREAT | Threatening language | Good |
| SEXUALLY_EXPLICIT | Sexually explicit content | Good |
| FLIRTATION | Flirtatious content | Approximate |
| OBSCENE | Obscene content | Good |
| ATTACK_ON_COMMENTER | Targeting another commenter | Approximate |
| ATTACK_ON_AUTHOR | Targeting the author | Approximate |
| INFLAMMATORY | Inflammatory content | Good |
| LIKELY_TO_REJECT | Likely to be rejected by moderators | Good |
| SPAM | Spam content | Approximate |
| INCOHERENT | Incoherent content | Approximate |
| UNSUBSTANTIAL | Low-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 PricingMigration 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