> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dojah.io/llms.txt
> Use this file to discover all available pages before exploring further.

# IP Screening

> Submit an IP address to receive a risk profile — blacklist score, geolocation, and proxy or VPN detection for fraud and access decisions.

<div className="dj-endpoint">
  <span className={`dj-method dj-method-get`}>GET</span>
  <code>/api/v1/fraud/ip</code>
</div>

Submit an IP address and get back a risk profile: blacklist score, geolocation, and proxy, VPN or Tor detection for fraud and access decisions.

## Headers

| Header          | Required | Description                                         |
| --------------- | -------- | --------------------------------------------------- |
| `Authorization` | Yes      | Your app's secret key, sent as-is — *not* `Bearer`. |
| `AppId`         | Yes      | The App ID from your dashboard.                     |

## Query parameters

| Parameter    | Type   | Required | Description                              |
| ------------ | ------ | -------- | ---------------------------------------- |
| `ip_address` | string | Yes      | The IP address to screen (IPv4 or IPv6). |

## Response

Returns an `entity` wrapping a `report` — the `blacklists` summary, geolocation `information`, an `anonymity` breakdown (proxy / web-proxy / VPN / hosting / Tor) and an overall `risk_score` — plus a `success` flag.

## Errors

| Code  | Meaning                                                                                       |
| ----- | --------------------------------------------------------------------------------------------- |
| `400` | Bad request — a required parameter is missing or malformed.                                   |
| `401` | Unauthorized — check your key and `AppId` (no `Bearer` prefix).                               |
| `402` | Insufficient wallet balance. [Fund your wallet](/api-reference/core-concepts/wallet-billing). |
| `404` | No record found for the supplied identifier.                                                  |
| `429` | Too many requests — back off and retry.                                                       |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    "https://api.dojah.io/api/v1/fraud/ip?ip_address=2.58.56.101" \
    -H "Authorization: {{secret_key}}" \
    -H "AppId: {{app_id}}"
  ```

  ```js Node.js theme={null}
  const params = new URLSearchParams({
    "ip_address": "2.58.56.101",
  });

  const url = "https://api.dojah.io/api/v1/fraud/ip?" + params;
  const res = await fetch(url, {
    headers: {
      Authorization: process.env.DOJAH_SECRET_KEY,
      AppId: process.env.DOJAH_APP_ID,
    },
  });
  const data = await res.json();
  ```

  ```python Python theme={null}
  import os, requests

  res = requests.get(
      "https://api.dojah.io/api/v1/fraud/ip",
      headers={
          "Authorization": os.environ["DOJAH_SECRET_KEY"],
          "AppId": os.environ["DOJAH_APP_ID"],
      },
      params={
          "ip_address": "2.58.56.101",
      },
  )
  data = res.json()
  ```
</RequestExample>

<ResponseExample>
  ```json GET /api/v1/fraud/ip theme={null}
  {
    "entity": {
      "report": {
        "ip": "2.58.56.101",
        "blacklists": {
          "detections": 11,
          "engines_count": 85,
          "detection_rate": "13%",
          "scantime": "0.92"
        },
        "information": {
          "reverse_dns": "powered.by.rdp.sh",
          "continent_code": "EU",
          "continent_name": "Europe",
          "country_code": "DE",
          "country_name": "Germany",
          "country_currency": "EUR",
          "country_calling_code": "49",
          "region_name": "Hamburg",
          "city_name": "Hamburg",
          "latitude": 53.575321197509766,
          "longitude": 10.015339851379395,
          "isp": "1337 Services GmbH",
          "asn": "AS210558"
        },
        "anonymity": {
          "is_proxy": false,
          "is_webproxy": false,
          "is_vpn": false,
          "is_hosting": false,
          "is_tor": true
        },
        "risk_score": {
          "result": 100
        }
      },
      "success": true
    }
  }
  ```
</ResponseExample>
