API v1
Référence complète de l'API REST IndexFacile — authentification, endpoints, exemples. Disponible sur les plans PRO et Cabinet.
L'API v1 permet d'intégrer IndexFacile dans vos outils (Excel, ERP, scripts) en accès direct aux indices et aux calculs.
Plans requis : PRO ou Cabinet. Le plan Solo ne donne pas accès à l'API.
Authentification
Toutes les requêtes API (sauf POST /api/v1/revision) nécessitent une clé API :
Authorization: Bearer if_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Obtenir une clé API
Depuis Mon compte → Clé API → Générer une clé API.
La clé est au format if_ suivi de 48 caractères hexadécimaux. Elle est liée à votre compte et à votre plan.
Révoquer une clé
Depuis Mon compte → Clé API → Révoquer. Toutes les intégrations utilisant cette clé cessent immédiatement de fonctionner.
Rate limiting
| Endpoint | Limite |
|---|---|
| Tous les endpoints API v1 (clé) | 100 req/min par clé |
POST /api/v1/revision (sans clé) | 30 req/min par IP |
En cas de dépassement : réponse 429 Too Many Requests.
Endpoints
GET /api/v1/series
Liste toutes les séries d'indices actives.
Authentification : requise
curl https://indexfacile.fr/api/v1/series \
-H "Authorization: Bearer if_..."
Réponse 200 :
{
"series": [
{ "code": "BT01", "name": "Bâtiment tous corps d'état", "category": "BT" },
{ "code": "SYNTEC", "name": "Indice Syntec", "category": "SYNTEC" }
],
"count": 42
}
GET /api/v1/series/{code}/latest
Dernière valeur publiée pour un indice.
Authentification : requise
curl https://indexfacile.fr/api/v1/series/BT01/latest \
-H "Authorization: Bearer if_..."
Réponse 200 :
{
"code": "BT01",
"value": 1247.3,
"period": "2025-10",
"status": "FINAL"
}
Statuts possibles : FINAL, PROVISIONAL, ESTIMATED
GET /api/v1/series/{code}/values
Historique des valeurs d'un indice avec filtrage par période.
Authentification : requise
Paramètres de requête :
from(optionnel) — période de début, formatYYYY-MMto(optionnel) — période de fin, formatYYYY-MM
curl "https://indexfacile.fr/api/v1/series/BT01/values?from=2024-01&to=2024-12" \
-H "Authorization: Bearer if_..."
Réponse 200 :
{
"code": "BT01",
"values": [
{ "period": "2024-12", "value": 1238.1, "status": "FINAL" },
{ "period": "2024-11", "value": 1235.4, "status": "FINAL" }
]
}
POST /api/v1/revision
Calcule une révision ponctuelle. Ne requiert pas de clé API (rate-limité à 30 req/min/IP).
curl -X POST https://indexfacile.fr/api/v1/revision \
-H "Content-Type: application/json" \
-d '{
"formula_type": "CcagTravaux",
"p0": 100000,
"i0": 1198.5,
"i_current": 1247.3
}'
Corps de la requête :
| Paramètre | Type | Requis | Description |
|---|---|---|---|
formula_type | string | ✅ | CcagTravaux, Syntec, Ilc, Ilat, Irl, Free |
p0 | number | ✅ | Prix initial |
i0 | number | ✅ | Valeur indice de référence |
i_current | number | ✅ | Valeur indice actuelle |
alpha | number | — | Coefficient α (défaut 0,15 pour CCAG) |
beta | number | — | Coefficient β (défaut 0,85 pour CCAG) |
Réponse 200 :
{
"new_price": 103460.0,
"revision_coefficient": 1.0346,
"revision_percent": 3.46,
"formula_applied": "P = P₀ × (0.15 + 0.85 × I/I₀)",
"warnings": []
}
Codes d'erreur
| Code | HTTP | Description |
|---|---|---|
MISSING_API_KEY | 401 | En-tête Authorization absent |
INVALID_API_KEY | 401 | Clé invalide ou révoquée |
SUBSCRIPTION_INACTIVE | 403 | Abonnement expiré |
PLAN_DOES_NOT_INCLUDE_API_ACCESS | 403 | Plan Solo — API non incluse |
RATE_LIMIT_EXCEEDED | 429 | Trop de requêtes |
NOT_FOUND | 404 | Série ou ressource inexistante |
INVALID_PARAMS | 400 | Paramètres invalides ou manquants |
CALCULATION_ERROR | 422 | Erreur de calcul (I₀=0, etc.) |
Exemple Excel (Power Query)
let
ApiKey = "if_...",
Url = "https://indexfacile.fr/api/v1/series/BT01/latest",
Headers = [Authorization = "Bearer " & ApiKey],
Response = Json.Document(Web.Contents(Url, [Headers = Headers])),
Value = Response[value]
in
Value
Voir aussi la page Add-in Excel pour l'intégration native sans Power Query.