Documentation de l'API
Base : https://ctiforecast.com. Authentification par l'en-tête X-API-Key (ou Authorization: Bearer, ou le paramètre key= pour les outils qui ne gèrent pas les en-têtes). Chaque réponse renvoie X-RateLimit-Limit et X-RateLimit-Remaining ; le quota se réinitialise à minuit UTC.
Importez la spécification dans Postman, Insomnia, Bruno ou votre générateur de client (openapi-generator) pour obtenir toutes les routes, paramètres et formats de réponse.
GET /v1/iocs · flux d'indicateurs
| Paramètre | Description |
|---|---|
| type | Un ou plusieurs types séparés par des virgules : cve, sha256, sha1, md5, ip, domain, url. Par défaut : tous ceux de votre plan. |
| since | Indicateurs vus après cette date ISO 8601 (ex. 2026-11-06T00:00:00). Pratique pour une collecte incrémentale. |
| until | Indicateurs vus avant cette date. Pour paginer, renvoyez la valeur next_until de la réponse précédente. |
| min_confidence | Score minimum de 0 à 100. 70 donne un flux peu bruité. |
| limit | Nombre de résultats : 100 par défaut, maximum selon le plan (100 / 1 000 / 5 000). |
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/iocs?type=ip,domain&min_confidence=70&limit=2"
{
"count": 2,
"delayed_hours": 0,
"next_until": "2026-11-06T21:19:02.118374",
"data": [
{"value": "185.177.93.120", "type": "ip", "confidence": 74, "severity": 70,
"first_seen": "2026-10-28T09:12:40", "last_seen": "2026-11-06T21:20:11",
"mentions": 10, "source": "www.bitdefender.com", "category": null, "malware_family": null,
"references": [{"url": "https://www.bitdefender.com/en-us/blog/labs/…", "source": "www.bitdefender.com",
"seen_at": "2026-11-06T21:20:11"}]},
...
]
}
GET /v1/lookup?value=… · vérifier un indicateur
Renvoie found: true et le détail si la valeur (hash, IP, domaine, CVE) est dans le flux.
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/lookup?value=CVE-2025-55182"
GET /v1/stats · état du flux et de votre quota
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/stats"
GET /v1/export · export en masse BUSINESS
Mêmes filtres que /v1/iocs, jusqu'à 500 000 lignes. format=csv (par défaut) ou format=json.
curl -H "X-API-Key: $CTI_KEY" -o iocs.csv "https://ctiforecast.com/v1/export?type=sha256,md5&since=2026-11-01T00:00:00"
GET /v1/trending · menaces en accélération
Indicateurs dont les mentions des 7 derniers jours dépassent celles des 7 jours d'avant. Recalculé toutes les heures. status : nouveau (absent la semaine d'avant), en_hausse (× 1,5 ou plus), stable, en_baisse. Par défaut : nouveau,en_hausse. Plan Free : top 10 sur ses types.
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/trending?type=cve,sha256&limit=20"
{"window": "7d vs 7d précédents", "count": 20, "data": [
{"value": "CVE-2025-55182", "type": "cve", "trend_score": 87, "status": "en_hausse",
"mentions_7d": 412, "mentions_previous_7d": 96, "active_days_7d": 7, "growth": 4.28, ...}
]}
GET /v1/forecast · prévisions d'exploitation des CVE
CVE classées par probabilité d'être ajoutées au catalogue KEV de la CISA (exploitation confirmée) dans les 30 jours. Le modèle combine EPSS et la dynamique des mentions dans la recherche en sécurité ; il est réentraîné chaque semaine (fiabilité mesurée). signal : imminente, a_surveiller, exploitee, faible (par défaut : imminente,a_surveiller). Plan Free : top 10, sans articles sources.
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/forecast?signal=imminente&limit=20"
{"horizon_days": 30, "epss_date": "2026-11-06", "count": 20, "data": [
{"cve": "CVE-2026-43284", "signal": "imminente", "forecast_score": 100, "kev_probability_30d": 0.0033,
"epss": 0.942, "in_kev": false, "mentions_7d": 7, "mentions_previous_7d": 9,
"reasons": ["Facteur : probabilité EPSS", "EPSS : 94.2% (rang 100%)", "7 mentions sur 7 jours, 9 la semaine d'avant"],
"references": [{"url": "https://…", "source": "…"}]}
]}
kev_probability_30d est une probabilité brute, faible par nature (seules quelques dizaines de CVE sont ajoutées au KEV chaque mois). forecast_score (0-100) est son rang parmi les CVE actives : c'est lui qu'il faut utiliser pour prioriser.
GET /v1/cve/<id> · fiche d'une CVE
Prévision, EPSS, présence dans le KEV (avec la date et l'usage par des rançongiciels), mentions et articles sources pour une CVE.
curl -H "X-API-Key: $CTI_KEY" "https://ctiforecast.com/v1/cve/CVE-2025-55182"
GET /v1/blocklist.txt · liste de blocage
Une valeur par ligne (les lignes qui commencent par # sont des commentaires), triée par confiance. Faite pour les pare-feux, les DNS filtrants, Wazuh et MISP. Ces outils ne savent souvent télécharger qu'une URL : vous pouvez alors passer la clé dans l'URL avec key=. Gardez cette URL privée, elle donne accès à votre compte.
| Paramètre | Description |
|---|---|
| type | ip (par défaut), domain, url, sha256, sha1 ou md5. En plan Free : sha256 uniquement. |
| days | Indicateurs vus ces N derniers jours, de 1 à 365. Par défaut : 30. |
| min_confidence | Par défaut : 70, pour limiter les faux positifs sur un blocage. |
curl "https://ctiforecast.com/v1/blocklist.txt?type=ip&days=30&key=$CTI_KEY"
Jusqu'à 50 000 lignes en Pro, 500 000 en Business.
GET /v1/stix · bundle STIX 2.1 PRO
Mêmes filtres que /v1/iocs. Les hashes, IP, domaines et URL deviennent des objets indicator avec leur motif STIX, et les CVE des objets vulnerability. Les articles sources sont dans external_references. Les identifiants sont stables : un même indicateur garde le même id d'un export à l'autre, ce qui évite les doublons à l'import (OpenCTI, MISP, Microsoft Sentinel).
curl -H "X-API-Key: $CTI_KEY" -o cti-forecast.json "https://ctiforecast.com/v1/stix?type=sha256,ip,domain&min_confidence=70&limit=1000"
Serveur TAXII 2.1 PRO
Protocole standard d'échange de threat intelligence (OASIS). OpenCTI, Microsoft Sentinel, MISP et la plupart des TIP s'y connectent directement. Authentification Basic : n'importe quel nom d'utilisateur, votre clé API comme mot de passe (ou l'en-tête X-API-Key). Lecture seule, objets STIX 2.1 marqués TLP:GREEN, pagination par next, collecte incrémentale par added_after.
| Élément | Valeur |
|---|---|
| Découverte | https://ctiforecast.com/taxii2/ |
| Racine d'API | https://ctiforecast.com/taxii2/api/ |
| Collection « IP malveillantes » | 77653c02-ccd7-55e5-8db8-85d421cfba7c |
| Collection « Domaines et URL malveillants » | 6d85c187-7ce5-561a-9cb0-d820a89fd099 |
| Collection « Fichiers malveillants » | 60ef1a80-e85a-56e8-84b6-f6e51e8d3fb6 |
| Collection « Vulnérabilités » | 00ae1b11-d2b2-550f-91d2-39efc6c29dd7 |
curl -u "client:$CTI_KEY" -H "Accept: application/taxii+json;version=2.1" \ "https://ctiforecast.com/taxii2/api/collections/77653c02-ccd7-55e5-8db8-85d421cfba7c/objects/?added_after=2026-11-01T00:00:00Z&limit=500"
Confiance et décroissance
confidence est la confiance actuelle. Pour les IP et les URL, elle est divisée par deux tous les 30 jours sans nouvelle observation, et tous les 90 jours pour les domaines (après 7 jours de grâce) : l'infrastructure d'attaque change de main vite. Les hashes et les CVE ne décroissent pas. confidence_base est la valeur avant décroissance ; un indicateur revu retrouve sa confiance de base. Dans STIX, valid_until indique la date au-delà de laquelle l'indicateur ne devrait plus être utilisé pour bloquer.
Codes d'erreur
| Code | Signification |
|---|---|
| 400 | Paramètre invalide. Le message indique lequel. |
| 401 | Clé manquante, invalide ou révoquée. |
| 403 | Type ou fonction non inclus dans votre plan. |
| 429 | Quota journalier atteint. |