Données vent & houle
pour développeurs
Accédez en temps réel aux mesures de 6 000+ stations vent et 26 bouées houlographes sur le littoral français. Données agrégées, normalisées, prêtes à l'emploi.
| Base URL | https://api.levent.live/api |
| Authentification | Header X-API-Key |
| Format | JSON |
| Rate limit | 120 requêtes / minute |
| Refresh stations | Toutes les 2 minutes |
| Refresh bouées | Toutes les 5 minutes |
| Historique max | 7 jours (168h) |
Authentification
Toutes les requêtes nécessitent une clé API envoyée via le header X-API-Key.
curl -H "X-API-Key: votre_cle_ici" \ https://api.levent.live/api/all-stations
Les requêtes sans clé ou avec une clé invalide retournent un 401 Unauthorized. Contactez contact@levent.live pour obtenir une clé gratuite.
Quickstart
Votre premier appel API en 2 minutes.
curl -H "X-API-Key: VOTRE_CLE" \ "https://api.levent.live/api/all-stations?online=true"
# Bretagne : lat 47.2→48.9, lon -5→-1 curl -H "X-API-Key: VOTRE_CLE" \ "https://api.levent.live/api/all-stations?bbox=47.2,-5,48.9,-1&online=true"
curl -H "X-API-Key: VOTRE_CLE" \ "https://api.levent.live/api/all-stations?history=meteofrance_29075001&hours=24"
Stations vent
/api/all-stationsRetourne toutes les stations vent avec leurs mesures temps réel. Les données sont agrégées depuis 9 sources et rafraîchies toutes les 2 minutes.
sourcebboxonline{
"stations": [
{
"id": "meteofrance_29075001",
"name": "Brest",
"lat": 48.44,
"lon": -4.41,
"wind": 12.5,
"gust": 18.3,
"direction": 220,
"temperature": 14.2,
"source": "meteofrance",
"ts": "2026-04-10T14:12:00Z",
"isOnline": true
}
],
"count": 6097,
"sources": {
"meteofrance": 48,
"pioupiou": 580,
"netatmo": 4924,
"gowind": 450,
"..."
},
"cachedAt": "2026-04-10T14:10:00Z",
"refreshInterval": 120
}Historique station
/api/all-stations?history={id}Retourne l'historique d'une station vent. La source est détectée automatiquement depuis le préfixe de l'identifiant.
historyrequishours{
"stationId": "meteofrance_29075001",
"name": "Brest",
"source": "meteofrance",
"hours": 24,
"count": 240,
"observations": [
{
"timestamp": "2026-04-09T14:12:00Z",
"wind": 8.3,
"gust": 12.1,
"direction": 210,
"temperature": 12.5
}
]
}Bouées houlographes
/api/all-buoysRetourne toutes les bouées CANDHIS avec les données houle en temps réel. Rafraîchi toutes les 5 minutes.
regionbbox{
"buoys": [
{
"id": "02911",
"name": "Ile de Batz",
"lat": 48.77,
"lon": -4.02,
"region": "Bretagne",
"depth": 60,
"hm0": 1.2,
"hmax": 2.1,
"tp": 8.5,
"direction": 280,
"spread": 40,
"seaTemp": 12.3,
"lastUpdate": "2026-04-10T14:00:00Z"
}
],
"count": 26,
"cachedAt": "2026-04-10T14:10:00Z",
"refreshInterval": 300
}Historique bouée
/api/all-buoys?history={id}Retourne 7 jours d'historique pour une bouée. Les données sont des agrégats journaliers ou semi-horaires selon la disponibilité.
historyrequis{
"buoyId": "02911",
"name": "Ile de Batz",
"region": "Bretagne",
"count": 368,
"observations": [
{
"timestamp": "2026-04-03T00:00:00Z",
"hm0": 1.1,
"hmax": 1.9,
"tp": 9.2,
"direction": 275
}
]
}Sources de données
| Source | Identifiant | Stations |
|---|---|---|
| Météo France | meteofrance | ~50 |
| Météo France 2 | mf2-stations | ~54 |
| Wind France | windcornouaille | ~17 |
| Pioupiou | pioupiou | ~580 |
| GoWind | gowind | ~450 |
| GoWind Native | gowind-native | ~11 |
| Netatmo | netatmo | ~4 900 |
| NDBC | ndbc | ~6 |
| Diabox | diabox | ~7 |
| CANDHIS | (all-buoys) | ~26 |
Schéma des objets
idstringIdentifiant unique (ex: meteofrance_29075001)namestringNom de la stationlatnumberLatitudelonnumberLongitudewindnumberVent moyen en noeuds (kts)gustnumberRafale max en noeuds (kts)directionnumberDirection du vent (0–360°)temperaturenumber | nullTempérature en °CsourcestringIdentifiant de la sourcetsstringHorodatage ISO 8601isOnlinebooleanStation en ligneidstringIdentifiant CANDHIS (ex: 02911)namestringNom de la bouéelatnumberLatitudelonnumberLongituderegionstringRégion (Bretagne, mediterranee...)depthnumber | nullProfondeur du fond (m)hm0number | nullHauteur significative (m)hmaxnumber | nullHauteur max (m)tpnumber | nullPériode pic (s)directionnumber | nullDirection houle (°)seaTempnumber | nullTempérature mer (°C)lastUpdatestringHorodatage ISO 8601Codes d'erreur
| Code | Description |
|---|---|
| 200 | OK |
| 401 | Unauthorized |
| 404 | Not Found |
| 429 | Too Many Requests |
| 502 | Bad Gateway |
Limites & bonnes pratiques
Exemples complets
curl -H "X-API-Key: VOTRE_CLE" \ "https://api.levent.live/api/all-stations?source=meteofrance&bbox=47.2,-5,48.9,-1&online=true"
import requests
import matplotlib.pyplot as plt
r = requests.get(
"https://api.levent.live/api/all-stations",
headers={"X-API-Key": "VOTRE_CLE"},
params={"history": "meteofrance_29075001", "hours": "24"}
)
data = r.json()
obs = data["observations"]
times = [o["timestamp"][-8:-3] for o in obs] # HH:MM
winds = [o["wind"] for o in obs]
gusts = [o["gust"] for o in obs]
plt.figure(figsize=(12, 4))
plt.fill_between(range(len(winds)), winds, alpha=0.3)
plt.plot(winds, label="Vent moyen")
plt.plot(gusts, label="Rafales", linestyle="--")
plt.title(f"{data['name']} — 24h")
plt.ylabel("Noeuds")
plt.legend()
plt.xticks(range(0, len(times), 10), [times[i] for i in range(0, len(times), 10)], rotation=45)
plt.tight_layout()
plt.savefig("wind_history.png")
print(f"Graph saved: {len(obs)} observations")curl -H "X-API-Key: VOTRE_CLE" \ "https://api.levent.live/api/all-buoys?region=mediterranee"