GribStream

Documentação da API de previsões meteorológicas

Esta API dá acesso a dados de previsão meteorológica para todos os modelos. Você pode recuperar dados históricos e previstos informando o intervalo de tempo, as coordenadas e as variáveis de interesse.

Você pode usar nosso cliente Python no GitHub ou criar sua própria integração com os detalhes abaixo.

Se estiver integrando o GribStream com uma ferramenta de IA, comece por GribStream para ferramentas de IA.

Endpoint /timeseries

Para uma coordenada, um parâmetro meteorológico e um intervalo de tempo, há vários valores previstos disponíveis. Cada valor corresponde a um horizonte de previsão diferente (lead time), representando previsões feitas em momentos diferentes no passado.

A API retorna, para cada horário válido, o valor previsto com o horizonte de previsão mais curto. Assim, você recebe a previsão mais recente e normalmente mais precisa disponível naquele momento. Em ciência de dados, isso costuma ser chamado de série de melhor previsão (best forecast) ou nowcast.

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

Renomeado Antes /history. O caminho anterior ainda funciona.

Modelos disponíveis

Headers HTTP da requisição

Header Valor Comentário
Content-Type application/json Valor padrão e único valor válido.
Accept Escolha um:
text/csv
application/json
application/ndjson
Seleciona o formato de resposta. Por padrão, usa text/csv.
Accept-Encoding gzip Opcional e recomendado para respostas grandes compactadas.
Authorization Bearer <token> Substitua <token> pelo seu token de autenticação.

Parâmetros do request body

O request body deve ser um objeto JSON com a seguinte estrutura:

Parâmetro Tipo Descrição Obrigatório
fromTime string (ISO 8601) Horário de início do período de previsão. Sim, (fromTime, untilTime) ou timesList
untilTime string (ISO 8601) Horário de fim do período de previsão. Sim, (fromTime, untilTime) ou timesList
timesList array de string (ISO 8601) Lista explícita de horários válidos a retornar; cada valor corresponde a forecasted_time. Sim, (fromTime, untilTime) ou timesList
asOf string (ISO 8601) Horário de corte: só são consideradas execuções do modelo geradas nesse momento ou antes dele. É o timestamp de referência usado pelo campo asOf. Não
minLeadTime string (duration) Lead time (horizonte de previsão) mínimo, inclusive. Use uma string de duração como "45m" ou "18h". Tem precedência sobre minHorizon/maxHorizon. Não
maxLeadTime string (duration) Lead time (horizonte de previsão) máximo, inclusive. Use uma string de duração como "45m" ou "18h". Tem precedência sobre minHorizon/maxHorizon. Não
minHorizon integer Obsoleto (use minLeadTime). Lead time mínimo em horas, inclusive. Não
maxHorizon integer Obsoleto (use maxLeadTime). Lead time máximo em horas, inclusive. Não
coordinates array de coordinate Lista de coordenadas geográficas. Opcional quando grid é fornecido; você também pode enviar ambos. Sim - ao menos coordinates ou grid deve ser fornecido
grid objeto grid Domínio retangular regular.
O servidor retorna cada ponto dentro dos limites usando o valor de step informado. Pode ser usado junto com coordinates.
Sim - ao menos coordinates ou grid deve ser fornecido
variables array de variable Lista de parâmetros meteorológicos a recuperar. Sim
expressions array de expression Colunas calculadas no servidor a partir das variáveis solicitadas. Cada entrada retorna como sua própria coluna usando o alias fornecido. Consulte a documentação Não
filter objeto filter Filtro booleano aplicado depois que todas as expressions são avaliadas. Deve conter um único campo expression do tipo string. As linhas em que a expressão avalia para false são omitidas da resposta. Não
members array de integer Para modelos de ensemble (gefsatmos, ifsenfo, ifswaef …), isto seleciona quais membros do ensemble serão incluídos na resposta.
Exemplo: "members": [2,3,4].
Por padrão, usa [0] e retorna apenas o membro 0, a previsão de controle.
Não (somente modelos de ensemble)

Observação: o horário selecionado deve ser especificado pelo intervalo (fromTime, untilTime) ou por timesList.

Objeto de coordenada

Campo Tipo Descrição Obrigatório
lat float Latitude da coordenada. Sim
lon float Longitude da coordenada. Sim
name string Nome opcional da coordenada; retornado na resposta para ajudar a identificar a localização. Não

Objeto de grade

Campo Tipo Descrição Obrigatório
minLatitude number Limite sul (°N) Sim
maxLatitude number Limite norte (°N) Sim
minLongitude number Limite oeste (°E) Sim
maxLongitude number Limite leste (°E) Sim
step number Resolução em graus decimais Sim

Objeto de variável

Os campos name, level e info formam o seletor exato da variável meteorológica. Copie esses valores do catálogo ou da página do modelo; eles são identificadores de API, não rótulos para traduzir.

Campo Tipo Descrição Obrigatório
name string Código exato do parâmetro meteorológico no catálogo (por exemplo, "TMP" para temperatura). Não traduza. Sim
level string Nível atmosférico ou de superfície exato do catálogo (por exemplo, "2 m above ground"). Sim
info string Diferenciador exato quando o modelo tem vários parâmetros com o mesmo name e level. Deixe vazio apenas se o valor do catálogo estiver vazio. Não
alias string Alias opcional para a variável. Se fornecido, ele será usado como cabeçalho da coluna na resposta. Não

Objeto de expressão

Campo Tipo Descrição Obrigatório
expression string Cria colunas calculadas. Todas as variáveis selecionadas podem ser referenciadas pelo alias.
Consulte a documentação
Sim
alias string Nome da coluna usado na resposta para este resultado calculado. Sim

Objeto de filtro

Campo Tipo Descrição Obrigatório
expression string Expressão booleana no mesmo DSL usado por expressions. Pode referenciar aliases definidos anteriormente dentro do request body. Sim

Requisição de exemplo

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" }
    ]
}

Resposta de exemplo

O formato de resposta é determinado pelo header HTTP Accept. A API aceita três formatos de resposta:

Se o header Accept-Encoding: gzip for incluído, a resposta será comprimida com gzip.

Observação: a resposta não é estritamente ordenada.

Exemplo de resposta 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

Exemplo de resposta 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}
]

Exemplo de resposta NDJSON (delimitada por linhas)

{"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}

Campos da resposta:

Campo Descrição
forecasted_at Horário de execução do modelo: quando a previsão foi gerada ou emitida.
forecasted_time Horário válido: horário ao qual a previsão se aplica.
lat Latitude da coordenada.
lon Longitude da coordenada.
name Nome enviado na requisição para o conjunto de coordenadas.
uwind
vwind
wind_direction
wind_magnitude
Uma coluna por variável ou expressão derivada. As variáveis usam por padrão [name]|[level]|[info].

Notas de uso

Autenticação

Você precisa incluir um token de autenticação válido no header Authorization. Para obter um token,

Inclua o token nos headers HTTP da requisição assim:

Authorization: Bearer <token>

Comando cURL de exemplo

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

Este comando recupera os dados de previsão e mostra as primeiras 20 linhas da resposta descomprimida.

Tratamento de erros

Se houver um erro na requisição, a API retornará uma mensagem de erro com um código de status HTTP apropriado.

Códigos de erro comuns

Código de status Significado Descrição
400 Bad Request Parâmetros de requisição inválidos. Ocorre quando parâmetros obrigatórios estão ausentes ou têm valores inválidos.
401 Unauthorized Falha na autenticação. Ocorre quando o token de autenticação está ausente ou é inválido.
429 Too Many Requests Cota excedida. Ocorre quando você esgota a cota. A resposta inclui um header Retry-After com o tempo de espera antes de tentar novamente.
500 Internal Server Error Erro do servidor. Ocorre quando há um erro ao processar a requisição no servidor.

Endpoint /runs

Recupera todas as execuções do modelo em um intervalo de tempo, para uma lista de coordenadas e parâmetros meteorológicos. Opcionalmente, filtra por uma janela de lead time (horizonte mínimo/máximo).

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

Renomeado Antes /forecasts. O caminho anterior ainda funciona.

Modelos disponíveis

Headers HTTP da requisição

Header Valor Comentário
Content-Type application/json Valor padrão e único valor válido.
Accept Escolha um:
text/csv
application/json
application/ndjson
Seleciona o formato de resposta. Por padrão, usa text/csv.
Accept-Encoding gzip Opcional e recomendado para respostas grandes compactadas.
Authorization Bearer <token> Substitua <token> pelo seu token de autenticação.

Parâmetros do request body

O request body deve ser um objeto JSON com a seguinte estrutura:

Parâmetro Tipo Descrição Obrigatório
forecastedFrom string (ISO 8601) Primeiro horário de execução do modelo. Sim, (forecastedFrom, forecastedUntil) ou timesList
forecastedUntil string (ISO 8601) Último horário de execução do modelo. Sim, (forecastedFrom, forecastedUntil) ou timesList
timesList array de string (ISO 8601) Lista explícita de horários de execução do modelo; cada valor corresponde a forecasted_at. Sim, (forecastedFrom, forecastedUntil) ou timesList
minLeadTime string (duration) Lead time (horizonte de previsão) mínimo, inclusive. Use uma string de duração como "45m" ou "18h". Tem precedência sobre minHorizon/maxHorizon. Não
maxLeadTime string (duration) Lead time (horizonte de previsão) máximo, inclusive. Use uma string de duração como "45m" ou "18h". Tem precedência sobre minHorizon/maxHorizon. Não
minHorizon integer Obsoleto (use minLeadTime). Lead time mínimo em horas, inclusive. Não
maxHorizon integer Obsoleto (use maxLeadTime). Lead time máximo em horas, inclusive. Não
coordinates array de coordinate Lista de coordenadas geográficas. Sim - ao menos coordinates ou grid deve ser fornecido
grid objeto grid Domínio retangular regular.
O servidor retorna cada ponto dentro dos limites usando o valor de step informado. Pode ser usado junto com coordinates.
Sim - ao menos coordinates ou grid deve ser fornecido
variables array de variable Lista de parâmetros meteorológicos a recuperar. Sim
expressions array de expression Colunas calculadas no servidor a partir das variáveis solicitadas. Cada entrada retorna como sua própria coluna usando o alias fornecido. Consulte a documentação Não
filter objeto filter Filtro booleano aplicado depois que todas as expressions são avaliadas. Deve conter um único campo expression do tipo string. As linhas em que a expressão avalia para false são omitidas da resposta. Não
members array de integer Para modelos de ensemble (gefsatmos, ifsenfo, ifswaef …), isto seleciona quais membros do ensemble serão incluídos na resposta.
Exemplo: "members": [2,3,4].
Por padrão, usa [0] e retorna apenas o membro 0, a previsão de controle.
Não (somente modelos de ensemble)

Observação: o horário selecionado deve ser especificado pelo intervalo (forecastedFrom, forecastedUntil) ou por timesList.

Objeto de coordenada

Campo Tipo Descrição Obrigatório
lat float Latitude da coordenada. Sim
lon float Longitude da coordenada. Sim
name string Nome opcional da coordenada; retornado na resposta para ajudar a identificar a localização. Não

Objeto de grade

Campo Tipo Descrição Obrigatório
minLatitude number Limite sul (°N) Sim
maxLatitude number Limite norte (°N) Sim
minLongitude number Limite oeste (°E) Sim
maxLongitude number Limite leste (°E) Sim
step number Resolução em graus decimais Sim

Objeto de variável

Os campos name, level e info formam o seletor exato da variável meteorológica. Copie esses valores do catálogo ou da página do modelo; eles são identificadores de API, não rótulos para traduzir.

Campo Tipo Descrição Obrigatório
name string Código exato do parâmetro meteorológico no catálogo (por exemplo, "TMP" para temperatura). Não traduza. Sim
level string Nível atmosférico ou de superfície exato do catálogo (por exemplo, "2 m above ground"). Sim
info string Diferenciador exato quando o modelo tem vários parâmetros com o mesmo name e level. Deixe vazio apenas se o valor do catálogo estiver vazio. Não
alias string Alias opcional para a variável. Se fornecido, ele será usado como cabeçalho da coluna na resposta. Não

Objeto de expressão

Campo Tipo Descrição Obrigatório
expression string Cria colunas calculadas. Todas as variáveis selecionadas podem ser referenciadas pelo alias.
Consulte a documentação
Sim
alias string Nome da coluna usado na resposta para este resultado calculado. Sim

Objeto de filtro

Campo Tipo Descrição Obrigatório
expression string Expressão booleana no mesmo DSL usado por expressions. Pode referenciar aliases definidos anteriormente dentro do request body. Sim

Requisição de exemplo

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" }
    ]
}

Resposta de exemplo

O formato de resposta é determinado pelo header HTTP Accept. A API aceita três formatos de resposta:

Se o header Accept-Encoding: gzip for incluído, a resposta será comprimida com gzip.

Observação: a resposta não é estritamente ordenada.

Exemplo de resposta 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
...

Exemplo de resposta 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}
...
]

Exemplo de resposta NDJSON (delimitada por linhas)

{"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}
...

Campos da resposta:

Campo Descrição
forecasted_at Horário de execução do modelo: quando a previsão foi gerada ou emitida.
forecasted_time Horário válido: horário ao qual a previsão se aplica.
lat Latitude da coordenada.
lon Longitude da coordenada.
name Nome enviado na requisição para o conjunto de coordenadas.
uwind
vwind
wind_direction
wind_magnitude
Uma coluna por variável ou expressão derivada. As variáveis usam por padrão [name]|[level]|[info].

Notas de uso

Autenticação

Você precisa incluir um token de autenticação válido no header Authorization. Para obter um token,

Inclua o token nos headers HTTP da requisição assim:

Authorization: Bearer <token>

Comando cURL de exemplo

  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

Este comando recupera os dados de previsão e mostra as primeiras 20 linhas da resposta descomprimida.

Tratamento de erros

Se houver um erro na requisição, a API retornará uma mensagem de erro com um código de status HTTP apropriado.

Códigos de erro comuns

Código de status Significado Descrição
400 Bad Request Parâmetros de requisição inválidos. Ocorre quando parâmetros obrigatórios estão ausentes ou têm valores inválidos.
401 Unauthorized Falha na autenticação. Ocorre quando o token de autenticação está ausente ou é inválido.
429 Too Many Requests Cota excedida. Ocorre quando você esgota a cota. A resposta inclui um header Retry-After com o tempo de espera antes de tentar novamente.
500 Internal Server Error Erro do servidor. Ocorre quando há um erro ao processar a requisição no servidor.

Informações de contato

Se tiver dúvidas ou precisar de ajuda, entre em contato com o suporte em info@gribstream.com.