Automated Pros & Cons Extraction
Generates structured arrays of positive product highlights and negative complaint themes from review text.
Batch review summarization API extracting pros, cons, recurring product feedback, and sentiment score distribution.
https://rsflowhub.com/api/v1/ai/review-summary
X-API-Key header{
"reviews": [
"I love this app, it has changed my life. Best UX ever!",
"Decent app, but it crashes on launch sometimes on my Android device.",
"The subscription is way too expensive for what it offers. Cancelled.",
"Helpful customer support, they resolved my issue within 10 minutes."
]
}
{
"result": {
"summary": "Customers love the build quality and fast shipping, but battery life is the most common complaint.",
"overall_sentiment": "positive",
"total_analyzed": 120,
"positive_themes": [
"build quality",
"fast shipping"
],
"negative_themes": [
"battery life"
],
"common_praise": [
"Feels premium",
"Arrived early"
],
"common_complaints": [
"Battery drains by afternoon"
],
"recurring_pain_points": [
"Charging twice a day"
],
"common_suggestions": [
"Bigger battery"
],
"important_patterns": [
"Battery complaints rose after firmware 2.1"
],
"key_takeaways": [
"Prioritise a battery fix in the next release"
]
}
}
Customer Review Summary & Pros/Cons Extractor API is a REST API on RSFlowHub for web, mobile and AI agent applications. Send a JSON request to POST /api/v1/ai/review-summary 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/review-summaryX-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 |
|---|---|---|---|
reviews |
array | Required | Required array of customer reviews (Min: 1, Max: 50). Each review can be a raw text string or an object with text/review details. |
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/review-summary" \
-H "Content-Type: application/json" \
-H "X-API-Key: rfh_your_api_key" \
-d '{"reviews":["I love this app, it has changed my life. Best UX ever!","Decent app, but it crashes on launch sometimes on my Android device.","The subscription is way too expensive for what it offers. Cancelled.","Helpful customer support, they resolved my issue within 10 minutes."]}'
<?php
$client = new \GuzzleHttp\Client();
$response = $client->post('https://rsflowhub.com/api/v1/ai/review-summary', [
'headers' => [
'Content-Type' => 'application/json',
'X-API-Key' => 'rfh_your_api_key',
],
'json' => array (
'reviews' =>
array (
0 => 'I love this app, it has changed my life. Best UX ever!',
1 => 'Decent app, but it crashes on launch sometimes on my Android device.',
2 => 'The subscription is way too expensive for what it offers. Cancelled.',
3 => 'Helpful customer support, they resolved my issue within 10 minutes.',
),
),
]);
echo $response->getBody();
const response = await fetch('https://rsflowhub.com/api/v1/ai/review-summary', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'rfh_your_api_key'
},
body: JSON.stringify({"reviews":["I love this app, it has changed my life. Best UX ever!","Decent app, but it crashes on launch sometimes on my Android device.","The subscription is way too expensive for what it offers. Cancelled.","Helpful customer support, they resolved my issue within 10 minutes."]})
});
const data = await response.json();
console.log(data);
import requests
url = "https://rsflowhub.com/api/v1/ai/review-summary"
headers = {
"Content-Type": "application/json",
"X-API-Key": "rfh_your_api_key"
}
payload = {"reviews":["I love this app, it has changed my life. Best UX ever!","Decent app, but it crashes on launch sometimes on my Android device.","The subscription is way too expensive for what it offers. Cancelled.","Helpful customer support, they resolved my issue within 10 minutes."]}
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": {
"summary": "Customers love the build quality and fast shipping, but battery life is the most common complaint.",
"overall_sentiment": "positive",
"total_analyzed": 120,
"positive_themes": [
"build quality",
"fast shipping"
],
"negative_themes": [
"battery life"
],
"common_praise": [
"Feels premium",
"Arrived early"
],
"common_complaints": [
"Battery drains by afternoon"
],
"recurring_pain_points": [
"Charging twice a day"
],
"common_suggestions": [
"Bigger battery"
],
"important_patterns": [
"Battery complaints rose after firmware 2.1"
],
"key_takeaways": [
"Prioritise a battery fix in the next release"
]
}
},
"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": {
"reviews": [
"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
Generates structured arrays of positive product highlights and negative complaint themes from review text.
Summarizes dozens or hundreds of raw customer reviews in a single unified API payload.
Highlights top 3 urgent product improvements and feature requests requested by customers.
Outputs percentage breakdown of positive, neutral, and negative customer feedback across batches.
How teams use the Customer Review Summary & Pros/Cons Extractor API in production.
Display instant "AI Pros & Cons Summary" pills above product reviews to accelerate buyer purchase decisions.
{"pros": ["Design", "Battery life", "Fast delivery"], "cons": ["Screen durability"], "overall": "positive"}Gives every product page a clear, persuasive description.
Analyze app store feedback batches weekly to help product managers prioritize bug fixes.
{"top_requests": ["Fix dark mode bug", "Android 14 crash fix"], "sentiment": "mixed"}Saves product teams 10+ hours of manual review tagging.
Summarize monthly customer satisfaction reviews across G2, Trustpilot, and Google Business for executive reports.
{"highlights": "Support response time praised; billing double-charge complaint flagged."}Delivers clear monthly brand reputation summaries.
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 | 3 credits 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