Chat with us, powered by LiveChat

API Documentation

Learn how to use our Abuse API with simple examples and detailed explanations.

Introduction

Our API allows you to interact with our service programmatically, you can fetch abuse insight data, validate users and customers, submit reports, manage resources and access your account details.

Use Cases

Most popular use-cases include:

  • Validate users and e-mail addresses
  • Check insight info on ip-addresses
  • Get abuse info and evaluate users or customers
  • Submit abuse reports

Authentication

To authenticate with our API, include your API-Key for every request in the HTTP request header as a Bearer token:

Authentication Example

curl https://api.abusereport.com \
-H "Authorization: Bearer {YOUR_API_KEY}"

If you are logged in, we will automatically insert your API-Key into the placeholder {YOUR_API_KEY}.

You can always access your API-Key from the account page.

Account Information

You can retrieve your account information and current API usage with a simple GET request to our API:

Account Info

curl https://api.abusereport.com \
-H "Authorization: Bearer {YOUR_API_KEY}"

Account Info Response

{
    "success": true,
    "username": "AbuseReport",
    "email_address": "[email protected]",
    "plan": "Business",
    "requests_usage_limit": 50000,
    "requests_usage": 431,
    "requests_remaining": 49569
}

Example Check Request

Here is an example of a simple GET request to our API using the Check endpoint for retrieving abuse insight info:

E-Mail Check Example

curl https://api.abusereport.com/check/[email protected] \
-H "Authorization: Bearer {YOUR_API_KEY}"

E-Mail Check Result

{
    "success": true,
    "has_reports": false,
    "risk_score": 20,
    "inbox": "support",
    "domain": "abusereport.com",
    "tld": "com",
    "reachable": true,
    "disposable": false,
    "mx": {
        "record": true,
        "values": [
            {
                "name": "abusereport.com",
                "type": 15,
                "TTL": 3600,
                "data": "1 aspmx.l.google.com."
            },
            {
                "name": "abusereport.com",
                "type": 15,
                "TTL": 3600,
                "data": "10 alt3.aspmx.l.google.com."
            },
            {
                "name": "abusereport.com",
                "type": 15,
                "TTL": 3600,
                "data": "10 alt4.aspmx.l.google.com."
            },
            {
                "name": "abusereport.com",
                "type": 15,
                "TTL": 3600,
                "data": "5 alt1.aspmx.l.google.com."
            },
            {
                "name": "abusereport.com",
                "type": 15,
                "TTL": 3600,
                "data": "5 alt2.aspmx.l.google.com."
            }
        ]
    },
    "spf": {
        "record": true,
        "value": "v=spf1 include:_spf.google.com -all"
    },
    "dmarc": {
        "record": false,
        "value": null
    },
    "reports": []
}

IP Check Example

curl https://api.abusereport.com/check/8.8.8.8 \
-H "Authorization: Bearer {YOUR_API_KEY}"

IP Check Result

{
    "success": true,
    "ip_address": "8.8.8.8",
    "has_reports": false,
    "risk_score": 40,
    "country": "United States",
    "country_code": "US",
    "state": null,
    "city": "Sunnyvale",
    "zipcode": "95196",
    "organisation": {
        "name": "Google LLC",
        "network": "8.8.8.0 - 8.8.8.255"
    },
    "asn": {
        "name": "Google LLC",
        "asn": 15169,
        "domain": "www.google.com",
        "route": "8.8.8.0/24"
    },
    "abuse_contact": {
        "name": "Google LLC",
        "address": "1600 Amphitheatre Parkway, Mountain View, CA, 94043, US",
        "email": "[email protected]",
        "phone": "+1-650-253-0000"
    },
    "proxy": false,
    "hosting": true,
    "timezone": "America/Los_Angeles",
    "reports": []
}

The Check endpoint accepts any type of email or ip-address and provides you with the latest details.
You don't need to specify the type of value you want to check, it will be automatically validated.
If you strictly want to check for a certain type, you can pass the ?type=email|ip_address as an optional argument.

Get Abuse Reports

To get a list of all your submitted abuse reports, you can send a GET request to the following API endpoint:

Get Reports Example

curl https://api.abusereport.com/reports \
-H "Authorization: Bearer {YOUR_API_KEY}"

Submit Abuse Report

You can create a new abuse report by sending a POST request with the report details to our API:

Request Body

POST https://api.abusereport.com/reports
Authorization: Bearer {YOUR_API_KEY}
Content-Type: application/json

{
    "report_value": "[email protected]",
    "report_type": "email_address",
    "report_abuse_type": "ddos",
    "comment": "optional"
}

Submit Report Example

curl -X POST https://api.abusereport.com/reports \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{' \
-d '  "report_value": "[email protected]",' \
-d '  "report_type": "email_address",' \
-d '  "report_abuse_type": "ddos",' \
-d '  "comment": "optional"' \
-d '}'

Submit Report Response

{
    "success": true,
    "report_id": "report_id"
}

Delete Report

You can delete specific abuse reports by sending a DELETE request with the report ID to our API. This action cannot be undone:

Request Body

DELETE https://api.abusereport.com/reports
Authorization: Bearer {YOUR_API_KEY}
Content-Type: application/json

{
    "id": "report_id"
}

Delete Report Example

curl -X DELETE https://api.abusereport.com/reports \
-H "Authorization: Bearer {YOUR_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"id": "report_id"}'

Delete Report Response

{
    "success": true,
    "message": "Report successfully deleted",
    "report_id": 123456
}

Response

API responses are always returned in JSON format, depending on the value which was checked, the returned result details can differ. For example, the check result for an e-mail address won't contain any ip-address related info, such as geo-location or ASN. Below are examples for both requests:

HTTP Response Codes

Our API always returns the corresponding HTTP status code for the response, if there is an error, error details are additionally returned in the JSON response, here are some common HTTP response codes you may encounter:

  • 200 OK: The request was successful.
  • 400 Bad Request: The request was invalid or was missing required parameters.
  • 429 Too Many Requests: You have reached your monthly request limit, you need to upgrade your plan.
  • 403 Unauthorized: The provided API-Key is invalid or user does not have permissions for the desired action.
  • 404 Not Found: The requested API endpoint could not be found.
  • 500 Internal Server Error: An error occurred while processing your request on our end.

Limits

Your monthly request limit depends on your current plan, you can see your remaining requests on your account page.
The limit resets at the first day on the upcoming month, there are no additional rate-limits or pagination on our API.
Requests to none data or report related endpoints, for example, account details, won't count against your quota.