Lookup-Beispiele

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

Authentifizierung

Senden Sie Ihren API-Schlüssel als Bearer-Token bei jedem Lookup. Schlüssel erstellen Sie in der Konsole unter Keys. Schlüssel beginnen mit te_live_ (Produktion) oder te_test_ (Sandbox). Browser-Sitzungscookies authentifizieren nur die Konsole — nicht /v1/ip-Lookups.

Authorization: Bearer te_live_…

Ratenlimits und Kontingent

Zwei Limits gelten: ein kurzfristiges Requests-pro-Sekunde Fair-Use-Limit je Plan und ein monatliches Lookup-Kontingent (täglich × 30, UTC). REST und MCP teilen einen Zähler. Bei RPS-Limit kurz warten und erneut versuchen. Ist das Monatskontingent auf Free erschöpft, stoppen Anfragen bis zum nächsten UTC-Monat; bezahlte Pläne können Overage erlauben.

Weiches RPS je Plan (ungefähr): Free 10 · Lite 25 · Starter 50 · Pro 100 · Business 200 · Scale 500. Tägliche Kontingente siehe Pricing.

Fehler

Fehler nutzen application/problem+json mit mindestens title und status. Häufige Fälle:

  • 401 — Fehlender oder ungültiger API-Schlüssel. Authorization-Header prüfen.
  • 429 — Zu viele Anfragen in kurzer Zeit. Retry-After beachten (oft 1 Sekunde) und backoffen.
  • 429 — Monatskontingent erschöpft. Upgraden, bis zum nächsten UTC-Monat warten oder Volumen senken. X-Quota-Remaining kann 0 sein.
  • 400 / 404 — Ungültige IP oder Pfad. Anfrage korrigieren; nicht blind erneut versuchen.
  • 5xx — Vorübergehendes Problem. Mit exponentiellem Backoff erneut versuchen; unklare Privacy als unbekannt behandeln, wenn sofort entschieden werden muss.

Beispiel Problem-Body

{
  "title": "Monthly quota exceeded",
  "status": 429,
  "detail": "Upgrade plan or wait for next UTC month"
}

Antwortform

Verschachtelte Lookup-Antwort mit location, network, Tri-State-Privacy, risk, fraud und meta.

{
  "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",
    "reasons": ["datacenter"]
  },
  "location": {
    "countryCode": "US",
    "city": "Ashburn"
  },
  "meta": {
    "cacheHit": true,
    "partial": false,
    "confidence": 85
  }
}

Teilergebnisse und Vertrauen

Nutzen Sie meta.partial und meta.confidence zusammen mit Tri-State-Privacy (true / false / null), um die Durchsetzungsstärke zu wählen.

meta.partial

Bei true hat der Lookup nicht genug Evidenz gesammelt, um jedes Privacy-Feld als geklärt zu behandeln. Scores und Flags werden trotzdem geliefert — bevorzugen Sie weiche Maßnahmen (Challenge, Review oder Log-and-Allow) statt harter Blocks, sofern andere Signale nicht übereinstimmen. Bei false war der Privacy-Kern ausreichend vollständig.

meta.confidence

Gesamtvertrauen in diese Antwort, 0–100 (höher ist stärker). Grobe Bänder: 80+ hoch — bei klaren Privacy-Flags handeln; 55–79 moderat — mit eigenem Kontext kombinieren; unter 55 begrenzt — unbekannte Privacy als unbekannt behandeln, nicht als sicher. Confidence sinkt bei meta.partial true, offenen Schlüsselfeldern oder dünner Evidenz.

risk.reasons und fraud.reasons

Kurze Tags, die erklären, warum ein Score angehoben wurde. Für Logging, Allowlists und Regeltuning — nicht als alleinige Deny-Liste.

  • vpn, proxy, tor, residential_proxy — ein passendes Privacy-Flag hat zum Risiko beigetragen.
  • datacenter, hosting_asn — die Adresse gehört zu Hosting- oder Rechenzentrums-Infrastruktur.
  • high_network_abuse, elevated_network_abuse — beprobter Traffic in diesem Netz zeigt erhöhte Anonymisierer-Nutzung.
  • anonymizer — das abgeleitete Anonymizer-Flag hat zum Fraud-Score beigetragen.
  • high_geo_risk — der Geo-Kontext erhöht Checkout- oder Fraud-Risiko.
  • ml_anonymizer — wahrscheinliche Maskierung, wenn Privacy nicht vollständig bestätigt ist; mit meta.partial und confidence kombinieren.
  • feedback_abuse — frühere Operator-Meldungen haben dieses Netz markiert.

CGNAT / Mobil

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

Webhooks

Konfigurieren Sie eine HTTPS-Webhook-URL in den Einstellungen, um Änderungsbenachrichtigungen zu erhalten. Jede Zustellung ist ein POST mit JSON-Body und signierten Headern.

Ziel

Webhook-URL in den Einstellungen setzen. Es werden nur HTTPS-Endpunkte akzeptiert.

Events

  • quota.threshold — monatliche Nutzung überschreitet 80 % oder 100 %.
  • watch.privacy_changed — Privacy-Flags oder primaryType einer beobachteten IP haben sich geändert.
  • watch.risk_changed — Risk-Score über Ihre Schwelle oder Risk-Level-Bandwechsel.
  • watch.network_changed — ASN, Organisation oder Netzwerkidentität für ein beobachtetes Ziel geändert.
  • watch.location_changed — Ländercode für eine beobachtete IP geändert.

Header

Jede Zustellung enthält Content-Type: application/json plus:

  • X-TraceExit-Event-Id — eindeutige ID dieser Zustellung (entspricht eventId im Body).
  • X-TraceExit-Signature — sha256=<hex> HMAC der Payload.
  • X-TraceExit-Signature-Timestamp — Unix-Sekunden für die Signatur.

Signaturen prüfen

Berechnen Sie HMAC-SHA256 von {timestamp}.{rawBody} mit Ihrem Signing-Secret (UTF-8), wobei timestamp X-TraceExit-Signature-Timestamp und rawBody der exakte Request-Body ist. Vergleichen mit X-TraceExit-Signature (sha256=<hex>). Anfragen ablehnen, wenn der Timestamp mehr als 5 Minuten von Ihrer Uhr abweicht.

Beispiel: watch.risk_changed

{
  "event": "watch.risk_changed",
  "eventId": "550e8400-e29b-41d4-a716-446655440000",
  "occurredAt": "2026-07-27T12:00:00Z",
  "organizationId": 42,
  "watch": {
    "id": 7,
    "label": "Login gateway",
    "targetType": "ip",
    "targetValue": "203.0.113.10"
  },
  "subject": {
    "ip": "203.0.113.10",
    "ipVersion": 4
  },
  "changes": [
    {
      "field": "risk.score",
      "previous": 25,
      "current": 72
    },
    {
      "field": "risk.level",
      "previous": "low",
      "current": "high"
    }
  ]
}

Zustellungen sind at-least-once. Nutzen Sie eventId zur Deduplizierung auf Ihrer Seite.

Signing-Secret in den Einstellungen rotieren. Das neue Secret wird einmal angezeigt — vor Verlassen der Seite speichern.

API- & MCP-Dokumentation — Trace Exit