Aller directement au contenu principalAller directement au pied de page

Référence de l'API

Référence complète de tous les points de terminaison de l'API ReportedIP v2, avec des exemples de code en cURL, PHP, Python et JavaScript.

Quotas quotidiens par niveau : Gratuit 1,000 checks · 50 reports · Contributeur 5,000 / 200 · Professionnel 25,000 / 1,000 · Business 100,000 / 5,000 par licence · Entreprise unlimited. Business varient en fonction du nombre de licences (x2 à x20) ; par exemple, x5 = 500,000 / 25,000. Voir Tarifs pour consulter la comparaison complète des niveaux.
URL de base https://reportedip.de/wp-json/reportedip/v2/
Authentification : Les points de terminaison authentifiés nécessitent une clé API envoyée via le X-Key En-tête. Les points de terminaison publics ne nécessitent pas d'authentification, mais leur utilisation est soumise à une limitation de débit.
Comment les quotas sont calculés (depuis la version 2.5.1) : Chaque terminal facture au maximum un un compteur journalier, jamais les deux.
  • Vérifier le quota : GET /check (+1) et POST /bulk-check (+N, un par adresse IP valide).
  • Quota de rapports : POST /report (+1) et POST /bulk-report (+N, un par rapport soumis).
  • Ni l'un ni l'autre : GET /blacklist, /blacklist-categories, /blacklist-stats, /reports/{ip}, /trends, /statistics, /verify-key — il s'agit de fonctionnalités soumises à des paliers tarifaires, et non d'appels facturés à la minute.
  • Limite d'adresses IP publiques : 100 requêtes par jour et par adresse IP source, réparties entre tous les appels non authentifiés (/check-public, /stats-public, /search-public, /categories, /attack-map-data). Envoyer un X-Key en-tête pour basculer vers le chemin du quota de clés API à la place.

Points d'accès publics

Ces points de terminaison sont accessibles sans authentification. Le débit est limité à 100 requêtes par jour et par adresse IP.

OBTENIR /check-public
Public

Vérifie la réputation d'une adresse IP sans authentification. Renvoie le score de fiabilité des signalements, le nombre total de signalements, les catégories de menaces et la date du dernier signalement. Compte pour +1 dans la limite quotidienne de l'API publique par adresse IP (partagée avec les autres points de terminaison non authentifiés).

Limite publique : 100 requêtes par jour et par adresse IP source, réparties entre tous les terminaux non authentifiés. Envoyez un en-tête X-Key pour passer au mode de quota par clé API.

Paramètres

Nom Type Obligatoire Par défaut Description
ip chaîne Oui Adresse IPv4 ou IPv6 à vérifier
détaillé booléen Non faux Veuillez inclure dans votre réponse une ventilation détaillée des niveaux de confiance

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/check-public?ip=1.2.3.4"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/check-public?ip=1.2.3.4'
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/check-public',
    params={'ip': '1.2.3.4'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/check-public?ip=1.2.3.4'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "ip": "1.2.3.4",
    "abuseConfidencePercentage": 87,
    "totalReports": 42,
    "lastReportedAt": "2026-03-09T14:22:31Z",
    "categories": [18, 21, 22],
    "countryCode": "CN",
    "isp": "China Telecom"
  }
}
OBTENIR /stats-public
Public

Consultez des statistiques publiques détaillées, avec une ventilation par catégorie, les principaux types de menaces et des données historiques. Cela compte pour +1 dans le cadre de la limite quotidienne de l'API publique par adresse IP.

Limite publique : 100 requêtes par jour et par adresse IP source, réparties entre tous les terminaux non authentifiés.

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/stats-public"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/stats-public'
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/stats-public'
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/stats-public'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "totalIPs": 158432,
    "totalReports": 892741,
    "last24h": {
      "newIPs": 342,
      "newReports": 1847
    },
    "last7d": {
      "newIPs": 2156,
      "newReports": 12493
    },
    "categoryBreakdown": [
      {"id": 18, "name": "Brute-Force", "count": 45231},
      {"id": 21, "name": "Web App Attack", "count": 32198},
      {"id": 22, "name": "SSH", "count": 28764},
      {"id": 15, "name": "Port Scan", "count": 18432}
    ],
    "topCountries": [
      {"code": "CN", "count": 42156},
      {"code": "US", "count": 18743},
      {"code": "RU", "count": 15892}
    ]
  }
}
OBTENIR /search-public
Public

Effectuez une recherche dans la base de données publique sur la réputation à l'aide d'une adresse IP partielle, d'un code pays ou d'un ASN. Cette fonctionnalité est utile pour la barre de recherche accessible au public sur reportedip.de. Elle compte pour +1 dans le cadre de la limite quotidienne de l'API publique par adresse IP.

Limite publique : 100 requêtes par jour et par adresse IP source, réparties entre tous les points de terminaison non authentifiés. Le nombre de résultats est plafonné à 50 entrées par appel.

Paramètres

Nom Type Obligatoire Par défaut Description
q chaîne Oui Critères de recherche : adresse IP complète ou partielle, code de pays (par exemple « CN ») ou ASN.
limite int Non 20 Nombre de résultats (max. 50).

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/search-public?q=1.2.3"

Réponse

200 OK
json
{
  "meta": {"success": true, "code": 200},
  "data": {
    "query": "1.2.3",
    "results": [
      {"ip": "1.2.3.4", "abuseConfidencePercentage": 87, "totalReports": 42, "countryCode": "CN"},
      {"ip": "1.2.3.5", "abuseConfidencePercentage": 65, "totalReports": 12, "countryCode": "CN"}
    ]
  }
}
OBTENIR /categories
Public

Récupère la liste des 30 catégories de menaces prédéfinies utilisées pour classer les rapports IP. Chaque catégorie comprend son identifiant, son nom, sa description et son niveau de gravité. Si l'appel est effectué sans clé API, il est comptabilisé dans la limite quotidienne de l'API publique par adresse IP ; s'il est accompagné d'un en-tête X-Key, il n'est comptabilisé dans aucun quota quotidien.

Limite publique : 100 requêtes par jour par adresse IP source, réparties entre tous les points de terminaison non authentifiés. Envoyez un en-tête X-Key pour contourner la limite publique (aucun quota par appel lorsque l'authentification est effectuée).

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/categories"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/categories'
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/categories'
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/categories'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": [
    {
      "id": 1,
      "name": "DNS Compromise",
      "description": "Compromised DNS server or DNS hijacking",
      "severity_level": 8
    },
    {
      "id": 18,
      "name": "Brute-Force",
      "description": "Login brute-force attempts",
      "severity_level": 7
    },
    {
      "id": 21,
      "name": "Web App Attack",
      "description": "Web application attacks (SQLi, XSS, etc.)",
      "severity_level": 9
    }
  ]
}
OBTENIR /attack-map-data
Public

Ensemble de données agrégées alimentant la carte des attaques en temps réel sur reportedip.de. Fournit le nombre de signalements par pays (top 50), l'ensemble glissant sur 24 heures des connexions d'attaques transfrontalières (top 30, paires au sein d'un même pays exclues) et un compteur des journaux du jour. Mise en cache côté serveur pendant 30 minutes — les appels répétés pendant cette période sont tous traités à partir du cache. Compte pour +1 dans la limite quotidienne de l'API publique par adresse IP.

Limite publique : 100 requêtes par jour et par adresse IP source, réparties entre tous les terminaux non authentifiés. La réponse est mise en cache côté serveur pendant 30 minutes ; un client effectuant des requêtes répétées doit donc respecter cet intervalle.

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/attack-map-data"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/attack-map-data'
);
$data = json_decode( wp_remote_retrieve_body( $response ), true );
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/attack-map-data'
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/attack-map-data'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "country_data": {
      "CN": { "count": 42156, "avgThreat": 7.8 },
      "US": { "count": 18743, "avgThreat": 5.4 },
      "RU": { "count": 15892, "avgThreat": 7.1 }
    },
    "country_info": { },
    "total_reports": 76791,
    "max_reports": 42156,
    "recent_attacks": [
      {
        "id": 1,
        "source_country": "CN",
        "target_country": "DE",
        "confidence_score": 88,
        "attack_count": 214
      }
    ],
    "today_logs": 1847
  }
}

Points de terminaison authentifiés

Ces points de terminaison nécessitent une clé API valide envoyée via le X-Key en-tête. Récupérez votre clé API à partir du Tableau de bord.

OBTENIR /check
Clé API

Effectuez une vérification complète de la réputation IP avec des données détaillées. Obtenez des informations complètes sur les menaces, notamment la répartition par niveau de confiance, l'historique des rapports et les informations sur le FAI. Cela décompte +1 de votre quota quotidien de vérifications.

Paramètres

Nom Type Obligatoire Par défaut Description
ip chaîne Oui Adresse IPv4 ou IPv6 à vérifier
détaillé booléen Non faux Inclure une ventilation détaillée des scores de confiance
inclure les rapports booléen Non faux Inclure les détails du rapport individuel dans la réponse

Exemples

boucle
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.de/wp-json/reportedip/v2/check?ip=1.2.3.4&verbose=true"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/check?ip=1.2.3.4&verbose=true',
    array(
        'headers' => array(
            'X-Key' => 'YOUR_API_KEY',
        ),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/check',
    params={'ip': '1.2.3.4', 'verbose': 'true'},
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/check?ip=1.2.3.4&verbose=true',
    {
        headers: { 'X-Key': 'YOUR_API_KEY' }
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "ip": "1.2.3.4",
    "abuseConfidencePercentage": 87,
    "totalReports": 42,
    "lastReportedAt": "2026-03-09T14:22:31Z",
    "categories": [18, 21, 22],
    "countryCode": "CN",
    "isp": "China Telecom",
    "isWhitelisted": false,
    "confidenceBreakdown": {
      "reportScore": 24.0,
      "diversityScore": 12.0,
      "recencyWeight": 13.5,
      "severityWeight": 12.3,
      "honeypotBonus": 25.0,
      "maxConfidence": 100,
      "constraintReasons": []
    },
    "debugInfo": {
      "reportCount": 42,
      "uniqueReporters": 8,
      "honeypotReportsCount": 5,
      "effectiveReportCount": 47,
      "timeDampeningFactor": 0.92
    }
  }
}
PUBLICATION /report
Clé API

Signalez une adresse IP malveillante à la communauté. Ce signalement sera ajouté aux données existantes afin de mettre à jour le score de fiabilité d'abus de cette adresse IP. Les signalements émis par un même utilisateur pour la même adresse IP dans un délai de 5 minutes sont automatiquement regroupés. Cela ne sera décompté que de votre quota quotidien de signalements — jamais de votre quota de vérifications.

Paramètres

Nom Type Obligatoire Par défaut Description
ip chaîne Oui Adresse IPv4 ou IPv6 à signaler
catégories tableau Oui Tableau d'identifiants de catégories de menaces (par exemple [18, 21])
commentaire chaîne Non Commentaire facultatif décrivant l'activité malveillante observée

Exemples

boucle
curl -X POST \
     -H "X-Key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"ip": "1.2.3.4", "categories": [18, 21], "comment": "SSH brute force"}' \
     "https://reportedip.de/wp-json/reportedip/v2/report"
php
$response = wp_remote_post(
    'https://reportedip.de/wp-json/reportedip/v2/report',
    array(
        'headers' => array(
            'X-Key'        => 'YOUR_API_KEY',
            'Content-Type' => 'application/json',
        ),
        'body' => wp_json_encode(array(
            'ip'         => '1.2.3.4',
            'categories' => array(18, 21),
            'comment'    => 'SSH brute force',
        )),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.post(
    'https://reportedip.de/wp-json/reportedip/v2/report',
    json={
        'ip': '1.2.3.4',
        'categories': [18, 21],
        'comment': 'SSH brute force'
    },
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/report',
    {
        method: 'POST',
        headers: {
            'X-Key': 'YOUR_API_KEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            ip: '1.2.3.4',
            categories: [18, 21],
            comment: 'SSH brute force'
        })
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "Report submitted successfully"
  },
  "data": {
    "reportId": 58234,
    "ip": "1.2.3.4",
    "categories": [18, 21],
    "abuseConfidencePercentage": 89
  }
}
OBTENIR /verify-key
Clé API

Vérifiez votre clé API et récupérez les informations relatives à votre compte, notamment le rôle de l'utilisateur, les autorisations, les limites de débit et les statistiques d'utilisation actuelles. Cette opération n'est pas comptabilisée dans le quota quotidien.

Exemples

boucle
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.de/wp-json/reportedip/v2/verify-key"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/verify-key',
    array(
        'headers' => array(
            'X-Key' => 'YOUR_API_KEY',
        ),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/verify-key',
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/verify-key',
    {
        headers: { 'X-Key': 'YOUR_API_KEY' }
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "valid": true,
    "role": "reportedip_professional",
    "permissions": {
      "check": true,
      "report": true,
      "bulk_check": true,
      "bulk_report": false,
      "reports_detail": true,
      "trends": true
    },
    "rateLimits": {
      "checksPerDay": 25000,
      "reportsPerDay": 1000
    },
    "usage": {
      "checksToday": 1247,
      "reportsToday": 38
    }
  }
}
OBTENIR /statistics
Authentifié

Statistiques d'utilisation authentifiées par utilisateur : appels API du jour, rapports du jour, nombre total de rapports, rapports vérifiés, score de réputation actuel, ainsi que l'utilisation des quotas propres à chaque niveau. N'est pas décompté du quota quotidien.

Paramètres

Nom Type Obligatoire Par défaut Description
période chaîne Non aujourd'hui One of <code>today</code>, <code>week</code>, <code>month</code>, <code>all</code>.

Exemples

boucle
curl -H "X-Key: YOUR_KEY" "https://reportedip.de/wp-json/reportedip/v2/statistics?period=today"

Réponse

200 OK
json
{
  "meta": {"success": true, "code": 200},
  "data": {
    "apiCallsToday": 1247,
    "reportsToday": 38,
    "totalReports": 4271,
    "verifiedReports": 3892,
    "reputationScore": 87,
    "tier": "professional",
    "limits": {"checks": 25000, "reports": 1000}
  }
}

Terminaux sur liste noire

Accédez à la liste noire d'adresses IP alimentée par la communauté, dont la notation est calculée automatiquement à partir de rapports en temps réel. Disponible aux formats JSON, texte brut et CSV pour l'intégration dans un pare-feu.

OBTENIR /blacklist
Clé API

Récupérez la liste noire d'adresses IP dans différents formats. Permet de filtrer par niveau de confiance, source et catégorie. Idéal pour l'intégration à un pare-feu et le blocage automatisé. N'est pas pris en compte dans le quota quotidien — fonctionnalité réservée aux abonnés des niveaux Contributor et supérieurs.

Paramètres

Nom Type Obligatoire Par défaut Description
format chaîne Non json Format de réponse : json, txt ou csv
source chaîne Non communauté Source de la liste noire : communauté (par défaut) — une seule source disponible ; le paramètre « source » est réservé à un usage futur
confiance_minimum entier Non 75 Pourcentage minimal de confiance en matière d'abus (0-100)
catégorie entier Non Filtrer par ID de catégorie de menace
limite entier Non 10000 Nombre maximal d'entrées à renvoyer

Exemples

boucle
# JSON format
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.de/wp-json/reportedip/v2/blacklist?confidence_minimum=90"

# Plain text (one IP per line, for firewall rules)
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.de/wp-json/reportedip/v2/blacklist?format=txt&source=all"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist?confidence_minimum=90',
    array(
        'headers' => array(
            'X-Key' => 'YOUR_API_KEY',
        ),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist',
    params={
        'confidence_minimum': 90,
        'source': 'all'
    },
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist?confidence_minimum=90',
    {
        headers: { 'X-Key': 'YOUR_API_KEY' }
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "generatedAt": "2026-03-09T15:00:00Z",
    "count": 4821,
    "confidenceMinimum": 90,
    "entries": [
      {
        "ip": "1.2.3.4",
        "abuseConfidencePercentage": 100,
        "totalReports": 156,
        "lastReportedAt": "2026-03-09T14:22:31Z",
        "categories": [18, 21, 22]
      },
      {
        "ip": "5.6.7.8",
        "abuseConfidencePercentage": 95,
        "totalReports": 87,
        "lastReportedAt": "2026-03-09T13:45:12Z",
        "categories": [15, 18]
      }
    ]
  }
}
OBTENIR /blacklist-categories
Public

Récupérer toutes les catégories de liste noire disponibles utilisées pour classer les entrées. N'est pas pris en compte dans le quota quotidien.

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/blacklist-categories"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-categories'
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-categories'
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-categories'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": [
    {
      "id": 1,
      "name": "Botnet",
      "slug": "botnet",
      "description": "Known botnet command and control or participant"
    },
    {
      "id": 2,
      "name": "Brute-Force",
      "slug": "brute-force",
      "description": "Credential brute-force attacks"
    },
    {
      "id": 3,
      "name": "Spam",
      "slug": "spam",
      "description": "Spam sources"
    }
  ]
}
OBTENIR /blacklist-stats
Public

Récupérer des statistiques sur la liste noire, notamment le nombre total d'entrées et leur répartition par niveau de confiance et par catégorie. Cette opération n'est pas comptabilisée dans le quota quotidien.

Exemples

boucle
curl "https://reportedip.de/wp-json/reportedip/v2/blacklist-stats"
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-stats'
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-stats'
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/blacklist-stats'
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "total": 12483,
    "community": 12483,
    "byConfidence": {
      "90-100": 4821,
      "75-89": 3247,
      "50-74": 2891,
      "25-49": 1524
    },
    "byCategory": [
      {"name": "Brute-Force", "count": 5432},
      {"name": "Web App Attack", "count": 3218},
      {"name": "SSH", "count": 2847},
      {"name": "Port Scan", "count": 986}
    ]
  }
}

Terminaux avancés

Points de terminaison avancés pour les utilisateurs expérimentés. Nécessite des clés API de niveau Professionnel ou Entreprise.

OBTENIR /reports/{ip}
Professionnel+

Récupérer tous les rapports individuels associés à une adresse IP spécifique. Renvoie les détails des rapports sous forme paginée, notamment les informations sur l'auteur, les catégories et les horodatages. N'est pas pris en compte dans le quota quotidien — fonctionnalité réservée aux abonnements de niveau supérieur (Professional et au-delà).

Paramètres

Nom Type Obligatoire Par défaut Description
ip chaîne Oui Adresse IPv4 ou IPv6 (dans le chemin d'accès de l'URL)
page entier Non 1 Numéro de page pour la pagination
par page entier Non 25 Nombre de rapports par page

Exemples

boucle
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.de/wp-json/reportedip/v2/reports/1.2.3.4?page=1&per_page=25"
php
$ip = '1.2.3.4';
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/reports/' . $ip . '?page=1',
    array(
        'headers' => array(
            'X-Key' => 'YOUR_API_KEY',
        ),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

ip = '1.2.3.4'
response = requests.get(
    f'https://reportedip.de/wp-json/reportedip/v2/reports/{ip}',
    params={'page': 1, 'per_page': 25},
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const ip = '1.2.3.4';
const response = await fetch(
    `https://reportedip.de/wp-json/reportedip/v2/reports/${ip}?page=1&per_page=25`,
    {
        headers: { 'X-Key': 'YOUR_API_KEY' }
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "ip": "1.2.3.4",
    "reports": [
      {
        "id": 58234,
        "categories": [18, 21],
        "comment": "SSH brute force with 500+ attempts",
        "reportedAt": "2026-03-09T14:22:31Z",
        "reporterRole": "honeypot",
        "aggregationCount": 12
      },
      {
        "id": 58102,
        "categories": [22],
        "comment": "Port scanning on TCP 22, 80, 443, 8080",
        "reportedAt": "2026-03-09T10:15:00Z",
        "reporterRole": "contributor",
        "aggregationCount": 0
      }
    ],
    "total": 42,
    "page": 1,
    "per_page": 25,
    "total_pages": 2
  }
}
PUBLICATION /bulk-check
Professionnel+

Vérifiez la réputation de plusieurs adresses IP en une seule requête. Le service accepte jusqu'à 1 000 adresses IP par requête. Le nombre d'adresses IP valides dans la requête est décompté de votre quota quotidien de vérifications (N = nombre d'adresses IP valides). Si la requête dépasse le quota restant, le serveur renvoie un code d'erreur HTTP 429 et le compteur n'est pas incrémenté.

Paramètres

Nom Type Obligatoire Par défaut Description
ips tableau Oui Tableau d'adresses IPv4/IPv6 (1 000 au maximum)

Exemples

boucle
curl -X POST \
     -H "X-Key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"ips": ["1.2.3.4", "5.6.7.8", "9.10.11.12"]}' \
     "https://reportedip.de/wp-json/reportedip/v2/bulk-check"
php
$response = wp_remote_post(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-check',
    array(
        'headers' => array(
            'X-Key'        => 'YOUR_API_KEY',
            'Content-Type' => 'application/json',
        ),
        'body' => wp_json_encode(array(
            'ips' => array('1.2.3.4', '5.6.7.8', '9.10.11.12'),
        )),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

response = requests.post(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-check',
    json={
        'ips': ['1.2.3.4', '5.6.7.8', '9.10.11.12']
    },
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-check',
    {
        method: 'POST',
        headers: {
            'X-Key': 'YOUR_API_KEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({
            ips: ['1.2.3.4', '5.6.7.8', '9.10.11.12']
        })
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "OK"
  },
  "data": {
    "results": [
      {
        "ip": "1.2.3.4",
        "abuseConfidencePercentage": 87,
        "totalReports": 42,
        "lastReportedAt": "2026-03-09T14:22:31Z",
        "categories": [18, 21, 22]
      },
      {
        "ip": "5.6.7.8",
        "abuseConfidencePercentage": 0,
        "totalReports": 0,
        "lastReportedAt": null,
        "categories": []
      },
      {
        "ip": "9.10.11.12",
        "abuseConfidencePercentage": 45,
        "totalReports": 3,
        "lastReportedAt": "2026-03-07T09:30:00Z",
        "categories": [15]
      }
    ],
    "checked": 3
  }
}
PUBLICATION /bulk-report
Entreprise

Envoyez plusieurs rapports IP en une seule requête à l'aide de données au format CSV. Conçu pour les systèmes automatisés et les honeypots qui doivent signaler de grands volumes d'activités malveillantes. Implique un prélèvement de +N sur votre quota quotidien de rapports, où N correspond au nombre de rapports envoyés. N'est jamais décompté du quota de vérification.

Paramètres

Nom Type Obligatoire Par défaut Description
csv chaîne Oui Fichier CSV contenant les colonnes suivantes : IP, Catégories, Commentaire (une entrée par ligne)

Exemples

boucle
curl -X POST \
     -H "X-Key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{"csv": "1.2.3.4,18|21,SSH brute force\n5.6.7.8,22,Port scanning\n9.10.11.12,15|18,Distributed attack"}' \
     "https://reportedip.de/wp-json/reportedip/v2/bulk-report"
php
$csv = "1.2.3.4,18|21,SSH brute force\n";
$csv .= "5.6.7.8,22,Port scanning\n";
$csv .= "9.10.11.12,15|18,Distributed attack";

$response = wp_remote_post(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-report',
    array(
        'headers' => array(
            'X-Key'        => 'YOUR_API_KEY',
            'Content-Type' => 'application/json',
        ),
        'body' => wp_json_encode(array(
            'csv' => $csv,
        )),
    )
);
$data = json_decode(wp_remote_retrieve_body($response), true);
Python
import requests

csv_data = """1.2.3.4,18|21,SSH brute force
5.6.7.8,22,Port scanning
9.10.11.12,15|18,Distributed attack"""

response = requests.post(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-report',
    json={'csv': csv_data},
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const csvData = [
    '1.2.3.4,18|21,SSH brute force',
    '5.6.7.8,22,Port scanning',
    '9.10.11.12,15|18,Distributed attack'
].join('\n');

const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/bulk-report',
    {
        method: 'POST',
        headers: {
            'X-Key': 'YOUR_API_KEY',
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ csv: csvData })
    }
);
const data = await response.json();

Réponse

200 OK
json
{
  "meta": {
    "success": true,
    "code": 200,
    "message": "Bulk report processed"
  },
  "data": {
    "success_count": 3,
    "error_count": 0,
    "errors": []
  }
}

Points de terminaison de relais 2FA

Gestion de la mise en place de l'authentification à deux facteurs (2FA) pour le plugin WordPress ReportedIP . Les abonnés au niveau PRO+ peuvent mettre en file d'attente les e-mails et SMS d'authentification via ce relais ; le service utilise d'abord le quota mensuel inclus et passe au solde du forfait prépayé une fois ce quota atteint.

Forfait mensuel tout compris : Gratuit / Contributeur not eligible · Professionnel 500 mails · 25 SMS · Business 2,500 mails · 75 SMS · Entreprise fair-use unlimited. Les abonnés PRO et Business recharger leur crédit via des forfaits prépayés (hive_mail_bundle_1000/5000/25000, hive_sms_bundle_50/200/500).
Garantie de remboursement — bundle_balance est signé : un remboursement Stripe (charge.refunded) sur un forfait déjà utilisé réduit le solde et peut le faire passer en dessous de zéro. Tant que le solde est non positif et que le quota inclus est épuisé, les envois échouent avec un code HTTP 402 cap_reached_buy_bundle jusqu'à l'achat d'un nouveau forfait.
OBTENIR /relay-quota
PRO / Business Entreprise

Renvoie le quota mensuel inclus ainsi que le solde du forfait prépayé pour la messagerie et la transmission de SMS. Cette valeur est utilisée par le tableau de bord du plugin Hive pour afficher les barres d'utilisation et les informations sur le forfait.

Exemples

boucle
curl -H 'X-Key: YOUR_API_KEY' \
     https://reportedip.de/wp-json/reportedip/v2/relay-quota
php
$response = wp_remote_get(
    'https://reportedip.de/wp-json/reportedip/v2/relay-quota',
    array( 'headers' => array( 'X-Key' => 'YOUR_API_KEY' ) )
);
$data = json_decode( wp_remote_retrieve_body( $response ), true );
Python
import requests

response = requests.get(
    'https://reportedip.de/wp-json/reportedip/v2/relay-quota',
    headers={'X-Key': 'YOUR_API_KEY'}
)
data = response.json()
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/relay-quota',
    { headers: { 'X-Key': 'YOUR_API_KEY' } }
);
const data = await response.json();

Réponse

200 OK
json
{
  "tier": "professional",
  "role": "reportedip_professional",
  "mail": {
    "sent": 18,
    "queued": 0,
    "queued_total": 18,
    "failed": 0,
    "limit": 500,
    "inclusive_limit": 500,
    "inclusive_used": 18,
    "inclusive_available": 482,
    "bundle_balance": 1000,
    "bundle_eligible": true,
    "period_start": "2026-05-01T00:00:00Z",
    "period_end":   "2026-05-31T23:59:59Z"
  },
  "sms": {
    "sent": 3,
    "queued": 0,
    "queued_total": 3,
    "failed": 0,
    "limit": 25,
    "inclusive_limit": 25,
    "inclusive_used": 3,
    "inclusive_available": 22,
    "bundle_balance": 50,
    "bundle_eligible": true,
    "period_start": "2026-05-01T00:00:00Z",
    "period_end":   "2026-05-31T23:59:59Z"
  },
  "mail_bundle_balance": 1000,
  "sms_bundle_balance":  50
}
PUBLICATION /relay-mail
PRO / Business Entreprise

Envoie un e-mail de validation à deux facteurs (2FA) via le relais vérifié par SPF/DKIM/DMARC. Utilise un emplacement du quota mensuel d'e-mails inclus ; une fois celui-ci épuisé, un crédit est prélevé sur `mail_bundle_balance`. Renvoie un code HTTP 402 lorsque les deux sont vides.

Paramètres

Nom Type Obligatoire Par défaut Description
à chaîne Oui Adresse e-mail du destinataire
sujet chaîne Oui Objet de l'e-mail
html_body chaîne Oui Corps HTML du message
corps_simple chaîne Non Corps de secours en texte brut (facultatif)
url_du_site chaîne Non URL du site d'origine (utilisée pour les limites quotidiennes par site et les journaux d'audit)

Exemples

boucle
curl -X POST \
     -H 'X-Key: YOUR_API_KEY' \
     -H 'Content-Type: application/json' \
     -d '{"to":"[email protected]","subject":"Your 2FA code","html_body":"<p>Code: 123456</p>"}' \
     https://reportedip.de/wp-json/reportedip/v2/relay-mail
php
$response = wp_remote_post(
    'https://reportedip.de/wp-json/reportedip/v2/relay-mail',
    array(
        'headers' => array( 'X-Key' => 'YOUR_API_KEY', 'Content-Type' => 'application/json' ),
        'body'    => wp_json_encode( array(
            'to'        => '[email protected]',
            'subject'   => 'Your 2FA code',
            'html_body' => '<p>Code: 123456</p>',
        ) ),
    )
);
Python
import requests

response = requests.post(
    'https://reportedip.de/wp-json/reportedip/v2/relay-mail',
    headers={'X-Key': 'YOUR_API_KEY'},
    json={
        'to': '[email protected]',
        'subject': 'Your 2FA code',
        'html_body': '<p>Code: 123456</p>',
    },
)
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/relay-mail',
    {
        method: 'POST',
        headers: { 'X-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
        body: JSON.stringify({
            to: '[email protected]',
            subject: 'Your 2FA code',
            html_body: '<p>Code: 123456</p>',
        }),
    }
);

Réponse

200 OK
json
{
  "ok": true,
  "queue_id": 48217,
  "remaining_quota": {
    "sent": 18,
    "queued": 1,
    "queued_total": 19,
    "failed": 0,
    "limit": 500,
    "inclusive_limit": 500,
    "inclusive_used": 19,
    "inclusive_available": 481,
    "bundle_balance": 1000,
    "bundle_eligible": true,
    "period_start": "2026-05-01T00:00:00Z",
    "period_end":   "2026-05-31T23:59:59Z"
  }
}
PUBLICATION /relay-sms
PRO / Business Entreprise

Queues a 2FA SMS via the managed worldwide relay. The body is server-side rendered from a registered template (e.g. <code>2fa_login</code>) so the actual code never appears in client logs. HTTP 402 when both the inclusive quota and the prepaid bundle are exhausted; HTTP 422 with code <code>country_not_supported</code> when the destination country is unavailable for cost or operational reasons; HTTP 429 when the recipient or per-site daily anti-fraud cap is hit.

Paramètres

Nom Type Obligatoire Par défaut Description
à chaîne Oui Numéro de téléphone du destinataire au format E.164 (par exemple : +49170...)
code du modèle chaîne Oui Server-side template id, e.g. <code>2fa_login</code>
variables objet Oui Template variables: <code>{ code, expiry_min, lang? }</code>
url_du_site chaîne Non URL du site d'origine (utilisée pour les limites quotidiennes par site et les journaux d'audit)

Exemples

boucle
curl -X POST \
     -H 'X-Key: YOUR_API_KEY' \
     -H 'Content-Type: application/json' \
     -d '{"to":"+491701234567","template_code":"2fa_login","vars":{"code":"123456","expiry_min":5,"lang":"de"}}' \
     https://reportedip.de/wp-json/reportedip/v2/relay-sms
php
$response = wp_remote_post(
    'https://reportedip.de/wp-json/reportedip/v2/relay-sms',
    array(
        'headers' => array( 'X-Key' => 'YOUR_API_KEY', 'Content-Type' => 'application/json' ),
        'body'    => wp_json_encode( array(
            'to'            => '+491701234567',
            'template_code' => '2fa_login',
            'vars'          => array( 'code' => '123456', 'expiry_min' => 5, 'lang' => 'de' ),
        ) ),
    )
);
Python
import requests

response = requests.post(
    'https://reportedip.de/wp-json/reportedip/v2/relay-sms',
    headers={'X-Key': 'YOUR_API_KEY'},
    json={
        'to': '+491701234567',
        'template_code': '2fa_login',
        'vars': {'code': '123456', 'expiry_min': 5, 'lang': 'de'},
    },
)
JavaScript
const response = await fetch(
    'https://reportedip.de/wp-json/reportedip/v2/relay-sms',
    {
        method: 'POST',
        headers: { 'X-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' },
        body: JSON.stringify({
            to: '+491701234567',
            template_code: '2fa_login',
            vars: { code: '123456', expiry_min: 5, lang: 'de' },
        }),
    }
);

Réponse

200 OK
json
{
  "ok": true,
  "queue_id": 901,
  "remaining_quota": {
    "sent": 3,
    "queued": 1,
    "queued_total": 4,
    "failed": 0,
    "limit": 25,
    "inclusive_limit": 25,
    "inclusive_used": 4,
    "inclusive_available": 21,
    "bundle_balance": 50,
    "bundle_eligible": true,
    "period_start": "2026-05-01T00:00:00Z",
    "period_end":   "2026-05-31T23:59:59Z"
  }
}

Réponses d'erreur pour les points de terminaison de relais

StatutCodeSignification
401missing_api_key / invalid_api_keyLe X-Key L'en-tête est manquant, mal formé ou fait référence à une clé désactivée.
403tier_forbiddenLe niveau d'abonnement de l'appelant (Gratuit / Contributeur) ne permet pas la livraison par relais.
402cap_reached_buy_bundleLe plafond mensuel inclus a été atteint et le solde du forfait prépayé est épuisé ou négatif après un remboursement. Achetez un forfait dans le tableau de bord pour reprendre l'accès.
402monthly_cap_reachedLe plafond mensuel inclus a été atteint pour un niveau ne donnant pas droit à une offre groupée.
429recipient_backoff / site_daily_capLimiteur anti-fraude. Le retry-after L'en-tête indique le temps d'attente.

Points de terminaison obsolètes

Ces points de terminaison sont obsolètes et seront supprimés dans une prochaine version. Veuillez migrer vers les alternatives recommandées.

OBTENIR /blacklist-detailed
Clé API
Obsolète. Utilisez plutôt GET /blacklist.

Renvoyait auparavant une liste noire détaillée. Maintenue pour des raisons de compatibilité ascendante avec les anciennes installations de Hive. N'est pas prise en compte dans le quota quotidien (depuis la version 2.5.1 — elle était auparavant comptabilisée comme une vérification).

OBTENIR /blacklist-combined
Clé API
Obsolète. Utilisez plutôt GET /blacklist?source=all.

Auparavant, renvoyait une liste noire regroupant toutes les sources. Conservée pour des raisons de compatibilité ascendante avec les anciennes installations de Hive. N'est pas prise en compte dans le quota quotidien (depuis la version 2.5.1).

OBTENIR /blacklist-export/git
Clé API
Obsolète. Utilisez plutôt GET /blacklist?format=txt.

La liste noire était auparavant exportée au format texte brut pour permettre l'intégration dans un dépôt Git. Cette fonctionnalité a été conservée à des fins de compatibilité ascendante. Elle n'est pas prise en compte dans le quota quotidien (depuis la version 2.5.1).

Axé sur la sécurité
Conforme au RGPD
Fabriqué en Allemagne
Retour à la documentation