$ whoami
allow. challenge. block.
monapi is a self-hosted decision API: IP, domain or email in, explainable decision out — with score, signals and evidence. No US service, no third-country transfer, no black box.
monapi — engine response
$ curl -H 'X-API-Key: …' api.monapi.io/v1/check/ip/185.220.101.1?profile=checkout
{
"decision": "challenge",
"score": 40,
"confidence": 0.7,
"profile": "checkout",
"signals": [
{
"id": "feed:tor_exits:0",
"category": "anonymizer",
"weight": 40,
"source": "tor_exits",
"severity": "high"
}
],
"enrichment": {
"asn": 60729,
"asn_organization": "TORSERVERS-NET",
"country_iso": "DE",
"hostname": "berlin01.tor-exit.artikel10.org"
},
"timing_ms": { "total": 96 }
}allow
score < 30 — clean signals, normal traffic
challenge
30–79 — uncertain: soft-block, captcha, throttle
block
≥ 80 — clear-cut: disposable, known abuse, botnet
Thresholds and weights are policy, not physics — configurable per profile.
$ cat features.txt
feeds
firehol L1-L3, tor exits, disposable domains — refreshed every 15 min
ipv4+ipv6
both protocols, no silent allow fallback
enrichment
ASN, organization, country, rDNS — local MMDB, no account
profiles
?profile=checkout — thresholds and weights per surface
email checks
syntax, MX, disposable, role accounts, typos — no SMTP probing
self-hosted
SQLite + in-memory trie, zero external calls at request time
$ grep gdpr README.md
IP addresses are personal data.
Every request to IPQualityScore, Sift or Castle is a third-country transfer — with SCC paperwork and a Transfer Impact Assessment. monapi runs on your infrastructure: feeds and the GeoIP database are held locally, nothing leaves at request time. The topic is settled, not managed.
deploy
$ git clone github.com/dplusf/monapi-engine && cd monapi-engine
$ docker compose up --build
# api on :8007, site on :3007, worker syncs feeds, geoip refreshed daily
$ cat OPERATOR
Built and operated by projektsued GmbH in Kirchheim near Munich, Germany. We build and run systems like this for others, too: monitoring, anti-abuse, platform operations.