(Scroll down for docs)
If you are looking for a direct way to consume OOPSpam, try OOPSpam Dashboard.
A better looking documentation is available here: https://oopspam.com/docs
OOPSpam Anti-Spam API provides high accuracy based on different inputs:
Spam score
Machine Learning models
Multiple blocklisted IPs lists
Language outlier detection algorithm
Advanced content analysis
Spam word pattern detection
Country Restrictions
…and many custom rules.
The value we bring:
High accuracy
Privacy-friendly (GDPR compliant)
Based on the latest academic research
Use one API key with unlimited websites
We also have a WordPress plugin: https://wordpress.org/plugins/oopspam-anti-spam/.
Visit our website for more information: https://www.oopspam.com
The easiest way to get started is via OOPSpam’s RapidAPI page where you can get familiar with the endpoint as well as send requests without any configuration before you start integrating the API.
If you have a question or something is unclear, please do not hesitate to reach out to via contact@oopspam.com or the live chat on the OOSpam Anti-Spam API website. We’d be happy to help you.
Flag a content spam solely based on Score (aka Spam Score). OOPSpam provides a spam score from 0 to 6. We recommend assuming Spam Score 3 or higher to be spam. While we recommend finding the most suitable score to fit your case, from our studies we learned that the ideal threshold is 3. Here is the rough scheme:
0 - not spam
1 - not spam
2 - could be spam. Most cases, not spam
3 - spam
4 - spam
5 - spam
6 - spam
The /v1/spamdetection
endpoint analyses given parameters and returns overall spam score including detailed detection results in structured JSON.
{
"senderIP": "38.125.233.253",
"email": "testing@example.com",
"content": "Dear Agent, We are a manufacturing company which specializes in supplying Aluminum Rod with Zinc Alloy Rod to customers worldwide, based in Japan, Asia.We have been unable to follow up payments effectively for transactions with debtor customers in your country due to our distant locations, thus our reason for requesting for your services representation.",
"allowedLanguages" : ["en"],
"allowedCountries" : ["it","us"],
"checkForLength": true
}
senderIP
: (optional) is the IP of the original content sender. This field value will be looked up in multiple blocklisted IPs lists that previously detected sending spam. Although senderIP
is an optional field, we recommend sending it. Don’t send 127.0.0.1, it is by default blocked.
Important: This field should include spammer’s IP, in other words, whoever submitted regarding content to you, not your IP.
email
: (optional) is the email of the original content sender. This field value will be looked up in multiple blocklisted email lists that previously detected sending spam. Although email
is an optional field, we recommend sending it.
content
: (required) is a content you would like to be analyzed.
allowedLanguages
: (optional) Block content based on a content language. Let us know in what language(s) you expect the content to be?
Pass two-letter language(s) code to the parameter as an array.
checkForLength
: (optional) Is a boolean value. Whenever you send content to the API, it checks if it is more than 20 characters long. In case the content is shorter than 20 characters than it is considered as spam (Spam Score: 5) and returns isContentTooShort: true
.
Use checkForLength: false
to disable this feature. This is recommended only for live chat systems or where you fill like no need for a length check.
allowedCountries
: (optional) Allow content only from a certain country or countries. All you need to do is pass the two-letter country code as an array. Reminder: senderIP
is required for this to work.
Note on allowedLanguages
: If you know that you may receive content in a few languages (or single language), say English, Vietnamese, Turkish then your allowedLanguages parameter should have JSON array with multi-languages [“en”,“vi”, “tr”]:
{
"senderIP": "38.125.233.253",
"email": "testing@example.com",
"content": "Dear Agent, We are a manufacturing company which specializes in supplying Aluminum Rod with Zinc Alloy Rod to customers worldwide, based in Japan, Asia.We have been unable to follow up payments effectively for transactions with debtor customers in your country due to our distant locations, thus our reason for requesting for your services representation.",
"allowedLanguages" : ["en","vi", "tr"],
"allowedCountries" : ["it","us"]
}
Following languages are supported:
Language | ISO 639-1 code | Language | ISO 639-1 code |
---|---|---|---|
Afrikaans | af | Japanese | ja |
Albanian | sq | Korean | ko |
Arabic | ar | Latin | la |
Basque | eu | Latvian | lv |
Belarusian | be | Lithuanian | lt |
Bengali | bn | Malay | ms |
Bokmal | nb | Norwegian | no |
Bulgarian | bg | Nynorsk | nn |
Catalan | ca | Persian | fa |
Chinese | zh | Polish | pl |
Croatian | hr | Portuguese | pt |
Czech | cs | Punjabi | pa |
Danish | da | Romanian | ro |
Dutch | nl | Russian | ru |
English | en | Slovak | sk |
Estonian | et | Slovene | sl |
Finnish | fi | Somali | so |
French | fr | Spanish | es |
German | de | Swedish | sv |
Greek | el | Tagalog | tl |
Gujarati | gu | Tamil | ta |
Hebrew | he | Telugu | te |
Hindi | hi | Thai | th |
Hungarian | hu | Turkish | tr |
Icelandic | is | Urdu | ur |
Indonesian | id | Vietnamese | vi |
Irish | ga | Welsh | cy |
Italian | it |
You can learn more about allowedLanguages
paramater in this blog post.
{
"Score": 6,
"Details": {
"isIPBlocked": true,
"isEmailBlocked": true,
"langMatch": true,
"isContentSpam": "spam",
"numberOfSpamWords": 1,
"isContentTooShort" : true,
"countryMatch" : true
}
}
In case of successful request, following structured JSON will be responded:
Score
: An number between 0-6 representing an overall spam score based on passed parameters. The higher this value, the more likely to be spam. A value 3 or above can be considered spam.Details
: A dictionary containing the result of different analyses. The dictionary contains keys: "isIPBlocked"
, "langMatch"
, "isContentSpam"
and "numberOfSpamWords"
.
isIPBlocked
: A boolean value representing whether the value of parameter senderIP
IP is blocklisted.isEmailBlocked
: A boolean value representing whether the value of parameter email
is blocked.true
which means the IP is blocklisted, then it is safe to assume that you are dealing with a spammer.langMatch
: A boolean value representing whether the value of parameter allowedLanguages
matches with the detected language by Language Detection algorithm.isContentSpam
: A string containing the result of a Machine Learning algorithm on whether the content is a spam
or notspam
.numberOfSpamWords
: A number representing a number of spam words within the content.isContentTooShort
: A boolean value representing whether the value of content
is too short to consider a meaningful sentence. Any content that is too short will be considered as spam.countryMatch
: A boolean value representing whether an IP (the value of senderIP
) originates from one of the countries you passed through allowedCountries
parameter. In case of a mismatch, returns the maximum spam score of 6.A successful request will return HTTP status code 200
. In case you didn’t include necessary headers in your requests such as an API key which you will get status code 401
(Unauthorized) with an explanatory message
as the part of response’s body. Other possible errors can be :
With all (error) cases, you will get a JSON object with an error code
and message
which looks like this:
{
"code":"5740538",
"message":"Invalid JSON format. Please verify and resubmit."
}
senderIP
) only IPv4 is supported. IPv6 will be ignored.Score
parameter value ranges from 0 to 6. A value 3 or above can be considered spam.senderIP
against multiple blocklisted IPs lists until it finds it.senderIP
, they are by default blocked.Please check FAQ section https://www.oopspam.com/#faq.
Questions? Please do not hesitate to contact me via contact@oopspam.com or the live chat on the OOSpam Anti-Spam API website.