curl -X POST "https://lookup.proweblook.com/api/v1/spamchecker" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you! 💰",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
}'
curl "https://lookup.proweblook.com/api/v1/spamchecker?api_key=YOUR_API_KEY&subject=Special+offer+just+for+you&content=Act+now+free+money+click+here"
const response = await fetch("https://lookup.proweblook.com/api/v1/spamchecker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: "YOUR_API_KEY",
subject: "Special offer just for you! 💰",
content: "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
});
const data = await response.json();
console.log(`Spam score: ${data.data.spam_score} — ${data.data.risk_level}`);
import requests
r = requests.post("https://lookup.proweblook.com/api/v1/spamchecker", json={
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you!",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
data = r.json()
print(f"Score: {data['data']['spam_score']} — {data['data']['risk_level']}")
print(f"Triggers: {data['data']['total_spam_triggers']}")
$response = Http::post('https://lookup.proweblook.com/api/v1/spamchecker', [
'api_key' => 'YOUR_API_KEY',
'subject' => 'Special offer just for you!',
'content' => 'ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER',
]);
$data = $response->json();
echo "Score: {$data['data']['spam_score']} — {$data['data']['risk_level']}";
{
"status": true,
"data": {
"spam_score": 95,
"risk_level": "High Risk",
"total_spam_triggers": 14,
"detected_triggers": [
{
"word": "ALL CAPS WORDS (ACT, NOW, FREE, MONEY, LIMITED, TIME, OFFER, CLICK, HERE, TODAY)",
"category": "Format",
"risk_level": 5,
"count": 10
},
{
"word": "act now",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "limited time",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "click here",
"category": "Phishing",
"risk_level": 5,
"count": 1
},
{
"word": "special offer",
"category": "Marketing",
"risk_level": 5,
"count": 1
},
{
"word": "money",
"category": "Financial",
"risk_level": 3,
"count": 1
},
{
"word": "offer",
"category": "Marketing",
"risk_level": 3,
"count": 2
},
{
"word": "free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "100% free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "click",
"category": "Phishing",
"risk_level": 3,
"count": 1
},
{
"word": "now",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "limited",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "today",
"category": "Urgency",
"risk_level": 1,
"count": 1
}
],
"word_count": 17,
"recommendations": [
"Your email has a spam score of 95%. Consider reviewing the highlighted terms.",
"Remove or rephrase 14 spam trigger words.",
"6 high-risk words detected. These are major spam indicators.",
"5 medium-risk words detected. Consider rephrasing these."
],
"processing_time_ms": 4
},
"balance": 99
}
{
"status": true,
"data": {
"spam_score": 0,
"risk_level": "Safe",
"total_spam_triggers": 0,
"detected_triggers": [],
"word_count": 12,
"recommendations": [
"Your email has a spam score of 0%. Consider reviewing the highlighted terms."
],
"processing_time_ms": 3
},
"balance": 98
}
{
"status": false,
"error": "At least one of subject or content is required"
}
{
"status": false,
"error": "Insufficient spam checker credits"
}
API Reference
Spam Checker
Analyze email subject and body for spam trigger words, calculate a spam score, and get detailed per-trigger risk breakdown.
POST
/
api
/
v1
/
spamchecker
curl -X POST "https://lookup.proweblook.com/api/v1/spamchecker" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you! 💰",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
}'
curl "https://lookup.proweblook.com/api/v1/spamchecker?api_key=YOUR_API_KEY&subject=Special+offer+just+for+you&content=Act+now+free+money+click+here"
const response = await fetch("https://lookup.proweblook.com/api/v1/spamchecker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: "YOUR_API_KEY",
subject: "Special offer just for you! 💰",
content: "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
});
const data = await response.json();
console.log(`Spam score: ${data.data.spam_score} — ${data.data.risk_level}`);
import requests
r = requests.post("https://lookup.proweblook.com/api/v1/spamchecker", json={
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you!",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
data = r.json()
print(f"Score: {data['data']['spam_score']} — {data['data']['risk_level']}")
print(f"Triggers: {data['data']['total_spam_triggers']}")
$response = Http::post('https://lookup.proweblook.com/api/v1/spamchecker', [
'api_key' => 'YOUR_API_KEY',
'subject' => 'Special offer just for you!',
'content' => 'ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER',
]);
$data = $response->json();
echo "Score: {$data['data']['spam_score']} — {$data['data']['risk_level']}";
{
"status": true,
"data": {
"spam_score": 95,
"risk_level": "High Risk",
"total_spam_triggers": 14,
"detected_triggers": [
{
"word": "ALL CAPS WORDS (ACT, NOW, FREE, MONEY, LIMITED, TIME, OFFER, CLICK, HERE, TODAY)",
"category": "Format",
"risk_level": 5,
"count": 10
},
{
"word": "act now",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "limited time",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "click here",
"category": "Phishing",
"risk_level": 5,
"count": 1
},
{
"word": "special offer",
"category": "Marketing",
"risk_level": 5,
"count": 1
},
{
"word": "money",
"category": "Financial",
"risk_level": 3,
"count": 1
},
{
"word": "offer",
"category": "Marketing",
"risk_level": 3,
"count": 2
},
{
"word": "free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "100% free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "click",
"category": "Phishing",
"risk_level": 3,
"count": 1
},
{
"word": "now",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "limited",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "today",
"category": "Urgency",
"risk_level": 1,
"count": 1
}
],
"word_count": 17,
"recommendations": [
"Your email has a spam score of 95%. Consider reviewing the highlighted terms.",
"Remove or rephrase 14 spam trigger words.",
"6 high-risk words detected. These are major spam indicators.",
"5 medium-risk words detected. Consider rephrasing these."
],
"processing_time_ms": 4
},
"balance": 99
}
{
"status": true,
"data": {
"spam_score": 0,
"risk_level": "Safe",
"total_spam_triggers": 0,
"detected_triggers": [],
"word_count": 12,
"recommendations": [
"Your email has a spam score of 0%. Consider reviewing the highlighted terms."
],
"processing_time_ms": 3
},
"balance": 98
}
{
"status": false,
"error": "At least one of subject or content is required"
}
{
"status": false,
"error": "Insufficient spam checker credits"
}
Overview
The Spam Checker API scans email subject lines and content for spam trigger phrases. It returns a 0–100 spam score, a risk level classification, a full list of detected trigger words with their category and risk weight, and actionable recommendations for improving deliverability. This endpoint supports bothGET and POST requests.
Request Parameters
string
required
Your ProWebLook API key. See Authentication.
string
The email subject line to analyze. At least one of
subject or content is required.string
The email body (plain text or HTML) to analyze. At least one of
subject or content is required.Response
boolean
true if the analysis completed successfully, false if an error occurred.object
The full spam analysis result.
Hide Data Fields
Hide Data Fields
integer
Overall spam score from
0 (clean) to 100 (high spam). Calculated from trigger density, risk weights, and category diversity.string
Human-readable risk classification based on the spam score:
| Range | Label |
|---|---|
| 70 – 100 | High Risk |
| 40 – 69 | Medium Risk |
| 15 – 39 | Low Risk |
| 0 – 14 | Safe |
integer
Total number of distinct spam trigger entries detected (including the ALL CAPS format trigger if present).
array
Array of all detected spam triggers, ordered by risk level (highest first).
Show Trigger Fields
Show Trigger Fields
string
The spam trigger phrase or pattern detected. ALL CAPS detection appears as a formatted string listing the offending words.
string
The trigger category. One of:
Format, Financial, Urgency, Marketing, Phishing, Health, Personal, Adult, Legal, Buzzword.integer
Risk weight for this trigger:
5 (high), 3 (medium), or 1 (low).integer
Number of times this trigger was found in the combined subject + content.
integer
Total word count of the analyzed content (subject + body combined).
string[]
Actionable suggestions for reducing the spam score.
integer
Time taken to complete the analysis in milliseconds.
integer
Your remaining spam checker credits after this request.
Spam Score Calculation
The score is derived from three factors:- Trigger density — weighted sum of
risk_level × countacross all triggers, normalized by word count - Category diversity — more unique trigger categories raise the score (e.g., mixing Urgency + Financial + Phishing is worse than one category alone)
- Occurrence density — ratio of total trigger instances to total word count
Trigger Categories
| Category | Examples |
|---|---|
Format | Excessive ALL CAPS words |
Financial | financial freedom, get rich, double your income, pure profit |
Urgency | act now, limited time, once in a lifetime, take action now |
Marketing | buy now, free gift, special offer, congratulations, not spam |
Phishing | click here, click below, verify your account, security alert |
Health | miracle, weight loss, no prescription, online pharmacy |
Personal | selected, you've been chosen, guaranteed, dear friend |
Adult | xxx, adult content, meet singles |
Legal | nigerian prince, no questions asked, offshore |
Buzzword | synergy, game-changer, cutting edge, disruptive |
Credit Cost
1 spam checker credit is deducted from yourspamchecker_balance per successful request.
curl -X POST "https://lookup.proweblook.com/api/v1/spamchecker" \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you! 💰",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
}'
curl "https://lookup.proweblook.com/api/v1/spamchecker?api_key=YOUR_API_KEY&subject=Special+offer+just+for+you&content=Act+now+free+money+click+here"
const response = await fetch("https://lookup.proweblook.com/api/v1/spamchecker", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
api_key: "YOUR_API_KEY",
subject: "Special offer just for you! 💰",
content: "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
});
const data = await response.json();
console.log(`Spam score: ${data.data.spam_score} — ${data.data.risk_level}`);
import requests
r = requests.post("https://lookup.proweblook.com/api/v1/spamchecker", json={
"api_key": "YOUR_API_KEY",
"subject": "Special offer just for you!",
"content": "ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER - CLICK HERE TODAY!!!"
})
data = r.json()
print(f"Score: {data['data']['spam_score']} — {data['data']['risk_level']}")
print(f"Triggers: {data['data']['total_spam_triggers']}")
$response = Http::post('https://lookup.proweblook.com/api/v1/spamchecker', [
'api_key' => 'YOUR_API_KEY',
'subject' => 'Special offer just for you!',
'content' => 'ACT NOW!!! 100% FREE MONEY - LIMITED TIME OFFER',
]);
$data = $response->json();
echo "Score: {$data['data']['spam_score']} — {$data['data']['risk_level']}";
{
"status": true,
"data": {
"spam_score": 95,
"risk_level": "High Risk",
"total_spam_triggers": 14,
"detected_triggers": [
{
"word": "ALL CAPS WORDS (ACT, NOW, FREE, MONEY, LIMITED, TIME, OFFER, CLICK, HERE, TODAY)",
"category": "Format",
"risk_level": 5,
"count": 10
},
{
"word": "act now",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "limited time",
"category": "Urgency",
"risk_level": 5,
"count": 1
},
{
"word": "click here",
"category": "Phishing",
"risk_level": 5,
"count": 1
},
{
"word": "special offer",
"category": "Marketing",
"risk_level": 5,
"count": 1
},
{
"word": "money",
"category": "Financial",
"risk_level": 3,
"count": 1
},
{
"word": "offer",
"category": "Marketing",
"risk_level": 3,
"count": 2
},
{
"word": "free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "100% free",
"category": "Marketing",
"risk_level": 3,
"count": 1
},
{
"word": "click",
"category": "Phishing",
"risk_level": 3,
"count": 1
},
{
"word": "now",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "limited",
"category": "Urgency",
"risk_level": 1,
"count": 1
},
{
"word": "today",
"category": "Urgency",
"risk_level": 1,
"count": 1
}
],
"word_count": 17,
"recommendations": [
"Your email has a spam score of 95%. Consider reviewing the highlighted terms.",
"Remove or rephrase 14 spam trigger words.",
"6 high-risk words detected. These are major spam indicators.",
"5 medium-risk words detected. Consider rephrasing these."
],
"processing_time_ms": 4
},
"balance": 99
}
{
"status": true,
"data": {
"spam_score": 0,
"risk_level": "Safe",
"total_spam_triggers": 0,
"detected_triggers": [],
"word_count": 12,
"recommendations": [
"Your email has a spam score of 0%. Consider reviewing the highlighted terms."
],
"processing_time_ms": 3
},
"balance": 98
}
{
"status": false,
"error": "At least one of subject or content is required"
}
{
"status": false,
"error": "Insufficient spam checker credits"
}
