Multi-Label Intent Classification
Identifies single or multiple customer intents (e.g. "billing_support", "subscription_cancel") from free-form text.
High-accuracy customer intent classification and entity extraction API for support ticket routing and workflow automation.
https://rsflowhub.com/api/v1/ai/intent-detection
X-API-Key header{
"text": "I want to cancel my subscription on web and talk to the billing team.",
"intent_types": [
"billing_support",
"subscription_cancel"
],
"intent_entities": {
"subscription_cancel": [
"channel"
]
}
}
{
"result": {
"intent": "cancel_subscription",
"confidence": 0.96,
"entities": {
"refund_requested": true,
"payment_method": "credit_card"
}
}
}
Customer Intent & Entity Recognition API is a REST API on RSFlowHub for web, mobile and AI agent applications. Send a JSON request to POST /api/v1/ai/intent-detection with your API key; RSFlowHub runs it on a tuned AI model, falls back to a backup provider if needed, and returns a structured JSON result, usually within 1 to 3 seconds.
Try it without code or signup: Free intent detector
POST /api/v1/ai/intent-detectionX-API-Key headerSend these fields as a JSON body. An invalid or missing field returns a 422 error that names the field.
| Field | Type | Required | Description |
|---|---|---|---|
text |
string | Required | The user message or text to classify. Required if "messages" is not provided (Max: 5,000 characters). |
intent_types |
array of strings | Optional | Optional list of allowed intent names (e.g. ["cancel_subscription", "upgrade_plan"]). Max 10 items. |
intent_entities |
object | Optional | Optional JSON object mapping intent types to arrays of entity keys to extract. Max 10 items. |
messages |
array of objects | Optional | Optional conversation history for context-aware classification. Each message contains "role" (user/assistant) and "content" (max 1,000 chars). Max 5 messages. |
examples |
array of objects | Optional | Optional few-shot examples to guide classification. Each example contains "text", "intent", and optional "entities" object. Max 3 examples. |
multi_intent |
boolean | Optional | Optional. If true, returns an array of multiple matching intents under "intents". Default is false. |
allow_fallback |
boolean | Optional | Optional. If true, falls back to "unknown" if confidence is low or intent types do not match. Default is false. |
min_confidence |
number | Optional | Optional. Decimal threshold between 0 and 1. Filters out intents that fall below this confidence. Default is 0.0. |
Copy, replace rfh_your_api_key with your key and run. Prefer a client library? See the official SDKs.
curl -X POST "https://rsflowhub.com/api/v1/ai/intent-detection" \
-H "Content-Type: application/json" \
-H "X-API-Key: rfh_your_api_key" \
-d '{"text":"I want to cancel my subscription on web and talk to the billing team.","intent_types":["billing_support","subscription_cancel"],"intent_entities":{"subscription_cancel":["channel"]}}'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->post('https://rsflowhub.com/api/v1/ai/intent-detection', [
'headers' => [
'Content-Type' => 'application/json',
'X-API-Key' => 'rfh_your_api_key',
],
'json' => array (
'text' => 'I want to cancel my subscription on web and talk to the billing team.',
'intent_types' =>
array (
0 => 'billing_support',
1 => 'subscription_cancel',
),
'intent_entities' =>
array (
'subscription_cancel' =>
array (
0 => 'channel',
),
),
),
]);
echo $response->getBody();
const response = await fetch('https://rsflowhub.com/api/v1/ai/intent-detection', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'rfh_your_api_key'
},
body: JSON.stringify({"text":"I want to cancel my subscription on web and talk to the billing team.","intent_types":["billing_support","subscription_cancel"],"intent_entities":{"subscription_cancel":["channel"]}})
});
const data = await response.json();
console.log(data);
import requests
url = "https://rsflowhub.com/api/v1/ai/intent-detection"
headers = {
"Content-Type": "application/json",
"X-API-Key": "rfh_your_api_key"
}
payload = {"text":"I want to cancel my subscription on web and talk to the billing team.","intent_types":["billing_support","subscription_cancel"],"intent_entities":{"subscription_cancel":["channel"]}}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
Every RSFlowHub endpoint uses the same envelope, so one parser handles all of them. Failed calls are not charged.
{
"success": true,
"request_id": "req_3f9a2c7e-5b1d-4e8a-9c2f-7d6e1a0b4c8d",
"data": {
"result": {
"intent": "cancel_subscription",
"confidence": 0.96,
"entities": {
"refund_requested": true,
"payment_method": "credit_card"
}
}
},
"meta": {
"version": "v1",
"timestamp": "2026-10-05T09:30:00Z"
}
}
{
"success": false,
"request_id": "req_8c1d4e2a-7f3b-4a9c",
"error": {
"code": "VALIDATION_ERROR",
"message": "The given data was invalid.",
"details": {
"text": [
"This field is required."
]
}
},
"meta": {
"version": "v1",
"timestamp": "2026-10-05T09:30:00Z"
}
}
| Field | Type | Meaning |
|---|---|---|
success | boolean | true when the call worked, false on any error. |
request_id | string | Unique id for this call. Quote it when you contact support. |
data.result | object | The result of this endpoint (see the example). |
error | object | Only on failure: code, message and details per field. |
meta | object | API version and server timestamp. |
All error codes: Errors reference
Identifies single or multiple customer intents (e.g. "billing_support", "subscription_cancel") from free-form text.
Extracts target entities such as order IDs, account emails, channel types, and requested action dates.
Returns numeric confidence scores (0.0 to 1.0) for each detected intent to trigger automated fallback rules.
Built for instant integration with Zendesk, Freshdesk, Intercom, and custom CRM ticket workflows.
How teams use the Customer Intent & Entity Recognition API in production.
Classify incoming customer support emails to instantly route them to Billing, Technical Support, or Sales.
{"intents": ["subscription_cancel", "billing_support"], "route": "billing"}Removes the wait for manual ticket triage: every ticket is classified as it arrives.
Understand customer request intent to trigger instant order tracking or return authorization workflows.
{"intent": "track_order", "entities": {"order_id": "88491"}}Provides instant resolution for common buyer queries.
Flag cancellation and complaint intents immediately to trigger retention team alerts.
{"intent": "account_cancellation", "churn_risk": "high"}Protects recurring revenue through proactive outreach.
A chatbot works best when it knows what the visitor wants before it answers. Send each message to the intent API, get back a label such as "pricing", "refund" or "book_appointment", and decide what the chatbot does next: a fixed reply, a form, a human, or the AI model.
How it works in a chatbot
Map each intent to a fixed answer. The RSFlowHub chat widget does exactly this with its Auto replies feature, so repeat questions cost no AI reply credits.
Send "talk to a person" to a support ticket, "pricing" to your sales flow and everything else to the AI model.
Pass your own intent names and a few example sentences, so the labels match your business instead of a generic list.
Want a chatbot without building one? The RSFlowHub AI chatbot for your website is live in about 5 minutes with one script tag: it answers from your documents, captures leads and creates support tickets. Read the chat widget guide, try the live chatbot demo, see chatbot pricing, or build your own with the chatbots API.
The same job done three ways.
| Topic | RSFlowHub API | Raw LLM prompts | Rules / regex |
|---|---|---|---|
| Output | Validated JSON fields | Free text you have to parse | Fixed patterns only |
| Setup | One POST request, no prompts | Write and maintain prompts and parsing | Write and maintain rule lists |
| Provider outage | Automatic fallback to a backup model | You build retries and a second vendor | Not applicable |
| Pricing | 1 credit per call, failed calls free | Per token, per vendor | Your own servers and upkeep |
| Understands context | Yes, AI model | Yes, AI model | No, keywords only |
Free plan with 100 credits/month + 1,000 bonus credits when you sign in before 23 Nov. Test it in the playground first, no code needed.
Flowy
AI assistant