# AbuseIPDB endpoints (Admin API)

> 4 FeatherPanel Admin API endpoints from admin/abuseipdb.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Source: https://featherpanel.com/docs/api/reference/admin/abuseipdb/

Defined in [`backend/app/routes/admin/abuseipdb.php`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/abuseipdb.php). Authentication used here: **Admin**. Read [Authentication](https://featherpanel.com/docs/api/authentication/) for how to send credentials and [Rate limits and errors](https://featherpanel.com/docs/api/rate-limits-and-errors/) for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

## Endpoints

### GET `/api/admin/abuseipdb/status`

- Auth: Admin
- Permission: `admin.users.list`
- Route name: `admin-abuseipdb-status`
- Controller: [`AbuseIPDBController::status`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/AbuseIPDBController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/abuseipdb.php#L25)

**AbuseIPDB integration status** Returns whether AbuseIPDB is enabled and configured (API key presence only, never the key).

```bash
curl -X GET "$PANEL_URL/api/admin/abuseipdb/status" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Status retrieved · `401` Unauthorized · `403` Forbidden

### GET `/api/admin/abuseipdb/categories`

- Auth: Admin
- Permission: `admin.users.list`
- Route name: `admin-abuseipdb-categories`
- Controller: [`AbuseIPDBController::categories`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/AbuseIPDBController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/abuseipdb.php#L36)

**List AbuseIPDB report categories**

```bash
curl -X GET "$PANEL_URL/api/admin/abuseipdb/categories" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Categories retrieved

### GET `/api/admin/abuseipdb/check`

- Auth: Admin
- Permission: `admin.users.list`
- Route name: `admin-abuseipdb-check`
- Controller: [`AbuseIPDBController::check`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/AbuseIPDBController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/abuseipdb.php#L47)

**Check a single IP against AbuseIPDB**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `ip` | query | string | yes |  |
| `max_age_days` | query | integer | no |  |
| `verbose` | query | boolean | no |  |

```bash
curl -X GET "$PANEL_URL/api/admin/abuseipdb/check?ip=$IP" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Check completed · `400` Invalid request or not configured

### POST `/api/admin/abuseipdb/scan`

- Auth: Admin
- Permission: `admin.users.list`
- Route name: `admin-abuseipdb-scan`
- Controller: [`AbuseIPDBController::scan`](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/Controllers/Admin/AbuseIPDBController.php)
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/15b94e9fc9df233123706b47c42728b81e48cb3d/backend/app/routes/admin/abuseipdb.php#L58)

**Scan panel users against AbuseIPDB** Checks unique public first\_ip/last\_ip values for non-deleted users in batches to respect API rate limits.

| Body field | Type | Required | Description |
| --- | --- | --- | --- |
| `offset` | integer | no |  |
| `limit` | integer | no |  |
| `min_score` | integer | no | Override configured minimum confidence score |
| `max_age_days` | integer | no |  |
| `only_flagged` | boolean | no |  |

```bash
curl -X POST "$PANEL_URL/api/admin/abuseipdb/scan" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"offset":0,"limit":0,"min_score":0,"max_age_days":0,"only_flagged":false}'
```

Responses: `200` Scan batch completed · `400` Not configured
