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.

6 signals built in * 20 labels per request * zero training data * fast enough for real time
POST /v1/analyze LIVE

                                
200 OK

// 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.

custom-labels.json

                            

name them anything. we'll keep up.

// how it works

One endpoint. Plain JSON. No ceremony.

01

Define your labels

Pick the names that fit your domain and describe what each one should detect in a single sentence.

02

POST the text

Send the text with your userLabels map and the preset flag. Bearer-key auth, plain JSON.

03

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.

POST /v1/analyze — request

                        
200 OK — response

                        

                            

// 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.

request.json
POST demo.textinsights.fyi/v1/analyze
response application/json

// 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.