Zum Inhalt springen

API-Dokumentation

Integrieren Sie TraceMapper mit unserer REST API in Ihre Anwendungen. Verfügbar für Pro-Nutzer.

Authentifizierung

Alle API-Anfragen erfordern einen API-Schlüssel, der als "key"-Query-Parameter übergeben wird. Generieren Sie Ihren API-Schlüssel im Dashboard.

Query-Parameter

GET /api/v1/trace?dest=example.com&key=tm_your_api_key

Authorization-Header (empfohlen)

Authorization: Bearer tm_your_api_key

API-Schlüssel laufen nach 1 Jahr ab. Sie können sie im Dashboard neu generieren.

Endpunkte

GET/api/v1/trace

Führen Sie einen Traceroute zu einem Ziel durch und erhalten Sie alle Hops mit Geolokalisierung, ASN, Latenz, Jitter und Paketverlustdaten.

Parameter

ParameterTypErforderlichBeschreibung
keystringerforderlichIhr API-Schlüssel (beginnt mit tm_)
deststringerforderlichZiel-IP-Adresse oder Hostname
maxHopsintegeroptionalMaximale Anzahl Hops (1–64, Standard: 30)
protocolstringoptionalProtokoll: icmp, udp oder tcp (Standard: icmp)

Beispielantwort

{
  "dest": "8.8.8.8",
  "protocol": "icmp",
  "totalHops": 12,
  "hops": [
    {
      "hopNumber": 1,
      "ip": "192.168.1.1",
      "hostname": "router.local",
      "asn": null,
      "asnOrg": null,
      "city": null,
      "country": null,
      "lat": null,
      "lon": null,
      "latencyAvg": 1.2,
      "latencyMin": 0.8,
      "latencyMax": 1.5,
      "jitter": 0.3,
      "packetLoss": 0.0,
      "isTimeout": false
    }
  ]
}

Fehlercodes

401Fehlender oder ungültiger API-Schlüssel
403Kein Pro-Nutzer oder ungültiger Schlüssel
429Ratenlimit überschritten
GET/api/v1/traces

Listen Sie Ihre gespeicherten Traces mit Paginierung auf. Unterstützt Filterung nach Ziel.

ParameterTypBeschreibung
limitintegerErgebnisse pro Seite (1-100, Standard: 20)
offsetintegerAnzahl der zu überspringenden Ergebnisse (Standard: 0)
deststringNach Ziel-IP oder Hostname filtern
GET/api/v1/status

API-Status, verfügbare Quellen und Ratenlimit-Informationen abrufen. Keine Authentifizierung erforderlich.

GET/api/v1/ping

Einen Host anpingen und Latenzstatistiken, Paketverlust und einzelne Roundtrip-Zeiten zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
hoststringerforderlichIP-Adresse oder Hostname zum Anpingen
countintegeroptionalAnzahl der Ping-Pakete (1-20, Standard: 4)

Beispielantwort

{
  "host": "8.8.8.8",
  "resolvedIp": "8.8.8.8",
  "count": 4,
  "sent": 4,
  "received": 4,
  "packetLoss": 0,
  "latency": {
    "min": 1.23,
    "avg": 2.45,
    "max": 3.67,
    "jitter": 0.89
  },
  "rtts": [1.23, 2.45, 3.67, 2.45]
}
GET/api/v1/dns

Eine DNS-Abfrage für eine Domain durchführen und die aufgelösten Einträge mit Abfragezeit zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
domainstringerforderlichDomainname zum Auflösen
typestringoptionalEintragstyp: A, AAAA, MX, NS, CNAME, TXT oder SOA (Standard: A)

Beispielantwort

{
  "domain": "example.com",
  "type": "A",
  "records": [
    { "address": "93.184.216.34", "ttl": 300 }
  ],
  "queryTime": 12.34,
  "server": "system"
}
GET/api/v1/http-check

Eine HTTP(S)-URL prüfen und Statuscode, Antwortzeit, Weiterleitungskette, Header und SSL-Zertifikatdetails zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
urlstringerforderlichZu prüfende URL (https:// wird hinzugefügt, wenn weggelassen)

Beispielantwort

{
  "url": "https://example.com",
  "statusCode": 200,
  "statusText": "OK",
  "responseTime": 145,
  "redirects": [],
  "headers": {
    "content-type": "text/html; charset=UTF-8",
    "server": "nginx"
  },
  "ssl": {
    "valid": true,
    "issuer": "DigiCert Inc",
    "validFrom": "2024-01-01",
    "validTo": "2025-01-01",
    "daysRemaining": 180,
    "protocol": "TLSv1.3",
    "sans": ["example.com", "www.example.com"]
  }
}
GET/api/v1/port-check

Prüfen, ob ein TCP-Port auf einem Host geöffnet ist, und Antwortzeit sowie Dienstname zurückgeben.

Parameter

ParameterTypErforderlichBeschreibung
hoststringerforderlichIP-Adresse oder Hostname zum Prüfen
portintegererforderlichZu prüfende Portnummer (1-65535)
portsstringoptional"common" verwenden, um häufige Ports zu scannen (21, 22, 25, 53, 80, 443, ...)

Beispielantwort

{
  "host": "example.com",
  "port": 443,
  "open": true,
  "responseTime": 23,
  "service": "HTTPS"
}
GET/api/v1/ip-reputation

Die Reputation einer IP-Adresse über DNS-Blacklists und AbuseIPDB prüfen, mit Geolokalisierungsdaten.

Parameter

ParameterTypErforderlichBeschreibung
ipstringerforderlichZu prüfende IPv4- oder IPv6-Adresse

Beispielantwort

{
  "ip": "8.8.8.8",
  "reputation": "clean",
  "score": 0,
  "abuseipdb": {
    "score": 0,
    "totalReports": 12,
    "lastReported": "2025-12-01T10:00:00Z"
  },
  "blacklists": [
    { "name": "Spamhaus ZEN", "listed": false },
    { "name": "SpamCop", "listed": false },
    { "name": "SORBS", "listed": false }
  ],
  "geo": {
    "country": "US",
    "isp": "Google LLC",
    "org": "Google Public DNS",
    "as": "AS15169 Google LLC"
  }
}
GET/api/v1/bgp

BGP-Routing-Informationen für eine IP-Adresse oder ein Präfix abrufen, einschließlich Ursprungs-ASN, AS-Pfade und Upstream-Anbieter.

Parameter

ParameterTypErforderlichBeschreibung
targetstringerforderlichIP-Adresse oder Präfix (z. B. 8.8.8.0/24)

Beispielantwort

{
  "prefix": "8.8.8.0/24",
  "origin": { "asn": 15169, "holder": "Google LLC" },
  "paths": [
    {
      "collector": "rrc00",
      "asPath": [13335, 15169],
      "communities": ["13335:10000"]
    }
  ],
  "pathCount": 245,
  "collectorCount": 24,
  "upstreamAsns": [
    { "asn": 13335, "holder": "Cloudflare Inc", "count": 45 }
  ]
}

Ratenlimits

API-Anfragen sind auf 30 Anfragen pro Minute pro API-Schlüssel begrenzt. Bei Überschreitung erhalten Sie einen 429-Statuscode mit einem Retry-After-Header.

Codebeispiele

cURL

# Mit Authorization-Header
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8"

# Gespeicherte Traces auflisten
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/traces?limit=10"

# Ping
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8&count=4"

# DNS
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/dns?domain=example.com&type=MX"

# HTTP Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/http-check?url=https://example.com"

# Port Check
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/port-check?host=example.com&port=443"

# IP Reputation
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/ip-reputation?ip=8.8.8.8"

# BGP
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/bgp?target=8.8.8.0/24"

JavaScript / Node.js

const API_KEY = "tm_your_api_key";
const headers = { Authorization: `Bearer ${API_KEY}` };

// Traceroute
const trace = await fetch(
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(trace.hops);

// Ping
const ping = await fetch(
  "https://tracemapper.com/api/v1/ping?host=8.8.8.8",
  { headers }
).then(r => r.json());
console.log(ping.latency);

// DNS
const dns = await fetch(
  "https://tracemapper.com/api/v1/dns?domain=example.com&type=A",
  { headers }
).then(r => r.json());
console.log(dns.records);

Python

import requests

headers = {"Authorization": "Bearer tm_your_api_key"}

# Traceroute
r = requests.get(
    "https://tracemapper.com/api/v1/trace",
    params={"dest": "8.8.8.8"},
    headers=headers,
)
print(r.json()["hops"])

# Ping
r = requests.get(
    "https://tracemapper.com/api/v1/ping",
    params={"host": "8.8.8.8", "count": 4},
    headers=headers,
)
print(r.json()["latency"])

# DNS
r = requests.get(
    "https://tracemapper.com/api/v1/dns",
    params={"domain": "example.com", "type": "MX"},
    headers=headers,
)
print(r.json()["records"])