custom labels — now in public beta
Analyze text through the labels you define
A flexible classification & moderation API. Sentiment, tone, toxicity, profanity,
misinformation and scam detection come built in — then add labels like
isTechSupportRequest or
mentionsKitties with nothing but
a one-line description. And it's fast — fast enough to run on every keystroke, not just
nightly batches.
// custom labels
If you can describe it, you can detect it.
Labels aren't fixed categories. Name anything your product cares about, describe it in one sentence, and get a probability back for every text you send.
-
Any label name.
isTechSupportRequest,hasName,mentionsKitties,upsellOpportunity— your domain, your names. -
Natural-language descriptions. No training data, no model hosting, no retraining when your definition changes.
-
Mix with the preset per request. Send the default preset, your labels, or both — the payload decides.
-
Independent probabilities. Every label is scored on its own — one text, many orthogonal signals.
name them anything. we'll keep up.
// how it works
One endpoint. Plain JSON. No ceremony.
Define your labels
Pick the names that fit your domain and describe what each one should detect in a single sentence.
POST the text
Send the text with your
userLabels map and the preset
flag. Bearer-key auth, plain JSON.
Read the probabilities
One score per custom label, plus sentiment, tone and a full category breakdown when the preset is on. Route, flag, or store — your call. Fast enough to run inline on every message your product touches.
// built in
Signals, already wired.
Every request can return calibrated scores for the signals nearly every text pipeline needs.
Don't want them? Set
includeDefaultPreset: false
and run your labels only.
Sentiment
Positive, negative or neutral — with a calibrated confidence score, not a boolean.
"sentiment": { "kind": "positive", "confidence": 0.93 }
Tone
How the text sounds — one kind plus a confidence score: polite, hostile, urgent, friendly, informal and more.
"tone": { "kind": "polite", "confidence": 0.81 }
Toxicity
Insults, belittling and hostile language — the general temperature of the text.
"toxicity": 0.02
Profanity
Swearing and crude language, scored independently from toxicity and tone.
"profanity": 0.0
Misinformation
Conspiracy patterns, miracle claims and known false-narrative structures.
"misinformation": 0.04
Scam detection
Phishing bait, too-good-to-be-true offers and social-engineering pressure.
"urgency_and_scams": 0.01
+ 15 more: insult, violence, sexuality, substance_abuse, hate_speech, political_content, medical_content, advertisement, educational_content, entertainment, humor, sarcasm_and_irony, clickbait, spoilers, copyright_infringement.
// live demo
Don't take our word for it.
Edit the payload and send it — the request goes straight to our live demo endpoint, exactly as it would from your app. Change the text, rename labels, add your own.
POST demo.textinsights.fyi/v1/analyze
// use cases
Whatever your product needs to notice.
Support triage
Route tickets to billing, tech and logistics queues by probability — not keyword lists.
Community moderation
Define the exact policy lines your platform needs — down to
mentionsKitties — and enforce
them consistently.
Fraud interception
Catch phishing and scam patterns in messages before they ever reach your users.
Voice of customer
Surface feature requests, churn risk and sentiment across every message you receive.
// faq
Questions, answered.
Do I need training data or an ML team?
No. You describe each label in one sentence and the model handles the rest. Changing what you detect is a payload edit — not a retraining job.
How many custom labels can I use?
Up to 20 custom labels per request, mixed freely with the default preset. Every label is scored independently in the same call.
What does a response look like?
A probability between 0 and 1 for every label you sent, plus sentiment, tone and a full category breakdown when the default preset is enabled. Try it in the live demo above.
Can I run only my labels?
Yes — set
includeDefaultPreset: false and
sentiment, tone and the category scores are omitted from the response entirely.
How is the API priced?
Simple pay-per-request pricing with a free tier for development. Create an API key and start with 1,000 free classifications.
// get started
Start detecting what matters.
Grab a key, describe your first label, classify your first text — five minutes, tops.