Utility
Experimental APIs crafted for niche use cases like blacklist monitoring, validation, moderation, and geolocation.
Experimental APIs designed for niche automation and trust-and-safety workflows. Endpoints may change as feedback rolls in, so monitor integration logs closely.
| Method | Endpoint | Description |
|---|---|---|
| GET | /v1/experimental/blacklist.json | Search Blacklists |
| POST | /v1/experimental/validation | Validate Email |
| POST | /v1/experimental/jesses_ruleset | Validate Email (Jesse's Ruleset) |
| POST | /v1/experimental/content_moderation | Moderate Content |
| POST | /v1/experimental/gender | Guess Gender |
| GET | /v1/experimental/geolocation | Geolocate IP Address |
Search Blacklists
Look up a domain or IPv4 address against reputation providers so you can flag deliverability issues early.
Input
- domain · string
- Domain to inspect (e.g., `example.com`).
- ip_address · string
- IPv4 address to inspect.
cURL
bashcurl -L -u publishableKey:secretKey \
-X GET "https://app.bentonow.com/api/v1/experimental/blacklist?site_uuid=ExampleID1234&domain=test.com&ip=1.1.1.1" \
-H "Accept: application/json"
JavaScript
javascriptconst axios = require('axios');
const config = {
method: 'get',
url: 'https://app.bentonow.com/api/v1/experimental/blacklist',
params: {
site_uuid: 'ExampleID1234',
domain: 'test.com',
ip: '1.1.1.1'
},
auth: {
username: 'publishableKey',
password: 'secretKey'
},
headers: {
'Accept': 'application/json'
}
};
axios(config)
.then((response) => console.log(JSON.stringify(response.data, null, 2)))
.catch((error) => console.error(error));
Laravel
phpuse Bentonow\BentoLaravel\Facades\Bento;
use Bentonow\BentoLaravel\DataTransferObjects\BlacklistStatusData;
$data = new BlacklistStatusData(domain: null, ipAddress: "1.1.1.1");
return Bento::getBlacklistStatus($data)->json();
Python
pythonfrom bento_api import BentoAPI
import os
api = BentoAPI(
site_uuid=os.getenv('BENTO_SITE_UUID'),
username=os.getenv('BENTO_PUBLISHABLE_KEY'),
password=os.getenv('BENTO_SECRET_KEY')
)
blacklist_check = api.check_blacklist(domain="example.com")
Response
Each provider flag is `true` when the domain/IP is listed.
Response body
json{
"data": [
{
"query": "example.com",
"description": "If any provider returns true you have a deliverability problem.",
"results": {
"just_registered": true,
"spamhaus": true,
"nordspam": false,
"spfbl": false,
"sorbs": false,
"abusix": false
}
}
]
}
Validate Email
Check an email address against spam heuristics, MX records, and optional context.
Required attributes
- email · string
- Email address to validate.
Optional attributes
- name · string
- Contact name for additional heuristics.
- user_agent · string
- User agent string captured at signup.
- ip · string
- User IPv4 address. Non–Tier-1 traffic will fail validation.
cURL
bashcurl -L -u publishableKey:secretKey \
-X POST "https://app.bentonow.com/api/v1/experimental/validation?site_uuid=ExampleID1234" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw '{
"email": "person@example.com",
"user_agent": "Mozilla/5.0"
}'
JavaScript
javascriptconst axios = require('axios');
let data = {
email: 'user@example.com',
ip: '1.1.1.1'
};
let config = {
method: 'post',
url: 'https://app.bentonow.com/api/v1/experimental/validation',
params: { site_uuid: 'ExampleID1234' },
auth: {
username: 'publishableKey',
password: 'secretKey'
},
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
data: JSON.stringify(data)
};
axios(config)
.then((response) => console.log(JSON.stringify(response.data, null, 2)))
.catch((error) => console.error(error));
Response
The API returns a `valid` boolean plus additional scoring metadata.
Response body
json{
"valid": false,
"reasons": ["temporary_bounce", "free_provider"],
"score": 0.42
}
Validate Email (Jesse's Ruleset)
Run inbox validation through the stricter Bento rules Jesse maintains for production systems.
Required attributes
- email · string
- Email address to evaluate.
Optional attributes
- block_free_providers · boolean
- Reject mail from free-mail domains when `true`.
- wiggleroom · boolean
- Relax a few opinionated checks when `true`.
cURL
bashcurl -L -u publishableKey:secretKey \
-X POST "https://app.bentonow.com/api/v1/experimental/jesses_ruleset?site_uuid=ExampleID1234" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw '{
"email": "person@example.com",
"block_free_providers": true
}'
Response
Returns the validation outcome mirroring Bento's internal checks.
Response body
json{
"valid": false,
"reasons": ["free_provider"],
"block_free_providers": true
}
Moderate Content
Score short-form text for unsafe content and optionally generate a sanitized version.
Required attributes
- content · string
- Text you want to moderate.
cURL
bashcurl -L -u publishableKey:secretKey \
-X POST "https://app.bentonow.com/api/v1/experimental/content_moderation?site_uuid=ExampleID1234" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw '{
"content": "<script>alert('xss')</script>"
}'
Response
Returns a `valid` flag, a list of reasons, and a safe version of the content.
Response body
json{
"valid": false,
"reasons": ["xss", "script_tag"],
"safe_original_content": "alert('xss')"
}
Guess Gender
Approximate a subscriber's gender for personalization using US Census data.
Required attributes
- name · string
- Full name or first name to evaluate.
cURL
bashcurl -L -u publishableKey:secretKey \
-X POST "https://app.bentonow.com/api/v1/experimental/gender?site_uuid=ExampleID1234" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw '{
"name": "Alex Johnson"
}'
Response
Returns the gender guess plus a confidence score.
Response body
json{
"gender": "female",
"confidence": 0.71
}
Geolocate IP Address
Resolve an IPv4 address into geographic metadata for downstream analytics.
Required attributes
- ip · string
- IPv4 address to geolocate.
cURL
bashcurl -L -u publishableKey:secretKey \
-X GET "https://app.bentonow.com/api/v1/experimental/geolocation?site_uuid=ExampleID1234&ip=1.1.1.1" \
-H "Accept: application/json"
Response
Returns IP metadata like country, city, and coordinates.
Response body
json{
"ip": "1.1.1.1",
"country_name": "United States",
"region_name": "California",
"city_name": "Los Angeles",
"latitude": 34.0522,
"longitude": -118.2437
}
Need the original Markdown? Open raw file