Aller au contenu

Documentation API

Intégrez TraceMapper dans vos applications avec notre API REST. Disponible pour les utilisateurs Pro.

Authentification

Toutes les requêtes API nécessitent une clé API passée en paramètre "key". Générez votre clé API depuis le Tableau de bord.

Paramètre de requête

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

En-tête Authorization (recommandé)

Authorization: Bearer tm_your_api_key

Les clés API expirent après 1 an. Vous pouvez les régénérer depuis le Tableau de bord.

Points d'accès

GET/api/v1/trace

Exécute un traceroute vers une destination et retourne tous les sauts avec géolocalisation, ASN, latence, gigue et perte de paquets.

Paramètres

ParamètreTypeRequisDescription
keystringrequisVotre clé API (commence par tm_)
deststringrequisAdresse IP ou nom de domaine de destination
maxHopsintegeroptionnelNombre maximum de sauts (1-64, par défaut : 30)
protocolstringoptionnelProtocole : icmp, udp ou tcp (par défaut : icmp)

Exemple de réponse

{
  "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
    }
  ]
}

Codes d'erreur

401Clé API manquante ou invalide
403Utilisateur non Pro ou clé invalide
429Limite de requêtes dépassée
GET/api/v1/traces

Listez vos traceroutes sauvegardés avec pagination. Filtrage par destination possible.

ParamètreTypeDescription
limitintegerRésultats par page (1-100, par défaut : 20)
offsetintegerNombre de résultats à ignorer (par défaut : 0)
deststringFiltrer par IP ou nom de domaine de destination
GET/api/v1/status

Obtenir le statut de l'API, les sources disponibles et les limites de requêtes. Aucune authentification requise.

GET/api/v1/ping

Effectuer un ping vers un hôte et retourner les statistiques de latence, la perte de paquets et les temps aller-retour individuels.

Paramètres

ParamètreTypeRequisDescription
hoststringrequisAdresse IP ou nom d'hôte à pinger
countintegeroptionnelNombre de paquets ping à envoyer (1-20, par défaut : 4)

Exemple de réponse

{
  "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

Effectuer une résolution DNS pour un domaine et retourner les enregistrements avec le temps de requête.

Paramètres

ParamètreTypeRequisDescription
domainstringrequisNom de domaine à résoudre
typestringoptionnelType d'enregistrement : A, AAAA, MX, NS, CNAME, TXT ou SOA (par défaut : A)

Exemple de réponse

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

Vérifier une URL HTTP(S) et retourner le code de statut, le temps de réponse, la chaîne de redirections, les en-têtes et les détails du certificat SSL.

Paramètres

ParamètreTypeRequisDescription
urlstringrequisURL à vérifier (https:// ajouté si omis)

Exemple de réponse

{
  "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

Vérifier si un port TCP est ouvert sur un hôte et retourner le temps de réponse et le nom du service.

Paramètres

ParamètreTypeRequisDescription
hoststringrequisAdresse IP ou nom d'hôte à vérifier
portintegerrequisNuméro de port à vérifier (1-65535)
portsstringoptionnelUtiliser "common" pour scanner les ports courants (21, 22, 25, 53, 80, 443, ...)

Exemple de réponse

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

Vérifier la réputation d'une adresse IP via les listes noires DNS et AbuseIPDB, avec données de géolocalisation.

Paramètres

ParamètreTypeRequisDescription
ipstringrequisAdresse IPv4 ou IPv6 à vérifier

Exemple de réponse

{
  "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

Rechercher les informations de routage BGP pour une adresse IP ou un préfixe, y compris l'ASN d'origine, les chemins AS et les fournisseurs amont.

Paramètres

ParamètreTypeRequisDescription
targetstringrequisAdresse IP ou préfixe (ex. : 8.8.8.0/24)

Exemple de réponse

{
  "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 }
  ]
}

Limites de requêtes

Les requêtes API sont limitées à 30 par minute par clé API. En cas de dépassement, vous recevrez un code 429 avec un en-tête Retry-After.

Exemples de code

cURL

# Avec en-tête Authorization
curl -H "Authorization: Bearer tm_your_api_key" \
  "https://tracemapper.com/api/v1/trace?dest=8.8.8.8"

# Lister les traceroutes sauvegardés
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"])