Présentation
L'API Fiabli est une API REST JSON sur HTTPS. Toutes les requêtes/réponses sont en application/json (UTF-8). Les dates sont au format ISO 8601.
Base URL
https://fiabli.io/api/v1
Conventions
- Toutes les réponses suivent le format
{ success: bool, data?: object, error?: object } - Les erreurs incluent un
codemachine et unmessagehumain - Pagination via
?limit(max 200) et?offset - Headers de quota retournés à chaque appel :
X-Quota-Used,X-Quota-Limit,X-Quota-Remaining
Authentification
L'API utilise des clés Bearer au format fb_live_* (production) ou fb_test_* (sandbox). Créez une clé depuis votre tableau de bord — chaque clé peut avoir des scopes restrictifs (read, write, admin).
Authorization: Bearer fb_live_a8f3k2x9...
.env, secret manager, AWS Secrets, Vault).Quickstart — 1 requête, 1 verdict
Choisissez votre langage et copiez l'exemple ci-dessous. Remplacez fb_live_xxx par votre vraie clé.
# Analyse d'un mail suspect
curl -X POST https://fiabli.io/api/v1/analyze \
-H "Authorization: Bearer fb_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"subject": "URGENT - Mise à jour carte vitale",
"from": "noreply@am3li-secure.com",
"to": "compta@example.fr",
"body_text": "Cher assuré, votre carte vitale expire. Cliquez ici : https://am3li-renew.com/login",
"urls": ["https://am3li-renew.com/login"]
}'
import requests
response = requests.post(
"https://fiabli.io/api/v1/analyze",
headers={"Authorization": "Bearer fb_live_xxxxxxxxxxxx"},
json={
"subject": mail.subject,
"from": mail.from_email,
"to": mail.to_email,
"body_text": mail.body,
}
)
result = response.json()
if result["data"]["verdict"] == "phishing":
quarantine(mail)
const r = await fetch("https://fiabli.io/api/v1/analyze", {
method: "POST",
headers: {
"Authorization": "Bearer fb_live_xxxxxxxxxxxx",
"Content-Type": "application/json"
},
body: JSON.stringify({
subject: mail.subject,
from: mail.from,
body_text: mail.bodyText
})
});
const { data } = await r.json();
if (data.verdict === "phishing") quarantine(mail);
$ch = curl_init("https://fiabli.io/api/v1/analyze");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer fb_live_xxxxxxxxxxxx",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"subject" => $mail->subject,
"from" => $mail->from,
"body_text" => $mail->body
])
]);
$result = json_decode(curl_exec($ch), true);
Réponse
{
"success": true,
"data": {
"analysis_id": "fa_a8f3k2x9",
"verdict": "phishing",
"score": 0.92,
"confidence": 0.88,
"model": "fiabli-detect-v1",
"reasons": [
"Domaine expéditeur typosquatté de ameli.fr (am3li-secure.com)",
"URL suspecte avec demande de credentials (am3li-renew.com)",
"Urgence artificielle classique du phishing"
],
"indicators": {
"impersonation": true,
"urgency_pressure": true,
"suspicious_links": true,
"credential_request": true,
"brand_spoofing": "Ameli"
},
"cost_eur": 0.0021
},
"quota": { "used": 47, "limit": 1000, "remaining": 953 }
}
Endpoints
Analyse un email et retourne un verdict safe, suspicious ou phishing avec score, indicateurs et recommandation.
Corps de la requête
| Champ | Type | Description |
|---|---|---|
| subjectrequis | string | Sujet du mail |
| fromrequis | string | Email de l'expéditeur |
| toopt | string | Email du destinataire (utile pour règles tenant) |
| body_textrequis | string | Corps texte (max 4000 chars analysés par le LLM) |
| body_htmlopt | string | Corps HTML (extraction URLs renforcée) |
| urlsopt | array<string> | URLs présentes dans le mail |
| headersopt | object | Headers SMTP (SPF, DKIM, DMARC, Reply-To) |
| raw_emailopt | string (base64) | EML brut (alternative aux champs ci-dessus) |
Récupère une analyse précédente par son ID (cache 30 jours).
curl https://fiabli.io/api/v1/analyses/fa_a8f3k2x9 \
-H "Authorization: Bearer fb_live_xxxxxxxxxxxx"
Liste paginée des analyses du tenant.
Paramètres query
| Param | Type | Description |
|---|---|---|
| from | date | Début période (YYYY-MM-DD) |
| to | date | Fin période |
| verdict | enum | safe / suspicious / phishing |
| limit | int | Défaut 50, max 200 |
| offset | int | Défaut 0 |
curl "https://fiabli.io/api/v1/analyses?verdict=phishing&from=2026-01-01&limit=100" \
-H "Authorization: Bearer fb_live_xxxxxxxxxxxx"
Gère la liste blanche tenant (expéditeurs/domaines toujours considérés comme sûrs).
curl -X POST https://fiabli.io/api/v1/whitelist \
-H "Authorization: Bearer fb_live_xxxxxxxxxxxx" \
-d '{"type":"domain","value":"facturation.fournisseur.fr","note":"Fournisseur principal"}'
Gère la liste noire tenant (toujours marqué phishing avec score 0.95).
Quota et consommation API du tenant courant.
{
"success": true,
"data": {
"plan_code": "api_growth",
"plan_name": "API Growth",
"used": 1542,
"limit": 5000,
"percent": 31,
"last_24h_count": 87,
"last_24h_cost_eur": 0.182
}
}
Codes d'erreur
| Code HTTP | Code machine | Description |
|---|---|---|
| 200 | — | Requête réussie |
| 400 | bad_request | Paramètres invalides ou manquants |
| 401 | missing_authorization · invalid_api_key | Clé absente ou non reconnue |
| 403 | scope_required | La clé n'a pas le scope requis (ex: write) |
| 404 | not_found | Ressource introuvable |
| 429 | quota_exceeded · rate_limited | Quota mensuel atteint ou rate limit |
| 500 | internal_error | Erreur serveur (réessayer avec backoff exponentiel) |
Quotas et tarification
Tous les plans incluent les fonctionnalités API. Le quota est mensuel et se recharge le 1er du mois.
| Plan | Tarif | Quota inclus | Surplus |
|---|---|---|---|
| Discovery | Gratuit | 100 analyses / mois | — |
| Starter | 9€/mois | 1 000 analyses / mois | 0,01€/analyse |
| Growth | 29€/mois | 5 000 analyses / mois | 0,008€/analyse |
| Scale | 99€/mois | 25 000 analyses / mois | 0,005€/analyse |
| Enterprise | Sur devis | illimité (réservé) | négocié |
Rate limits
- 10 requêtes/seconde par clé (burst toléré jusqu'à 30 sur 5s)
- Header
Retry-Afterretourné en cas de 429 - Conseil : implémenter un backoff exponentiel en cas de 429 ou 5xx
Webhooks (asynchrone)
Pour les volumes importants, vous pouvez recevoir le verdict en push HTTP POST plutôt qu'en réponse synchrone.
Configurer un webhook
curl -X POST https://fiabli.io/api/v1/webhooks \
-H "Authorization: Bearer fb_live_xxxxxxxxxxxx" \
-d '{
"url": "https://votre-app.com/fiabli/callback",
"events": ["analysis.completed", "analysis.phishing_detected"],
"secret": "whsec_a8f3k2x9..."
}'
secret. Vérifiez la signature via le header X-Fiabli-Signature.SDK officiels
Bibliothèques tierces communautaires (le SDK officiel sort en Q3 2026) :
- Python :
pip install fiabli— github.com/fiabli/python-sdk - Node.js :
npm install fiabli-sdk— github.com/fiabli/node-sdk - PHP :
composer require fiabli/fiabli-php
Prêt à intégrer Fiabli ?
Créez votre première clé API gratuitement. 100 analyses offertes / mois, aucune carte bancaire requise.
Créer ma clé API gratuite →