GET /v1/intensity/date
série historique sur un intervalle [from, to) (RFC 3339), national par défaut.
L’API carbon-fr expose l’intensité carbone de l’électricité française en gCO₂eq/kWh, au pas quart d’heure, pour le national et les 12 régions métropolitaines. Une surface REST, lisible, dont chaque réponse porte sa méthodologie et son millésime.
carbon-fr re-traite la donnée ouverte RTE/éCO2mix (via ODRÉ) et la sert depuis sa propre base : vous interrogez une API stable, sans subir le quota ni la forme brute de la source. Les réponses de succès sont en application/json (UTF-8) ; les erreurs suivent le format Problem Details (RFC 9457) en application/problem+json.
/intensity/now, /mix, /intensity/date) et la valeur créée par modélisation (/intensity/forecast, /greenest-window), qui n’existe pas dans la source.
Les endpoints de lecture sont publics : aucune clé n’est requise au lancement. Le quota de 50 000 appels/mois imposé par la source est absorbé par construction — un poller unique alimente la base, l’API sert tous les clients depuis la base. Vous n’héritez jamais de ce plafond.
/v1/webhooks) exigent une clé d’API (Authorization: Bearer) ; le contrat de lecture reste public.
Trois notions traversent toute l’API. Les comprendre, c’est lire correctement n’importe quelle réponse.
L’intensité est toujours exprimée en gCO₂eq/kWh (entier). Chaque point porte un timestamp RFC 3339 en UTC (suffixe Z) ; un from/to reçu avec un décalage (+02:00) est accepté et renvoyé en UTC. Les durées (horizon, fenêtre, intervalle) suivent ISO 8601 : PT15M, PT48H, PT2H.
Un chiffre n’est comparable que si sa méthode est explicite. Chaque réponse porte un objet methodology (identifiant + version sémantique). Une nouvelle méthode est une nouvelle version — jamais une modification silencieuse.
| methodology.id | Statut | Description |
|---|---|---|
| rte-direct | disponible | Estimation RTE reprise telle quelle : émissions directes de la production d’électricité en France. Comparable à éCO2mix. |
| acv-ademe | disponible | Cycle de vie (Base Carbone ADEME), national et 12 régions : version=1 basée production (défaut), version=2 basée consommation (imports ENTSO-E + pertes, national). Coexiste avec rte-direct (ADR-0010). |
La donnée RTE est révisée dans le temps. Chaque mesure porte un vintage ; l’API sert toujours la meilleure version connue et l’expose, pour que vous sachiez si vous lisez du provisoire ou du définitif.
| vintage | Qualité | Disponibilité |
|---|---|---|
| tr | temps réel — télémesures + estimations | au fil de l’eau |
| consolidated | vérifiée et complétée | ~ milieu du mois M+1 |
| definitive | comptages vérifiés | année A+1 |
Ordre de qualité : definitive > consolidated > tr.
Le paramètre region accepte national (défaut) ou l’un des 12 slugs régionaux métropolitains ci-dessous (les codes INSEE sont également acceptés) — catalogue servi par GET /v1/regions.
auvergne-rhone-alpesbourgogne-franche-comtebretagnecentre-val-de-loiregrand-esthauts-de-franceile-de-francenormandienouvelle-aquitaineoccitaniepays-de-la-loireprovence-alpes-cote-d-azur/v1/intensity/datesérie historique sur un intervalle [from, to) (RFC 3339), national par défaut.
/v1/intensity/indexcatalogue du barème de l'index qualitatif (ADR-0033, index@1) : les cinq bandes very-low → very-high, leurs bornes ([min, max[, gCO₂eq/kWh) et la source de chaque borne. Même rôle que /v1/factors pour l'ACV : la légende est auditable ; la carte /hydrogene la lit au chargement au lieu de coder ses classes en dur.
/v1/intensity/nowdernière intensité carbone connue.
/v1/intensity/now/alldernière intensité de chaque région en un appel (plan I8, PROD-API-2) : une requête au read-model pour national + 12 régions, au lieu de 13 appels à /v1/intensity/now.
/v1/intensity/statsrésumé (moyenne/min/ max) sur [from, to), et série agrégée par pas si interval=hour|day.
/v1/mixmix de production de la dernière mesure.
/v1/exchangeséchanges transfrontaliers : flux net signé par frontière (> 0 = import vers la France) + intensité carbone du voisin (ADR-0017). Donnée ENTSO-E déjà ingérée pour acv-ademe@2, servie au pas quart d'heure, alignée sur la dernière mesure nationale. 404 si aucun snapshot frais (≤ 1 h de la dernière mesure) n'est disponible — un contexte périmé (panne d'ingestion) n'est pas servi comme courant.
/v1/exchanges/datesérie historique des échanges transfrontaliers sur un intervalle RFC 3339 (fenêtre ≤ 92 jours, série dense), au pas quart d'heure (ADR-0017).
/v1/weathermétéo nationale courante (vent à 100 m, irradiance ; moyenne 7 points), ADR-0012/0018. Données Open-Meteo (CC-BY 4.0, attribuées).
/v1/weather/datesérie météo historique (vent + irradiance) sur un intervalle RFC 3339 (fenêtre ≤ 92 jours, série dense), ADR-0012/0018.
/v1/renewableproduction renouvelable estimée depuis la météo courante (modèle calibré au démarrage, ADR-0018) + facteur de charge. Le moat rendu visible : « given le vent/soleil actuels, voici la production attendue ». 503 si le modèle n'a pas pu être calibré (historique insuffisant).
/v1/cost-referencecouche comparative LCOE (ADR-0024).
/v1/pricedécomposition complète du prix payé (ADR-0023).
/v1/price/datesérie de décompositions de prix sur un intervalle RFC 3339 (fenêtre ≤ 92 jours), pour la primitive « cheapest + greenest window » (ADR-0023). National uniquement. Les créneaux sans prix spot frais (≤ 6 h) sont omis — jamais de report d'un prix périmé (trou d'ingestion ENTSO-E).
/v1/eligibility/rulesetscatalogue des cadres et rulesets versionnés d'éligibilité électrolyseur (ADR-0025/0026). Vérifiabilité + neutralité.
/v1/intensity/forecastsérie d'intensité prévue sur l'horizon, par le modèle climatology@1 (ADR-0009).
/v1/intensity/greenest-windowcréneau le plus bas-carbone à venir, sur la prévision climatology@1 (ADR-0009). Avec ?eligibility=, annote chaque créneau d'un verdict d'éligibilité électrolyseur (ADR-0025/0026).
/v1/intensity/belowtous les créneaux prévus d'intensité sous threshold (gCO₂eq/kWh) sur l'horizon (ADR-0014).
/v1/intensity/streamflux live (Server-Sent Events) des mises à jour du read-model, poussées à la cadence du poller (ADR-0014 §2).
/v1/scheduleplanifie un job : créneau contigu le plus bas-carbone (avant une échéance optionnelle) + économie carbone vs « maintenant » (ADR-0014).
/v1/schedule/slotsles count créneaux les moins intenses sur l'horizon (job divisible, interruptibilité supposée parfaite, ADR-0014).
/v1/factorstable des facteurs d'émission d'une méthode (ADR-0010 §7).
/v1/methodologiescatalogue des méthodes carbone + versions (ADR-0010 §7).
/v1/regionscatalogue statique des régions servies (slug, libellé, code INSEE) : les valeurs acceptées par le paramètre region (plan I8, PROD-API-5). National d'abord, puis les 12 régions métropolitaines, dans l'ordre de /v1/intensity/now/all.
/healthsonde de disponibilité (hors contrat d'API versionné).
/health/readysonde de readiness : vérifie l'accès à la base (lecture légère). 503 si la base est injoignable → le proxy/monitoring cesse d'y router le trafic (distinct de /health, liveness statique).
/v1/statsstatistiques de consultation.
/v1/stats/visitenregistre une visite (unique par IP/jour, IP hachée jamais stockée) et renvoie les statistiques à jour.
/v1/webhooksliste les abonnements de la clé. Auth requise.
/v1/webhookscrée un abonnement webhook (ADR-0016). Auth requise. Le secret de signature est renvoyé une seule fois.
/v1/webhooks/{id}supprime un abonnement possédé par la clé.