Previzio

Previzio API

Version 0.1.0

API météo privée : prévisions horaires et par tranche de journée (nuit/matin/après-midi/soir) pour les communes de France métropolitaine, vigilance météo et restrictions d'eau par département, qualité de l'air et pollens par commune. Usage réservé aux sites clients munis d'une clé API.

Importer dans Postman

  1. Menu Import (en haut à gauche)
  2. Onglet Link
  3. Coller l'URL ci-dessous, puis Import
https://previzio.zik.dez.ovh/openapi.json

Monitoring

▸ GET /health Statut d'ingestion

Dernier run et dernière ingestion réussie par modèle source (AROME, ARPEGE). Public, sans authentification — destiné au monitoring externe (UptimeRobot, Better Stack, ...).

Réponses
200 Successful Response
Schéma : HealthResponse
{
  "models": {
    "arome": {
      "last_run_timestamp": "2026-10-06T21:00:00Z",
      "last_success_at": "2026-10-06T21:04:00Z",
      "stale": false
    },
    "arpege": {
      "last_run_timestamp": "2026-10-06T18:00:00Z",
      "last_success_at": "2026-10-06T18:11:00Z",
      "stale": false
    },
    "vigilance": {
      "last_run_timestamp": "2026-10-06T21:04:00Z",
      "last_success_at": "2026-10-06T21:04:00Z",
      "stale": false
    }
  },
  "status": "ok"
}

Prévisions

▸ GET /v1/forecast Prévisions météo par commune 🔒 X-API-Key requis

Renvoie les conditions actuelles, les prévisions horaires et les prévisions par jour (min/max, lever/coucher, tranches nuit/matin/après-midi/soir) pour une ou plusieurs communes. Fournir exactement un des deux paramètres `codes_insee` ou `postal_code`.

Paramètres
NomTypeRequisDescriptionExemple
codes_insee string (query) non Un ou plusieurs codes INSEE séparés par des virgules. 75056,69123
postal_code string (query) non Un code postal (peut correspondre à plusieurs communes). 75001
Réponses
200 Successful Response
Schéma : LocationForecast[]
[
  {
    "code_insee": "75056",
    "nom": "Paris",
    "current": {
      "timestamp": "2026-10-06T15:00:00Z",
      "is_day": true,
      "temperature": 14.2,
      "apparent_temperature": 11.3,
      "precipitation": 0.0,
      "wind_speed": 18.5,
      "wind_direction": 270,
      "wind_gust": 42.0,
      "cloud_cover": 40.0,
      "humidity": 72.0,
      "pressure": 1015.3,
      "visibility": 20000,
      "weather_code": 61,
      "weather_icons": {
        "meteocons": "rain",
        "metno": "lightrain"
      }
    },
    "hourly": [
      {
        "timestamp": "2026-10-06T15:00:00Z",
        "is_day": true,
        "temperature": 14.2,
        "apparent_temperature": 11.3,
        "precipitation": 0.0,
        "wind_speed": 18.5,
        "wind_direction": 270,
        "wind_gust": 42.0,
        "cloud_cover": 40.0,
        "humidity": 72.0,
        "pressure": 1015.3,
        "visibility": 20000,
        "weather_code": 61,
        "weather_icons": {
          "meteocons": "rain",
          "metno": "lightrain"
        }
      }
    ],
    "daily": [
      {
        "date": "2026-10-06",
        "temperature_min": 9.1,
        "temperature_max": 16.4,
        "apparent_temperature_min": 7.4,
        "apparent_temperature_max": 16.4,
        "sunrise": "2026-10-06T05:57:00Z",
        "sunset": "2026-10-06T17:20:00Z",
        "tranches": []
      }
    ]
  }
]
422 Validation Error
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}

Vigilance

▸ GET /v1/vigilance Vigilance météo par département 🔒 X-API-Key requis

Renvoie les niveaux de vigilance Météo-France (vent, pluie-inondation, orages, inondation, neige-verglas, canicule, grand froid, avalanches, vagues-submersion) pour un ou plusieurs domaines, pour les échéances J (aujourd'hui) et J1 (demain). Sans paramètre, renvoie tous les domaines.

Paramètres
NomTypeRequisDescriptionExemple
departements string (query) non Un ou plusieurs codes de domaine séparés par des virgules : département ('2A'/'2B' pour la Corse) ou zone littorale (ex. '8310') pour vagues_submersion. Omis : tous les domaines. 75,69
Réponses
200 Successful Response
Schéma : DomainVigilance[]
[
  {
    "domain_id": "75",
    "updated_at": "2026-10-07T08:03:00Z",
    "vigilance": [
      {
        "phenomene": "orages",
        "echeance": "J",
        "couleur": 2,
        "couleur_libelle": "jaune"
      }
    ]
  }
]
422 Validation Error
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}

Qualité de l'air

▸ GET /v1/air-quality Qualité de l'air et pollens par commune 🔒 X-API-Key requis

Renvoie l'indice ATMO de qualité de l'air (global et par polluant) et l'indice pollinique (global et par taxon) pour une ou plusieurs communes, pour J et J+1 (source Atmo France). Les communes non couvertes par leur AASQA ont une liste `air` vide.

Paramètres
NomTypeRequisDescriptionExemple
codes_insee string (query) oui Un ou plusieurs codes INSEE séparés par des virgules. 75056,69123
Réponses
200 Successful Response
Schéma : AirQuality[]
[
  {
    "code_insee": "75056",
    "updated_at": "2026-10-08T15:39:18Z",
    "air": [
      {
        "date": "2026-10-08",
        "indice": 2,
        "libelle": "Moyen",
        "polluants": {
          "no2": 2,
          "o3": 2,
          "pm10": 1,
          "pm25": 1,
          "so2": 1
        },
        "zone": "commune",
        "source": "Airparif"
      }
    ],
    "pollen": [
      {
        "date": "2026-10-08",
        "indice": 1,
        "libelle": "Très faible",
        "alerte": true,
        "taxons": {
          "ambroisie": 1,
          "graminees": 1
        },
        "source": "Airparif"
      }
    ]
  }
]
422 Validation Error
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}

Restrictions d'eau

▸ GET /v1/water-restrictions Restrictions d'eau / sécheresse par département 🔒 X-API-Key requis

Renvoie le niveau de gravité des restrictions d'eau en vigueur (source VigiEau) pour un ou plusieurs départements : vigilance, alerte, alerte_renforcee, crise — un niveau global et un niveau par type d'eau (superficielle, souterraine, potable). Sans paramètre, renvoie tous les départements.

Paramètres
NomTypeRequisDescriptionExemple
departements string (query) non Un ou plusieurs codes département séparés par des virgules. Omis : tous les départements. 75,69
Réponses
200 Successful Response
Schéma : WaterRestriction[]
[
  {
    "departement": "75",
    "updated_at": "2026-10-07T08:38:00Z",
    "niveau_gravite_max": "alerte",
    "niveau_gravite_sup_max": "alerte",
    "niveau_gravite_sou_max": "vigilance",
    "niveau_gravite_aep_max": "vigilance"
  }
]
422 Validation Error
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}

Schémas

▸ AirQuality
ChampTypeRequisDescriptionValeurs possibles
code_insee string oui Code INSEE de la commune. —
updated_at string | null non Horodatage UTC de la dernière mise à jour (ISO 8601). —
air AirQualityDay[] oui Indice de qualité de l'air pour J et J+1. Vide si ni la commune ni son EPCI ne sont couverts. —
pollen PollenDay[] oui Indice pollinique pour J et J+1. Vide si la commune n'est pas couverte. —
▸ AirQualityDay
ChampTypeRequisDescriptionValeurs possibles
date string oui Jour concerné (YYYY-MM-DD, heure locale). —
indice integer | null non Indice ATMO global : 1 bon, 2 moyen, 3 dégradé, 4 mauvais, 5 très mauvais, 6 extrêmement mauvais. —
libelle string | null non Libellé de l'indice. —
polluants dict[str, integer] oui Sous-indice (même échelle) par polluant : no2, o3, pm10, pm25, so2. —
zone string non 'commune' : valeur propre à la commune ; 'epci' : valeur de l'intercommunalité de la commune (repli, moins précis). commune, epci
source string | null non Association agréée de surveillance de la qualité de l'air (AASQA) source. —
▸ DailyForecast
ChampTypeRequisDescriptionValeurs possibles
date string oui Date locale (fuseau de la commune), ISO 8601. —
temperature_min number | null non Température minimale du jour, en °C (sur les heures prévues ce jour-là : partielle pour le jour en cours). —
temperature_max number | null non Température maximale du jour, en °C (sur les heures prévues ce jour-là : partielle pour le jour en cours). —
apparent_temperature_min number | null non Température ressentie minimale du jour, en °C (mêmes heures que `temperature_min`). —
apparent_temperature_max number | null non Température ressentie maximale du jour, en °C (mêmes heures que `temperature_max`). —
sunrise string | null non Lever du soleil, horodatage UTC (ISO 8601). —
sunset string | null non Coucher du soleil, horodatage UTC (ISO 8601). —
tranches TranchePeriode[] oui Prévisions du jour agrégées par tranche (nuit/matin/après-midi/soir), chronologiques. —
▸ DomainVigilance
ChampTypeRequisDescriptionValeurs possibles
domain_id string oui Code du domaine de vigilance : département (ex. '75', '2A'/'2B' pour la Corse) ou zone littorale (ex. '8310') pour le phénomène vagues-submersion. —
updated_at string | null non Horodatage UTC de la dernière mise à jour de la vigilance (ISO 8601). —
vigilance VigilancePhenomene[] oui Niveaux de vigilance par phénomène et échéance. —
▸ ForecastPoint
ChampTypeRequisDescriptionValeurs possibles
timestamp string oui Horodatage UTC du point de prévision (ISO 8601). —
is_day boolean oui Vrai si le soleil est levé à cet instant (entre lever et coucher du jour local de la commune). —
temperature number | null non Température à 2m, en °C. —
apparent_temperature number | null non Température ressentie, en °C : refroidissement éolien si T ≤ 10 °C (et vent > 4,8 km/h), indice de chaleur si T ≥ 27 °C, sinon la température. —
precipitation number | null non Cumul de précipitations sur l'heure, en mm. —
wind_speed number | null non Vitesse du vent à 10m, en km/h. —
wind_direction integer | null non Direction du vent, en degrés (0-360, 0 = nord). —
wind_gust number | null non Rafales de vent à 10m, en km/h. —
cloud_cover number | null non Couverture nuageuse, en %. —
humidity number | null non Humidité relative, en %. —
pressure number | null non Pression réduite au niveau de la mer, en hPa. —
visibility integer | null non Visibilité minimale sur l'heure, en mètres (plafonnée à 20 000). Null au-delà de ~+48h (non fournie par ARPEGE). —
weather_code integer | null non Code météo WMO (seuils adaptés d'Open-Meteo, cf. _docs/weather-api-architecture.md). —
weather_icons WeatherIcons | null non Nom d'icône par jeu d'icônes, dérivé de weather_code et de l'heure locale (jour/nuit) de la commune. —
▸ HTTPValidationError
ChampTypeRequisDescriptionValeurs possibles
detail ValidationError[] non —
▸ HealthResponse
ChampTypeRequisDescriptionValeurs possibles
status string oui 'ok' si tous les modèles sont à jour, 'degraded' sinon. ok, degraded
models dict[str, ModelStatus] oui Statut d'ingestion par source (arome, arpege, vigilance). —
▸ LocationForecast
ChampTypeRequisDescriptionValeurs possibles
code_insee string oui Code INSEE de la commune. —
nom string oui Nom de la commune. —
current ForecastPoint | null non Conditions actuelles : point horaire de l'heure en cours (identique à `hourly[0]`). Null si aucune prévision. —
hourly ForecastPoint[] oui Prévisions horaires, triées chronologiquement, jusqu'à J+4/J+5. —
daily DailyForecast[] oui Les mêmes prévisions regroupées par jour local, avec températures min/max, lever/coucher et tranches. —
▸ ModelStatus
ChampTypeRequisDescriptionValeurs possibles
last_run_timestamp string oui Horodatage du dernier run ingéré pour ce modèle (UTC, ISO 8601). —
last_success_at string oui Horodatage de la dernière ingestion réussie pour ce modèle (UTC, ISO 8601). —
stale boolean oui Vrai si la dernière ingestion réussie date de plus de 6h. —
▸ PollenDay
ChampTypeRequisDescriptionValeurs possibles
date string oui Jour concerné (YYYY-MM-DD, heure locale). —
indice integer | null non Indice pollinique global : 1 = très faible, croissant avec le niveau (se fier au `libelle`). —
libelle string | null non Libellé de l'indice. —
alerte boolean | null non Vrai si une alerte pollen est en cours. —
taxons dict[str, integer] oui Indice par taxon : ambroisie, armoise, aulne, bouleau, graminees, olivier. —
source string | null non Source régionale des données. —
▸ TranchePeriode
ChampTypeRequisDescriptionValeurs possibles
periode string oui Tranche de journée à quarts égaux : nuit (0-6h), matin (6-12h), apres_midi (12-18h), soir (18-24h). nuit, matin, apres_midi, soir
temperature number | null non Température au milieu de la tranche, en °C. —
apparent_temperature number | null non Température ressentie au milieu de la tranche, en °C. —
wind_direction integer | null non Direction du vent au milieu de la tranche, en degrés. —
weather_code integer | null non Code météo WMO le plus sévère de la tranche. —
weather_icons WeatherIcons | null non Nom d'icône par jeu d'icônes, dérivé de weather_code et de l'heure locale (jour/nuit) du milieu de la tranche. —
precipitation number | null non Cumul de précipitations sur la tranche, en mm. —
humidity number | null non Humidité relative moyenne sur la tranche, en %. —
cloud_cover number | null non Couverture nuageuse moyenne sur la tranche, en %. —
wind_speed number | null non Vitesse de vent maximale sur la tranche, en km/h. —
wind_gust number | null non Rafales maximales sur la tranche, en km/h. —
pressure number | null non Pression au niveau de la mer au milieu de la tranche, en hPa. —
visibility integer | null non Visibilité minimale sur la tranche, en mètres. —
▸ ValidationError
ChampTypeRequisDescriptionValeurs possibles
loc string[] oui —
msg string oui —
type string oui —
input string non —
ctx object non —
▸ VigilancePhenomene
ChampTypeRequisDescriptionValeurs possibles
phenomene string oui Type de phénomène : vent, pluie_inondation, orages, inondation, neige_verglas, canicule, grand_froid, avalanches, vagues_submersion. —
echeance string oui Échéance : J (aujourd'hui) ou J1 (demain). J, J1
couleur integer oui Niveau de vigilance : 1 (vert), 2 (jaune), 3 (orange), 4 (rouge). —
couleur_libelle string oui Libellé du niveau de vigilance. —
▸ WaterRestriction
ChampTypeRequisDescriptionValeurs possibles
departement string oui Code département. —
updated_at string | null non Horodatage UTC de la dernière mise à jour (ISO 8601). —
niveau_gravite_max string | null non Niveau de gravité maximum, tous types d'eau confondus. Absent pour certains départements non couverts par VigiEau (ex. une partie des DOM-TOM). vigilance, alerte, alerte_renforcee, crise
niveau_gravite_sup_max string | null non Niveau de gravité max pour l'eau superficielle (rivières, cours d'eau). vigilance, alerte, alerte_renforcee, crise
niveau_gravite_sou_max string | null non Niveau de gravité max pour l'eau souterraine (nappes). vigilance, alerte, alerte_renforcee, crise
niveau_gravite_aep_max string | null non Niveau de gravité max pour l'eau potable (alimentation en eau potable). vigilance, alerte, alerte_renforcee, crise
▸ WeatherIcons
ChampTypeRequisDescriptionValeurs possibles
meteocons string oui Nom d'icône dans le jeu meteocons (basmilius/meteocons). —
metno string oui Nom d'icône dans le jeu metno (MET Norway weathericons). —