canonical: https://jentic.com/apis/abuseipdb.com/abuseipdb-api

# AbuseIPDB API

Jentic publishes the only available OpenAPI specification for AbuseIPDB API, keeping it validated and agent-ready. AbuseIPDB is a community-driven database of IP addresses reported for malicious activity such as brute-force attacks, scanners, and spam. The v2 API exposes seven endpoints covering single-IP and CIDR-block lookups, full report histories, blacklist downloads, single and bulk abuse reports, and self-clearing of submitted reports. Authentication is a Key header tied to a free or paid AbuseIPDB account, and responses include a 0-100 abuse confidence score that fits naturally into firewall, SIEM, and triage workflows.

## For AI agents

Score IP addresses for abusive behaviour, pull abuse reports, download blacklists, and submit abuse reports across 7 AbuseIPDB v2 endpoints authenticated by a Key header.

## Scope

Does not handle malware sample analysis, URL reputation, or DNS data - use for IP abuse scoring, reporting, and blacklist retrieval only.

## Capabilities

- Score a single IP for abusive behaviour with a 0-100 confidence value via /check
- Pull a paginated history of abuse reports for an IP via /reports
- Download the blacklist of the most-reported IPs as JSON or plaintext via /blacklist
- Submit an abuse report against an IP with a category and comment via /report
- Submit bulk abuse reports as a CSV upload via /bulk-report
- Check an entire CIDR block for abuse reports via /check-block
- Clear your own submitted reports for an IP via /clear-address

## Use cases

### Firewall blocklist refresh

A scheduled job calls GET /blacklist with a confidenceMinimum threshold to download the top reported IPs and pushes them into a perimeter firewall blocklist. Combine with a daily diff so old, decayed reports drop off and only currently active offenders are blocked.

Example prompt: GET /blacklist with confidenceMinimum=90&limit=10000, parse the JSON, and push each ipAddress into the firewall deny list

### SSH brute-force reporting

A fail2ban-style job parses sshd auth logs, detects repeat offenders, and calls POST /report with categories=18,22 and a comment summarising the attempt. This contributes to the AbuseIPDB community feed and gets the IP scored for everyone else.

Example prompt: POST /report with ip=<offender>, categories='18,22', comment='SSH brute force on host X' for each detected offender

### Pre-login risk score

Before allowing a login from an unfamiliar IP, an authentication service calls GET /check with verbose=true and uses the abuseConfidenceScore alongside other signals to decide whether to challenge or block. Returns within a few hundred milliseconds and caches well.

Example prompt: GET /check with ipAddress=<login-ip>&verbose=true; if abuseConfidenceScore >= 75 then require MFA challenge

### AI agent IOC enrichment via Jentic

A SOC agent enriching IOCs from an EDR queue calls AbuseIPDB through Jentic to attach abuse score and report counts to each suspicious IP. The Key header is held by Jentic, so the agent never sees the raw credential.

Example prompt: For each IP from the EDR feed, GET /check with ipAddress=<ip>&maxAgeInDays=90 and append abuseConfidenceScore and totalReports to the IOC record

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /check | Get the abuse confidence score and report summary for an IP |
| GET | /reports | Paginated abuse-report history for an IP |
| GET | /blacklist | Download the most-reported IPs above a confidence threshold |
| POST | /report | Submit an abuse report against an IP |
| POST | /bulk-report | Submit bulk abuse reports via CSV |
| GET | /check-block | Check a CIDR block for abuse reports |
| DELETE | /clear-address | Clear your own reports for an IP |

## Key resources

- **Check** — Score and look up a single IP via GET /check
- **Reports** — Pull full abuse-report history for an IP via GET /reports
- **Blacklist** — Download the most-reported IPs above a confidence threshold via GET /blacklist
- **Report** — Submit single or bulk abuse reports via POST /report and POST /bulk-report
- **Check Block** — Score an entire CIDR block via GET /check-block
- **Clear Address** — Remove your own reports for an IP via DELETE /clear-address

## Why Jentic

- **Setup:** Wiring the AbuseIPDB API by hand means attaching the Key header on every call and juggling read, report, and blacklist endpoints yourself. Through Jentic you install once, import the AbuseIPDB API from the API Directory, store the Key once, and your agent calls it.
- **Permission scoping:** These endpoints take the target IP in the query or request body rather than a resource id in the URL, so limit the agent to the operations it needs, such as checking an IP's abuse score and reading the blacklist. You choose the operations it may call, so reporting an IP or clearing an address is not included unless you add it.
- **Credential handling:** Your AbuseIPDB Key is stored once, encrypted, by your own Jentic One instance and injected as the Key header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'check ip abuse score' or 'download ip blacklist', and Jentic returns the matching AbuseIPDB operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **MalwareBazaar** — abuse.ch repository for malware sample lookup, retrieval, and submission
- **URLhaus** — abuse.ch feed of malicious URLs used for malware distribution
- **Shodan** — Search engine for internet-exposed services and infrastructure

## FAQ

### Why is there no official OpenAPI spec for AbuseIPDB API?

AbuseIPDB documents the API in HTML at docs.abuseipdb.com but does not publish a structured OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call AbuseIPDB API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the AbuseIPDB API use?

A Key header on every request, tied to a free or paid AbuseIPDB account. The Accept: application/json header is also required for JSON responses. Through Jentic the Key is stored encrypted in the vault and injected at execution time.

### Can I report an abusive IP with this API?

Yes. POST /report accepts the IP, a comma-separated list of category IDs (e.g. 18,22 for SSH brute force), and an optional comment. Use POST /bulk-report with a CSV payload to submit many reports at once.

### What are the rate limits for the AbuseIPDB API?

Free accounts get 1,000 checks and 100 reports per day; paid plans (Basic Subscriber, Premium) raise these to tens of thousands per day. Limits are not encoded in the spec - the response includes X-RateLimit headers showing remaining quota.

### How do I score an IP through Jentic?

Search Jentic for 'check ip abuse score', load GET /check on api.abuseipdb.com/api/v2, then execute with ipAddress and maxAgeInDays. Install with pip install jentic and use await client.search, load, execute.

### Is the AbuseIPDB API free?

Yes, with a 1,000 check/day free tier. Paid plans (Basic Subscriber, Premium) raise daily quotas, add the bulk-report endpoint at higher volume, and unlock larger blacklist downloads.

### Can I limit what my agent is allowed to do with the AbuseIPDB API?

Yes. Because you run Jentic One yourself, your own rules decide which of the seven AbuseIPDB operations your agent may call and which credentials it may use. You can allow only the read operations it needs, such as scoring an IP through GET /check, checking a CIDR block through GET /check-block, and reading the blacklist through GET /blacklist, while leaving out write operations. That means submitting a report through POST /report or /bulk-report and removing your own reports through DELETE /clear-address stay off limits unless you explicitly add them.
