Set a client timeout
Give each call a clear timeout (AI calls usually take 1 to 3 seconds) so a slow request never blocks your app.
Create a free account, make an API key and send one POST request. This example sends a customer message to the Intent Detection API and gets back the intent, a confidence score and the details it found, as JSON.
{
"text": "I want to cancel my subscription and review my invoices.",
"intent_types": [
"cancel_subscription",
"billing_issue",
"upgrade_plan"
]
}
{
"success": true,
"request_id": "req_7f3a9c2d1e4b8a6f",
"data": {
"result": {
"intent": "cancel_subscription",
"confidence": 0.98,
"entities": {
"action": "cancel",
"target": "subscription"
}
}
},
"meta": {
"version": "v1",
"timestamp": "2026-09-27T12:34:56+00:00"
}
}
Sign up with email or GitHub. Free plan with 100 credits/month + 1,000 bonus credits when you sign in before 23 Nov.
Open Dashboard > API Keys and create a key. Keep it on your server, never in browser code.
Send JSON with your key in the x-api-key header. Copy the example below in your language.
Every endpoint answers with the same envelope, so the same code handles every task.
Put your key in RSFLOWHUB_API_KEY (or in place of YOUR_API_KEY for cURL) and run it. Prefer an SDK? See the official SDKs.
curl -X POST "https://rsflowhub.com/api/v1/ai/intent-detection" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"text": "I want to cancel my subscription and review my invoices.",
"intent_types": ["cancel_subscription", "billing_issue", "upgrade_plan"]
}'
use Illuminate\Support\Facades\Http;
$response = Http::withHeaders(['X-API-Key' => env('RSFLOWHUB_API_KEY')])
->timeout(10)
->post('https://rsflowhub.com/api/v1/ai/intent-detection', [
'text' => 'I want to cancel my subscription and review my invoices.',
'intent_types' => ['cancel_subscription', 'billing_issue', 'upgrade_plan'],
]);
$result = $response->json('data.result'); // ['intent' => 'cancel_subscription', ...]
const response = await fetch('https://rsflowhub.com/api/v1/ai/intent-detection', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.RSFLOWHUB_API_KEY,
},
body: JSON.stringify({
text: 'I want to cancel my subscription and review my invoices.',
intent_types: ['cancel_subscription', 'billing_issue', 'upgrade_plan'],
}),
});
const { data } = await response.json();
console.log(data.result.intent); // "cancel_subscription"
import os
import requests
response = requests.post(
"https://rsflowhub.com/api/v1/ai/intent-detection",
headers={"X-API-Key": os.environ["RSFLOWHUB_API_KEY"]},
json={
"text": "I want to cancel my subscription and review my invoices.",
"intent_types": ["cancel_subscription", "billing_issue", "upgrade_plan"],
},
timeout=10,
)
print(response.json()["data"]["result"]["intent"]) # cancel_subscription
Every endpoint returns the same envelope. Check success, then read data.result.
success booleanrequest_id stringdata.result objecterror objectmeta objectGive each call a clear timeout (AI calls usually take 1 to 3 seconds) so a slow request never blocks your app.
On HTTP 429, wait for the Retry-After header, then retry with a small random delay.
Separate keys for local, staging and production, so you can revoke one without touching the others.
The full guide with every option is in the docs quick start.
Free plan with 100 credits/month + 1,000 bonus credits when you sign in before 23 Nov. Your first call is a few minutes away.
Flowy
AI assistant