cURL

curl https://api.traceexit.com/v1/ip/203.0.113.10 \
  -H "Authorization: Bearer te_live_…" \
  -H "Accept: application/json"

Node

const res = await fetch("https://api.traceexit.com/v1/ip/203.0.113.10", {
  headers: { Authorization: "Bearer " + process.env.TRACE_EXIT_API_KEY },
});
const dto = await res.json();

MCP (Cursor)

{
  "mcpServers": {
    "traceexit": {
      "command": "npx",
      "args": ["-y", "@traceexit/mcp"],
      "env": {
        "TRACE_EXIT_API_KEY": "te_live_…",
        "TRACE_EXIT_BASE_URL": "https://api.traceexit.com"
      }
    }
  }
}

Tools: lookup_ip, check_privacy, check_fraud. Dieselben Keys und Quotas wie REST. Connect MCP.

Antwortform

Verschachteltes IpLookupDto — kein öffentliches sources[]. ?legacy=true für flache SA-kompatible Felder.

{
  "ip": "203.0.113.10",
  "ipVersion": 4,
  "privacy": {
    "vpn": false,
    "proxy": false,
    "tor": false,
    "datacenter": true,
    "residentialProxy": false,
    "anonymizer": false
  },
  "risk": {
    "score": 42,
    "level": "medium"
  },
  "location": {
    "countryCode": "US",
    "city": "Ashburn"
  },
  "meta": {
    "cacheHit": true
  }
}

CGNAT / Mobil

Geteilte Carrier-NATs können rauschen. ASN-Allowlists für bekannte Mobilbereiche bevorzugen; siehe Enterprise-Guidance bei Skalierung.

API- & MCP-Dokumentation — Trace Exit