GribStream

Documentazione dell'API meteo

Questa API dà accesso ai dati di previsione meteo per tutti i modelli. Puoi recuperare dati meteo storici e previsioni specificando parametri come intervallo temporale, coordinate e variabili di interesse.

Puoi usare il nostro client Python su GitHub oppure integrare direttamente gli endpoint con i dettagli qui sotto.

Se stai integrando GribStream con uno strumento di IA, inizia da GribStream per strumenti di IA.

Endpoint Timeseries

Per una coordinata, un parametro meteorologico e un intervallo temporale, possono esistere più valori previsti. Ogni valore corrisponde a un diverso orizzonte di previsione, cioè a un diverso lead time.

L'API restituisce, per ogni orario, il valore previsto con il lead time più breve. In pratica ricevi la previsione più recente disponibile in quel momento, spesso la più utile per analisi e applicazioni operative. Nei workflow di data science questa serie viene spesso chiamata previsione "best" (migliore disponibile) o serie "nowcast".

POST https://gribstream.com/api/v2/<model>/timeseries

Rinominato Prima era /history. Il vecchio percorso continua a funzionare.

Modelli disponibili

Header della richiesta

Header Valore Nota
Content-Type application/json Valore default e unico valore valido.
Accept Scegli uno:
text/csv
application/json
application/ndjson
Seleziona il formato della risposta. Il default è text/csv
Accept-Encoding gzip Opzionale ma consigliato, per ricevere una risposta compressa
Authorization Bearer <token> Sostituisci <token> con il tuo token di autenticazione

Parametri del corpo della richiesta

Il corpo della richiesta (request body) deve essere un oggetto JSON con la seguente struttura:

Parametro Tipo Descrizione Obbligatorio
fromTime string (ISO 8601) Orario di inizio del periodo di previsione. Sì, usando (fromTime, untilTime) oppure timesList
untilTime string (ISO 8601) Orario di fine del periodo di previsione. Sì, usando (fromTime, untilTime) oppure timesList
timesList array di string (ISO 8601) Lista esplicita degli orari di validità da restituire; ogni valore corrisponde a forecasted_time. Sì, usando (fromTime, untilTime) oppure timesList
asOf string (ISO 8601) Timestamp di cutoff/riferimento: vengono considerati solo i run del modello generati in quel momento o prima. No
minLeadTime string (duration) Lead time minimo, incluso. Stringa di durata come "45m" o "18h". Ha precedenza su minHorizon/maxHorizon. No
maxLeadTime string (duration) Lead time massimo, incluso. Stringa di durata come "45m" o "18h". Ha precedenza su minHorizon/maxHorizon. No
minHorizon integer Deprecato (usa minLeadTime). Lead time minimo in ore, incluso. No
maxHorizon integer Deprecato (usa maxLeadTime). Lead time massimo in ore, incluso. No
coordinates array di coordinate Lista di coordinate geografiche. Opzionale quando fornisci grid; puoi inviare entrambe. Sì: devi fornire almeno uno tra coordinates e grid
grid oggetto grid Dominio rettangolare regolare.
Il server restituisce ogni punto entro i limiti indicati, usando lo step spaziale richiesto. Può essere usato insieme a coordinates.
Sì: devi fornire almeno uno tra coordinates e grid
variables array di variable Lista di variabili meteorologiche da recuperare. Sì
expressions array di expression Colonne calcolate sul server a partire dalle variabili richieste. Ogni voce viene restituita come colonna separata, usando l'alias fornito. Vedi la documentazione No
filter oggetto filter Filtro booleano applicato dopo aver valutato tutte le expressions. Deve contenere un unico campo expression di tipo string. Le righe in cui l'espressione valuta a false vengono omesse dalla risposta. No
members array di integer Per i modelli ensemble (gefsatmos, ifsenfo, ifswaef …) questo campo seleziona quali membri dell'ensemble includere nella risposta.
Esempio: "members": [2,3,4].
Il default è [0], cioè solo il membro 0, la previsione di controllo.
No (solo modelli ensemble)

NOTA: l'orario selezionato deve essere specificato con l'intervallo (fromTime, untilTime) oppure con timesList

Oggetto Coordinate

Campo Tipo Descrizione Obbligatorio
lat float Latitudine della coordinata. Sì
lon float Longitudine della coordinata. Sì
name string Nome opzionale per la coordinata, restituito nella risposta per identificare meglio la località. No

Oggetto Grid

Campo Tipo Descrizione Obbligatorio
minLatitude number Bordo meridionale (°N) Sì
maxLatitude number Bordo settentrionale (°N) Sì
minLongitude number Bordo occidentale (°E) Sì
maxLongitude number Bordo orientale (°E) Sì
step number Risoluzione in gradi decimali Sì

Oggetto Variable

I campi name, level e info formano il selettore esatto della variabile meteorologica. Copia questi valori dal catalogo o dalla pagina del modello: sono identificatori API, non etichette da tradurre.

Campo Tipo Descrizione Obbligatorio
name string Codice esatto del parametro meteorologico dal catalogo, per esempio "TMP" per la temperatura. Non tradurlo. Sì
level string Livello atmosferico o di superficie esatto dal catalogo, per esempio "2 m above ground". Sì
info string Differenziatore esatto usato quando il modello ha più parametri con lo stesso name e level. Lascialo vuoto solo quando il valore nel catalogo è vuoto. No
alias string Alias opzionale per la variabile. Se lo fornisci, questo alias viene usato come intestazione di colonna nella risposta. No

Oggetto Expression

Campo Tipo Descrizione Obbligatorio
expression string Crea colonne calcolate. Tutte le variabili selezionate sono accessibili tramite il loro alias.
Vedi la documentazione
Sì
alias string Nome della colonna usato nella risposta per questo risultato calcolato. Sì

Oggetto Filter

Campo Tipo Descrizione Obbligatorio
expression string Espressione booleana nello stesso DSL usato da expressions. Può fare riferimento ad alias definiti in precedenza nel corpo della richiesta. Sì

Richiesta di esempio

POST https://gribstream.com/api/v2/hrrr/timeseries
Content-Type: application/json
Accept-Encoding: gzip
Authorization: Bearer <token>
Payload:
{
    "fromTime": "2024-09-10T00:00:00Z",
    "untilTime": "2024-09-10T10:00:00Z",
    "asOf": "2024-09-10T05:00:00Z",
    "minLeadTime": "1h",
    "maxLeadTime": "48h",
    "coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
    "variables": [
        { "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
        { "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
    ],
    "expressions": [
        { "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
        { "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
    ]
}

Risposta di esempio

Il formato della risposta è determinato dall'header Accept. L'API supporta tre formati di risposta:

Se includi l'header Accept-Encoding: gzip, la risposta viene compressa con gzip.

NOTA: la risposta non è strettamente ordinata.

Esempio di risposta CSV

forecasted_at,forecasted_time,lat,lon,name,uwind,vwind,wind_direction,wind_magnitude
2024-09-10T02:00:00Z,2024-09-10T03:00:00Z,40.7306,-73.9352,New York City,7.1213,1.7680,256,7.3375
2024-09-10T05:00:00Z,2024-09-10T08:00:00Z,40.7306,-73.9352,New York City,5.2585,-1.1512,282,5.3831
2024-09-10T01:00:00Z,2024-09-10T02:00:00Z,40.7306,-73.9352,New York City,8.1815,1.6363,258,8.3435
2024-09-10T05:00:00Z,2024-09-10T07:00:00Z,40.7306,-73.9352,New York City,6.9156,-1.4414,281,7.0642
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,40.7306,-73.9352,New York City,8.0572,2.9389,249,8.5765
2024-09-10T03:00:00Z,2024-09-10T04:00:00Z,40.7306,-73.9352,New York City,6.4841,2.5385,248,6.9633
2024-09-10T05:00:00Z,2024-09-10T06:00:00Z,40.7306,-73.9352,New York City,6.8368,0.1001,269,6.8375
2024-09-10T04:00:00Z,2024-09-10T05:00:00Z,40.7306,-73.9352,New York City,6.4087,3.0921,244,7.1157
2024-09-09T23:00:00Z,2024-09-10T00:00:00Z,40.7306,-73.9352,New York City,6.1795,3.9539,237,7.3362
2024-09-10T05:00:00Z,2024-09-10T09:00:00Z,40.7306,-73.9352,New York City,4.7715,-0.5644,276,4.8047

Esempio di risposta JSON (array JSON)

[{"forecasted_at":"2024-09-10T02:00:00Z","forecasted_time":"2024-09-10T03:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.121286392211914,"vwind":1.7680130004882812,"wind_direction":256,"wind_magnitude":7.337478439477567}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T01:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.057228088378906,"vwind":2.938892364501953,"wind_direction":249,"wind_magnitude":8.576480210336284}
,{"forecasted_at":"2024-09-10T01:00:00Z","forecasted_time":"2024-09-10T02:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.181510925292969,"vwind":1.6362571716308594,"wind_direction":258,"wind_magnitude":8.34352794400556}
,{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T06:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.836750030517578,"vwind":0.10012435913085938,"wind_direction":269,"wind_magnitude":6.837483152964509}
,{"forecasted_at":"2024-09-09T23:00:00Z","forecasted_time":"2024-09-10T00:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.179473876953125,"vwind":3.953920364379883,"wind_direction":237,"wind_magnitude":7.33616954846356}
,{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T07:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.915561676025391,"vwind":-1.4414329528808594,"wind_direction":281,"wind_magnitude":7.064185887458082}
,{"forecasted_at":"2024-09-10T03:00:00Z","forecasted_time":"2024-09-10T04:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.484088897705078,"vwind":2.538473129272461,"wind_direction":248,"wind_magnitude":6.963279016482147}
,{"forecasted_at":"2024-09-10T04:00:00Z","forecasted_time":"2024-09-10T05:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.408748626708984,"vwind":3.0920562744140625,"wind_direction":244,"wind_magnitude":7.115677828885149}
,{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T08:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":5.258523941040039,"vwind":-1.1512451171875,"wind_direction":282,"wind_magnitude":5.383069696589422}
,{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T09:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":4.771465301513672,"vwind":-0.564422607421875,"wind_direction":276,"wind_magnitude":4.804732459078015}
]

Esempio di risposta NDJSON (delimitata per righe)

{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T07:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.915561676025391,"vwind":-1.4414329528808594,"wind_direction":281,"wind_magnitude":7.064185887458082}
{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T08:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":5.258523941040039,"vwind":-1.1512451171875,"wind_direction":282,"wind_magnitude":5.383069696589422}
{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T09:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":4.771465301513672,"vwind":-0.564422607421875,"wind_direction":276,"wind_magnitude":4.804732459078015}
{"forecasted_at":"2024-09-10T05:00:00Z","forecasted_time":"2024-09-10T06:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.836750030517578,"vwind":0.10012435913085938,"wind_direction":269,"wind_magnitude":6.837483152964509}
{"forecasted_at":"2024-09-10T03:00:00Z","forecasted_time":"2024-09-10T04:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.484088897705078,"vwind":2.538473129272461,"wind_direction":248,"wind_magnitude":6.963279016482147}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T01:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.057228088378906,"vwind":2.938892364501953,"wind_direction":249,"wind_magnitude":8.576480210336284}
{"forecasted_at":"2024-09-09T23:00:00Z","forecasted_time":"2024-09-10T00:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.179473876953125,"vwind":3.953920364379883,"wind_direction":237,"wind_magnitude":7.33616954846356}
{"forecasted_at":"2024-09-10T01:00:00Z","forecasted_time":"2024-09-10T02:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.181510925292969,"vwind":1.6362571716308594,"wind_direction":258,"wind_magnitude":8.34352794400556}
{"forecasted_at":"2024-09-10T04:00:00Z","forecasted_time":"2024-09-10T05:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.408748626708984,"vwind":3.0920562744140625,"wind_direction":244,"wind_magnitude":7.115677828885149}
{"forecasted_at":"2024-09-10T02:00:00Z","forecasted_time":"2024-09-10T03:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.121286392211914,"vwind":1.7680130004882812,"wind_direction":256,"wind_magnitude":7.337478439477567}

Campi della risposta:

Campo Descrizione
forecasted_at Orario del run del modello: quando la previsione è stata generata o emessa.
forecasted_time Orario di validità: l'orario a cui si applica la previsione.
lat Latitudine della coordinata.
lon Longitudine della coordinata.
name Nome fornito nella richiesta per il set di coordinate.
uwind
vwind
wind_direction
wind_magnitude
Una colonna per ogni variabile o espressione derivata. Per default, le variabili usano [name]|[level]|[info].

Note d'uso

Autenticazione

Devi includere un token di autenticazione valido nell'header Authorization. Per ottenere un token,

Includi il token negli header della richiesta in questo modo:

Authorization: Bearer <token>

Comando cURL di esempio

curl -X POST 'https://gribstream.com/api/v2/hrrr/timeseries' \
        -H "Content-Type: application/json" \
        -H "Accept-Encoding: gzip" \
        -H "Authorization: Bearer [API_TOKEN]" \
        -d '{
            "fromTime": "2024-09-10T00:00:00Z",
            "untilTime": "2024-09-10T10:00:00Z",
            "asOf": "2024-09-10T05:00:00Z",
            "minLeadTime": "1h",
            "maxLeadTime": "48h",
            "coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
            "variables": [
              { "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
              { "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
            ],
            "expressions": [
              { "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
              { "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
            ]
        }' | gunzip | head -20

Questo comando recupera i dati di previsione e stampa le prime 20 righe della risposta decompressa.

Gestione degli errori

Se la richiesta contiene un errore, l'API restituisce un messaggio di errore con il codice di stato HTTP appropriato.

Codici di errore comuni

Codice di stato Significato Descrizione
400 Bad Request Parametri della richiesta non validi. Succede quando mancano parametri obbligatori o quando i valori non sono validi.
401 Unauthorized Autenticazione non riuscita. Succede quando il token di autenticazione manca o non è valido.
429 Too Many Requests Quota esaurita. Succede quando esaurisci la quota. La risposta include un header Retry-After con il tempo di attesa prima di riprovare.
500 Internal Server Error Errore del server. Succede quando si verifica un errore durante l'elaborazione della richiesta sul server.

Endpoint Runs

Recupera tutti i run di previsione in un intervallo temporale, per una lista di coordinate e una lista di parametri meteorologici. Puoi anche filtrare per una finestra di lead time con minLeadTime e maxLeadTime.

POST https://gribstream.com/api/v2/<model>/runs

Rinominato Prima era /forecasts. Il vecchio percorso continua a funzionare.

Modelli disponibili

Header della richiesta

Header Valore Nota
Content-Type application/json Valore default e unico valore valido.
Accept Scegli uno:
text/csv
application/json
application/ndjson
Seleziona il formato della risposta. Il default è text/csv
Accept-Encoding gzip Opzionale ma consigliato, per ricevere una risposta compressa
Authorization Bearer <token> Sostituisci <token> con il tuo token di autenticazione

Parametri del corpo della richiesta

Il corpo della richiesta (request body) deve essere un oggetto JSON con la seguente struttura:

Parametro Tipo Descrizione Obbligatorio
forecastedFrom string (ISO 8601) Primo orario del run di previsione da includere. Sì, usando (forecastedFrom, forecastedUntil) oppure timesList
forecastedUntil string (ISO 8601) Ultimo orario del run di previsione da includere. Sì, usando (forecastedFrom, forecastedUntil) oppure timesList
timesList array di string (ISO 8601) Lista esplicita degli orari dei run del modello; ogni valore corrisponde a forecasted_at. Sì, usando (forecastedFrom, forecastedUntil) oppure timesList
minLeadTime string (duration) Lead time minimo, incluso. Stringa di durata come "45m" o "18h". Ha precedenza su minHorizon/maxHorizon. No
maxLeadTime string (duration) Lead time massimo, incluso. Stringa di durata come "45m" o "18h". Ha precedenza su minHorizon/maxHorizon. No
minHorizon integer Deprecato (usa minLeadTime). Lead time minimo in ore, incluso. No
maxHorizon integer Deprecato (usa maxLeadTime). Lead time massimo in ore, incluso. No
coordinates array di coordinate Lista di coordinate geografiche. Sì: devi fornire almeno uno tra coordinates e grid
grid oggetto grid Dominio rettangolare regolare.
Il server restituisce ogni punto entro i limiti indicati, usando lo step spaziale richiesto. Può essere usato insieme a coordinates.
Sì: devi fornire almeno uno tra coordinates e grid
variables array di variable Lista di variabili meteorologiche da recuperare. Sì
expressions array di expression Colonne calcolate sul server a partire dalle variabili richieste. Ogni voce viene restituita come colonna separata, usando l'alias fornito. Vedi la documentazione No
filter oggetto filter Filtro booleano applicato dopo aver valutato tutte le expressions. Deve contenere un unico campo expression di tipo string. Le righe in cui l'espressione valuta a false vengono omesse dalla risposta. No
members array di integer Per i modelli ensemble (gefsatmos, ifsenfo, ifswaef …) questo campo seleziona quali membri dell'ensemble includere nella risposta.
Esempio: "members": [2,3,4].
Il default è [0], cioè solo il membro 0, la previsione di controllo.
No (solo modelli ensemble)

NOTA: l'orario selezionato deve essere specificato con l'intervallo (forecastedFrom, forecastedUntil) oppure con timesList

Oggetto Coordinate

Campo Tipo Descrizione Obbligatorio
lat float Latitudine della coordinata. Sì
lon float Longitudine della coordinata. Sì
name string Nome opzionale per la coordinata, restituito nella risposta per identificare meglio la località. No

Oggetto Grid

Campo Tipo Descrizione Obbligatorio
minLatitude number Bordo meridionale (°N) Sì
maxLatitude number Bordo settentrionale (°N) Sì
minLongitude number Bordo occidentale (°E) Sì
maxLongitude number Bordo orientale (°E) Sì
step number Risoluzione in gradi decimali Sì

Oggetto Variable

I campi name, level e info formano il selettore esatto della variabile meteorologica. Copia questi valori dal catalogo o dalla pagina del modello: sono identificatori API, non etichette da tradurre.

Campo Tipo Descrizione Obbligatorio
name string Codice esatto del parametro meteorologico dal catalogo, per esempio "TMP" per la temperatura. Non tradurlo. Sì
level string Livello atmosferico o di superficie esatto dal catalogo, per esempio "2 m above ground". Sì
info string Differenziatore esatto usato quando il modello ha più parametri con lo stesso name e level. Lascialo vuoto solo quando il valore nel catalogo è vuoto. No
alias string Alias opzionale per la variabile. Se lo fornisci, questo alias viene usato come intestazione di colonna nella risposta. No

Oggetto Expression

Campo Tipo Descrizione Obbligatorio
expression string Crea colonne calcolate. Tutte le variabili selezionate sono accessibili tramite il loro alias.
Vedi la documentazione
Sì
alias string Nome della colonna usato nella risposta per questo risultato calcolato. Sì

Oggetto Filter

Campo Tipo Descrizione Obbligatorio
expression string Espressione booleana nello stesso DSL usato da expressions. Può fare riferimento ad alias definiti in precedenza nel corpo della richiesta. Sì

Richiesta di esempio

POST https://gribstream.com/api/v2/hrrr/runs
Content-Type: application/json
Accept-Encoding: gzip
Authorization: Bearer <token>
Payload:
{
    "forecastedFrom": "2024-09-10T00:00:00Z",
    "forecastedUntil": "2024-09-10T00:00:00Z",
    "minLeadTime": "1h",
    "maxLeadTime": "48h",
    "coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
    "variables": [
        { "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
        { "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
    ],
    "expressions": [
        { "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
        { "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
    ]
}

Risposta di esempio

Il formato della risposta è determinato dall'header Accept. L'API supporta tre formati di risposta:

Se includi l'header Accept-Encoding: gzip, la risposta viene compressa con gzip.

NOTA: la risposta non è strettamente ordinata.

Esempio di risposta CSV

forecasted_at,forecasted_time,lat,lon,name,uwind,vwind,wind_direction,wind_magnitude
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,40.7306,-73.9352,New York City,8.0572,2.9389,249,8.5765
2024-09-10T00:00:00Z,2024-09-11T02:00:00Z,40.7306,-73.9352,New York City,2.3471,-5.2970,336,5.7937
2024-09-10T00:00:00Z,2024-09-10T03:00:00Z,40.7306,-73.9352,New York City,7.2268,1.7030,256,7.4247
2024-09-10T00:00:00Z,2024-09-11T06:00:00Z,40.7306,-73.9352,New York City,-2.9925,-5.0025,30,5.8292
2024-09-10T00:00:00Z,2024-09-11T07:00:00Z,40.7306,-73.9352,New York City,-2.9643,-4.9196,31,5.7437
2024-09-10T00:00:00Z,2024-09-10T12:00:00Z,40.7306,-73.9352,New York City,4.7834,-4.3696,312,6.4787
2024-09-10T00:00:00Z,2024-09-10T10:00:00Z,40.7306,-73.9352,New York City,7.2718,0.5647,265,7.2937
2024-09-10T00:00:00Z,2024-09-11T10:00:00Z,40.7306,-73.9352,New York City,-2.9361,-4.5728,32,5.4343
2024-09-10T00:00:00Z,2024-09-11T05:00:00Z,40.7306,-73.9352,New York City,-3.1221,-5.8816,27,6.6589
2024-09-10T00:00:00Z,2024-09-10T06:00:00Z,40.7306,-73.9352,New York City,6.6521,1.6799,255,6.8610
2024-09-10T00:00:00Z,2024-09-11T00:00:00Z,40.7306,-73.9352,New York City,3.2101,-3.3758,316,4.6584
2024-09-10T00:00:00Z,2024-09-10T11:00:00Z,40.7306,-73.9352,New York City,6.9390,-2.4367,289,7.3544
...

Esempio di risposta JSON (array JSON)

[{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T09:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.078826904296875,"vwind":2.4223251342773438,"wind_direction":251,"wind_magnitude":7.481807896300802}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T07:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.181903839111328,"vwind":2.596050262451172,"wind_direction":247,"wind_magnitude":6.704879718622265}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-11T09:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":-2.627544403076172,"vwind":-5.187816619873047,"wind_direction":26,"wind_magnitude":5.815275648803582}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T08:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.091346740722656,"vwind":2.6632766723632812,"wind_direction":249,"wind_magnitude":7.5749746686515245}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T04:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.889509201049805,"vwind":2.7773094177246094,"wind_direction":248,"wind_magnitude":7.428242364996697}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T03:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.226800918579102,"vwind":1.7029743194580078,"wind_direction":256,"wind_magnitude":7.424740604863526}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T10:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.271799087524414,"vwind":0.5646705627441406,"wind_direction":265,"wind_magnitude":7.2936900683913555}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T12:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":4.783409118652344,"vwind":-4.369564056396484,"wind_direction":312,"wind_magnitude":6.4787416092446914}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T05:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.676166534423828,"vwind":2.414224624633789,"wind_direction":252,"wind_magnitude":8.046863563053401}
,{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T01:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.057228088378906,"vwind":2.938892364501953,"wind_direction":249,"wind_magnitude":8.576480210336284}
...
]

Esempio di risposta NDJSON (delimitata per righe)

{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T03:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":7.226800918579102,"vwind":1.7029743194580078,"wind_direction":256,"wind_magnitude":7.424740604863526}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T17:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":2.3053665161132812,"vwind":-3.231029510498047,"wind_direction":324,"wind_magnitude":3.969164455061737}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T19:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":1.7580318450927734,"vwind":-2.8487396240234375,"wind_direction":328,"wind_magnitude":3.3475354238366912}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T16:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":2.373655319213867,"vwind":-3.552021026611328,"wind_direction":326,"wind_magnitude":4.272129790622153}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T20:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":1.9354515075683594,"vwind":-2.271472930908203,"wind_direction":319,"wind_magnitude":2.9842187945922025}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T02:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":8.008834838867188,"vwind":1.1038799285888672,"wind_direction":262,"wind_magnitude":8.084552329782657}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T12:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":4.783409118652344,"vwind":-4.369564056396484,"wind_direction":312,"wind_magnitude":6.4787416092446914}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T04:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":6.889509201049805,"vwind":2.7773094177246094,"wind_direction":248,"wind_magnitude":7.428242364996697}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T13:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":2.683929443359375,"vwind":-4.015068054199219,"wind_direction":326,"wind_magnitude":4.829518478770162}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T18:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":1.8502693176269531,"vwind":-3.0554637908935547,"wind_direction":328,"wind_magnitude":3.5720240096076235}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-11T09:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":-2.627544403076172,"vwind":-5.187816619873047,"wind_direction":26,"wind_magnitude":5.815275648803582}
{"forecasted_at":"2024-09-10T00:00:00Z","forecasted_time":"2024-09-10T14:00:00Z","lat":40.7306,"lon":-73.9352,"name":"New York City","uwind":1.9734878540039062,"vwind":-4.105434417724609,"wind_direction":334,"wind_magnitude":4.555134034047598}
...

Campi della risposta:

Campo Descrizione
forecasted_at Orario del run del modello: quando la previsione è stata generata o emessa.
forecasted_time Orario di validità: l'orario a cui si applica la previsione.
lat Latitudine della coordinata.
lon Longitudine della coordinata.
name Nome fornito nella richiesta per il set di coordinate.
uwind
vwind
wind_direction
wind_magnitude
Una colonna per ogni variabile o espressione derivata. Per default, le variabili usano [name]|[level]|[info].

Note d'uso

Autenticazione

Devi includere un token di autenticazione valido nell'header Authorization. Per ottenere un token,

Includi il token negli header della richiesta in questo modo:

Authorization: Bearer <token>

Comando cURL di esempio

  curl -X POST 'https://gribstream.com/api/v2/hrrr/runs' \
-H "Content-Type: application/json" \
-H "Accept-Encoding: gzip" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
    "forecastedFrom": "2024-09-10T00:00:00Z",
    "forecastedUntil": "2024-09-10T00:00:00Z",
    "minLeadTime": "1h",
    "maxLeadTime": "48h",
    "coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
    "variables": [
        { "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
        { "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
    ],
    "expressions": [
        { "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
        { "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
    ]
    }' | gunzip | head -20

Questo comando recupera i dati di previsione e stampa le prime 20 righe della risposta decompressa.

Gestione degli errori

Se la richiesta contiene un errore, l'API restituisce un messaggio di errore con il codice di stato HTTP appropriato.

Codici di errore comuni

Codice di stato Significato Descrizione
400 Bad Request Parametri della richiesta non validi. Succede quando mancano parametri obbligatori o quando i valori non sono validi.
401 Unauthorized Autenticazione non riuscita. Succede quando il token di autenticazione manca o non è valido.
429 Too Many Requests Quota esaurita. Succede quando esaurisci la quota. La risposta include un header Retry-After con il tempo di attesa prima di riprovare.
500 Internal Server Error Errore del server. Succede quando si verifica un errore durante l'elaborazione della richiesta sul server.

Contatti

Per domande o assistenza, contattaci a info@gribstream.com.