Le Vent APIv1
Obtenir une clé
API REST en lecture seule

Données vent & houle
pour développeurs

Accédez en temps réel aux mesures de 5 500+ stations vent et 22 bouées houlographes sur le littoral français. Données agrégées, normalisées, prêtes à l'emploi.

Base URLhttps://api.levent.live/api
AuthentificationHeader X-API-Key
FormatJSON
Rate limit120 requêtes / minute
Refresh stationsToutes les 2 minutes
Refresh bouéesToutes les 5 minutes
Historique max7 jours (168h)

Authentification

Toutes les requêtes nécessitent une clé API envoyée via le header X-API-Key.

bash
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.

1Lister toutes les stations en ligne
curl
curl -H "X-API-Key: VOTRE_CLE" \
  "https://api.levent.live/api/all-stations?online=true"
2Filtrer par zone géographique
curl
# 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"
3Récupérer l'historique d'une station
curl
curl -H "X-API-Key: VOTRE_CLE" \
  "https://api.levent.live/api/all-stations?history=meteofrance_29075001&hours=24"

Stations vent

GET/api/all-stations

Retourne toutes les stations vent avec leurs mesures temps réel, normalisées dans un schéma unique. Les données sont agrégées depuis 15 sources et rafraîchies toutes les 2 minutes.

Paramètres query
source
string
Filtrer par source(s), séparées par virgules. Ex: meteofrance,pioupiou
bbox
string
Bounding box : latMin,lonMin,latMax,lonMax. Ex: 47.2,-5,48.9,-1
online
string
Filtrer les stations en ligne. Valeur: "true"
Réponse
json
{
  "stations": [
    {
      "id": "29075001",
      "stableId": "meteofrance_29075001",
      "name": "Brest",
      "lat": 48.44,
      "lon": -4.41,
      "wind": 12.5,
      "gust": 18.3,
      "direction": 220,
      "temperature": 14.2,
      "humidity": 68,
      "pressure": 1013.2,
      "altitude": 94,
      "source": "meteofrance",
      "ts": "2026-04-10T14:12:00Z",
      "isOnline": true
    }
  ],
  "count": 5524,
  "sources": {
    "meteofrance": 102,
    "windfrance": 16,
    "pioupiou": 616,
    "gowind": 329,
    "gowind-native": 11,
    "netatmo": 2203,
    "ndbc": 6,
    "diabox": 6,
    "infoclimat": 56,
    "ipma": 153,
    "weameter": 4,
    "fildair": 1,
    "aprs": 12,
    "weathercloud": 2009
  },
  "cachedAt": "2026-04-29T14:10:00Z",
  "refreshInterval": 120
}

Note : la clé gowind dans sources agrège Holfuy + Windguru (servies via le même endpoint amont). Au niveau des stations individuelles, le champ source reste holfuy ou windguru selon la balise.

Historique station

GET/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.

Paramètres query
historyrequis
string
Identifiant de la station. Ex: meteofrance_29075001, pioupiou_110
hours
number
Nombre d'heures (1–168). Défaut: 6
Réponse
json
{
  "stationId": "meteofrance_29075001",
  "name": "Brest",
  "source": "meteofrance",
  "hours": 24,
  "count": 240,
  "observations": [
    {
      "ts": "2026-04-09T14:12:00Z",
      "wind": 8.3,
      "gust": 12.1,
      "direction": 210,
      "temperature": 12.5
    }
  ]
}

Bouées houlographes

GET/api/all-buoys

Retourne toutes les bouées CANDHIS avec les données houle en temps réel. Rafraîchi toutes les 5 minutes.

Paramètres query
region
string
Filtrer par région. Ex: Bretagne, mediterranee
bbox
string
Bounding box : latMin,lonMin,latMax,lonMax
Réponse
json
{
  "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": 22,
  "cachedAt": "2026-04-10T14:10:00Z",
  "refreshInterval": 300
}

Historique bouée

GET/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é.

Paramètres query
historyrequis
string
Identifiant de la bouée. Ex: 02911, 01305
Réponse
json
{
  "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

SourceIdentifiantStations
Météo Francemeteofrance~102
Wind Francewindfrance16
Pioupioupioupiou~620
Holfuyholfuy~280
Windguruwindguru~55
GoWind Nativegowind-native~11
Netatmonetatmo~2 200
Infoclimatinfoclimat~55
IPMAipma~150
NDBCndbc~6
Diaboxdiabox~6
Weameterweameter~4
Fildairfildair1
APRSaprs~12
Weathercloudweathercloud~2 000
CANDHIS(all-buoys)~22

Schéma des objets

StationObjet retourné par /api/all-stations
idstringIdentifiant brut de la source (ex: 29075001, 12)
stableIdstringIdentifiant globalement unique : <source>_<id> (ex: meteofrance_29075001)
namestringNom de la station
latnumberLatitude (décimal, WGS84)
lonnumberLongitude (décimal, WGS84)
windnumberVent moyen en nœuds (kts, 1 décimale)
gustnumberRafale max en nœuds (kts, 1 décimale)
directionnumberDirection du vent (0–360°, du Nord)
sourcestringIdentifiant de la source (meteofrance, pioupiou, holfuy, windfrance, ...)
tsstring | nullHorodatage ISO 8601 (UTC) de la mesure
isOnlinebooleanStation considérée en ligne (données récentes)
temperaturenumber | nullTempérature en °C (1 décimale)
humiditynumber | nullHumidité relative en % (1 décimale)
pressurenumber | nullPression en hPa (1 décimale)
altitudenumber | nullAltitude en mètres au-dessus du niveau de la mer
BouéeObjet retourné par /api/all-buoys
idstringIdentifiant CANDHIS (ex: 02911)
namestringNom de la bouée
latnumberLatitude
lonnumberLongitude
regionstringRé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 8601

Codes d'erreur

CodeDescription
200OK
401Unauthorized
404Not Found
429Too Many Requests
502Bad Gateway

Limites & bonnes pratiques

120 req/min
Rate limit
Par clé API. Les requêtes au-delà retournent 429. Le header X-RateLimit-Remaining indique le solde.
2–5 min
Cache
Les stations sont cachées 2 min, les bouées 5 min côté serveur. Inutile de poll plus souvent.
168h max
Historique
7 jours de données par requête. Pour les stations, la granularité dépend de la source (6 min à 1h).
~2 MB max
Taille de réponse
La réponse complète (~5 500 stations) fait environ 1.6 MB. Utilisez les filtres bbox / source pour réduire.

Exemples complets

Stations Météo France en Bretagne
curl
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"
Historique 24h + graphique (Python)
python
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["ts"][11:16] 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")
État de la houle en Méditerranée
curl
curl -H "X-API-Key: VOTRE_CLE" \
  "https://api.levent.live/api/all-buoys?region=mediterranee"

Prêt à construire ?

Obtenez votre clé API gratuitement.

Demander une clé API