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 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 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. Les données sont agrégées depuis 9 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": "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

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": [
    {
      "timestamp": "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": 26,
  "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~50
Météo France 2mf2-stations~54
Wind Francewindcornouaille~17
Pioupioupioupiou~580
GoWindgowind~450
GoWind Nativegowind-native~11
Netatmonetatmo~4 900
NDBCndbc~6
Diaboxdiabox~7
CANDHIS(all-buoys)~26

Schéma des objets

StationObjet retourné par /api/all-stations
idstringIdentifiant unique (ex: meteofrance_29075001)
namestringNom de la station
latnumberLatitude
lonnumberLongitude
windnumberVent moyen en noeuds (kts)
gustnumberRafale max en noeuds (kts)
directionnumberDirection du vent (0–360°)
temperaturenumber | nullTempérature en °C
sourcestringIdentifiant de la source
tsstringHorodatage ISO 8601
isOnlinebooleanStation en ligne
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 (6 000+ stations) fait environ 1.5 MB. Utilisez les filtres 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["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")
É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