Categorized Knowledge Clustering
Group hundreds of FAQs into logical collections (Billing, Technical, Shipping, Account) with automatic slug generation.
Programmatically organize and syndicate Q&A collections for automated chatbots and self-serve help portals.
https://rsflowhub.com/api/v1/ai/faq-collections
X-API-Key header{
"name": "Support FAQs",
"faqs": [
{
"id": "faq_1",
"question": "How can I change my password?",
"answer": "Go to settings, click on security, then select change password."
},
{
"id": "faq_2",
"question": "What is your refund policy?",
"answer": "We offer a 14-day refund window on all of our premium plans."
}
]
}
{
"result": {
"message": "See the API reference for the full result schema."
}
}
FAQ Collections Management API is a REST API on RSFlowHub for web, mobile and AI agent applications. Send a JSON request to POST /api/v1/ai/faq-collections 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.
POST /api/v1/ai/faq-collectionsX-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 |
|---|---|---|---|
name |
string | Required | The name of the FAQ collection (e.g., "Billing support FAQs"). |
faqs |
array of objects | Required | List of FAQ items to save. Maximum 500 items per collection. |
faqs.*.question |
string | Required | The FAQ question text. |
faqs.*.answer |
string | Required | The FAQ answer text. |
faqs.*.id |
string | Optional | Optional custom identifier (e.g. "faq_1"). |
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/faq-collections" \
-H "Content-Type: application/json" \
-H "X-API-Key: rfh_your_api_key" \
-d '{"name":"Support FAQs","faqs":[{"id":"faq_1","question":"How can I change my password?","answer":"Go to settings, click on security, then select change password."},{"id":"faq_2","question":"What is your refund policy?","answer":"We offer a 14-day refund window on all of our premium plans."}]}'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->post('https://rsflowhub.com/api/v1/ai/faq-collections', [
'headers' => [
'Content-Type' => 'application/json',
'X-API-Key' => 'rfh_your_api_key',
],
'json' => array (
'name' => 'Support FAQs',
'faqs' =>
array (
0 =>
array (
'id' => 'faq_1',
'question' => 'How can I change my password?',
'answer' => 'Go to settings, click on security, then select change password.',
),
1 =>
array (
'id' => 'faq_2',
'question' => 'What is your refund policy?',
'answer' => 'We offer a 14-day refund window on all of our premium plans.',
),
),
),
]);
echo $response->getBody();
const response = await fetch('https://rsflowhub.com/api/v1/ai/faq-collections', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'rfh_your_api_key'
},
body: JSON.stringify({"name":"Support FAQs","faqs":[{"id":"faq_1","question":"How can I change my password?","answer":"Go to settings, click on security, then select change password."},{"id":"faq_2","question":"What is your refund policy?","answer":"We offer a 14-day refund window on all of our premium plans."}]})
});
const data = await response.json();
console.log(data);
import requests
url = "https://rsflowhub.com/api/v1/ai/faq-collections"
headers = {
"Content-Type": "application/json",
"X-API-Key": "rfh_your_api_key"
}
payload = {"name":"Support FAQs","faqs":[{"id":"faq_1","question":"How can I change my password?","answer":"Go to settings, click on security, then select change password."},{"id":"faq_2","question":"What is your refund policy?","answer":"We offer a 14-day refund window on all of our premium plans."}]}
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": {
"message": "See the API reference for the full result schema."
}
},
"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": {
"name": [
"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
Group hundreds of FAQs into logical collections (Billing, Technical, Shipping, Account) with automatic slug generation.
Updated FAQs are automatically re-indexed into pgvector for fast semantic similarity search in chatbots.
Isolate FAQ collections per organization or team with scoped access tokens and atomic update validation.
Export collections directly as Google-compliant FAQPage JSON-LD schemas for automated SEO publication.
How teams use the FAQ Collections Management API in production.
Sync help center articles from internal CMS into in-app contextual help widgets automatically.
{"collection_id": "col_billing_01", "indexed_items": 14, "vector_status": "ready"}Answers repetitive tier-1 questions directly inside your app.
Ground automated support chatbots in curated, verified company answers to eliminate hallucinations.
{"status": "success", "item_id": "faq_ret_30d", "vector_dims": 768}Returns your approved answer wording for matched questions.
Programmatically generate and embed valid FAQPage schemas on marketing landing pages.
{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [...]}Supplies FAQ content you can publish with FAQPage structured data.
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