Logo da Defesa Civil RS
Defesa Civil RS Rede Hidrometeorológica
API operacional

API de Dados Hidrometeorológicos
da Defesa Civil do Estado do Rio Grande do Sul

Visão geral

A API entrega os dados das estações da Defesa Civil RS em blocos de 5 minutos, por duas consultas GraphQL: tags_data (situação mais recente de cada estação) e historic (série de uma estação num período).

AmbienteEndereço da API
Produçãohttps://redehidrometeorologica.defesacivil.rs.gov.br/graphql

Pontos de atenção:

  • Os dados são atualizados a cada 5 minutos e lidos com tags_data.
  • Consultas fixas. A API só aceita o texto exato das consultas deste guia. Pedir outros campos é recusado.
  • Limite de uso. Cada endereço IP pode fazer até 120 requisições por minuto.
  • Limiares de rio. Cada estação traz o nível de alerta de inundação: normalidade, atenção, alerta ou inundação.
  • Histórico limitado. A consulta historic só busca dados dos últimos 3 meses.

Preparando o Postman

O Postman é o jeito mais simples de fazer as consultas sem programar.

  1. Instale o Postman: postman.com/downloads.
  1. Abra o Postman e entre com sua conta, ou use o modo convidado.
  1. Clique em New (ou no + para abrir uma aba) e escolha GraphQL.
  1. No campo Enter URL, cole o endereço da API do ambiente que você vai usar (tabela acima).
  1. Copie uma das consultas deste guia, cole no campo Query e clique em Query (ou Send).

A API não publica o esquema (schema). Por isso o Postman não vai autocompletar os nomes dos campos e pode mostrar um aviso de que não conseguiu carregar o esquema. Também poderá ser ignorado bastando colar as consultas exatamente como estão aqui.

Regras de uso

A API recusa qualquer consulta fora das duas deste guia e limita cada IP a 120 requisições por minuto.

RegraLimiteO que acontece se passar
Consultas permitidasSó Tags_data e Historic, com o texto exato deste guiaErro QUERY_NOT_ALLOWED, mensagem "Operação bloqueada."
Requisições por IP120 por minutoErro "ThrottlerException: Too Many Requests" até o minuto virar
ClienteSomente casa-militar-defesa-civil-rsErro FORBIDDEN
Período do históricoData inicial dentro dos últimos 3 mesesErro BAD_REQUEST com a data mínima aceita
Formato de dataAAAA-MM-DD HH:MM:SS, horário de BrasíliaErro BAD_REQUEST: "Datas inválidas"

O texto da consulta precisa ser o mesmo, campo por campo. Espaços, quebras de linha e o campo __typename não fazem diferença. Tirar ou acrescentar um campo, ou trocar a ordem dos campos, faz a consulta ser recusada.

Na consulta historic, os valores que mudam (estação, datas e intervalo) vão na aba Variables do Postman, nunca dentro do texto da consulta.

Consulta tags_data (dados atuais)

A tags_data devolve a leitura mais recente de todas as 130 estações de uma vez. Cole o texto abaixo inteiro no campo Query, sem variáveis.

query Tags_data {
  tags_data(clients: ["casa-militar-defesa-civil-rs"]) {
    qualle_meteorologia {
      codigo
      name {
        prefix
        general
        local
      }
      show
      timestamp
      position {
        bacia
        latitude
        longitude
        regiao
        altitude
        filtros {
          outros {
            crepdec {
              nome {
                value
              }
              codigo {
                value
              }
            }
          }
        }
      }
      data {
        rio {
          rio_alarmes {
            inundacao {
              ativo {
                value
              }
              status {
                value
              }
            }
          }
          rio_nome {
            value
          }
          rio_nivel {
            value
          }
          rio_nivel_tendencia {
            value
          }
          rio_area_drenagem {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        chuva {
          acumulado {
            min005 {
              value
            }
            h001 {
              value
            }
            h003 {
              value
            }
            h006 {
              value
            }
            h012 {
              value
            }
            h024 {
              value
            }
            h048 {
              value
            }
            h168 {
              value
            }
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        pressaoatmos {
          atual {
            value
          }
          historico {
            diaanterior {
              media {
                value
              }
            }
            diaatual {
              media {
                value
              }
            }
          }
          tendencia {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        senstermica {
          atual {
            value
          }
          historico {
            diaatual {
              media {
                value
              }
            }
            diaanterior {
              media {
                value
              }
            }
          }
          tendencia {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        radiacaosolar {
          atual {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        temperatura {
          atual {
            value
          }
          historico {
            diaanterior {
              media {
                value
              }
            }
            diaatual {
              media {
                value
              }
              maxima {
                value
              }
              minima {
                value
              }
            }
          }
          tendencia {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        umidade {
          atual {
            value
          }
          historico {
            diaanterior {
              media {
                value
              }
            }
            diaatual {
              media {
                value
              }
            }
          }
          tendencia {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
        vento {
          direcao {
            value
          }
          velocidade_maxima {
            value
          }
          velocidade_media {
            value
          }
          homologacao {
            relacao {
              valido {
                value
              }
            }
          }
        }
      }
      type
      filter {
        relacao {
          tem_chuva_acumulada
          tem_nivel_do_rio
          tem_pressao_atmosferica
          tem_sensacao_termica
          tem_umidade
          tem_vazao_do_rio
          tem_vento
        }
      }
      resource {
        estacao {
          estado {
            manutencao {
              value
            }
          }
        }
      }
    }
    proximaAtualizacaoEm
  }
}

Como ler a resposta:

  • qualle_meteorologia é a lista de estações. Procure a estação pelo codigo, por exemplo DCRS-00001.
  • timestamp é o início do bloco de 5 minutos da última leitura, em horário de Brasília (ex.: 2026-10-14T08:40:00.000).
  • value: null quer dizer que a estação não mandou essa medida nos últimos 20 minutos.
  • proximaAtualizacaoEm é o horário, em UTC, em que vale a pena consultar de novo.
  • homologacao.relacao.valido igual a false indica sensor com dado não homologado.
  • resource.estacao.estado.manutencao igual a true indica estação em manutenção.

Não existe filtro por estação nem por localização: a consulta sempre traz todas as estações. Os parâmetros station e filters do guia antigo são recusados.

Consulta historic (série de uma estação)

A historic devolve as medidas de uma estação num período dos últimos 3 meses, agrupadas no intervalo escolhido e em ordem cronológica.

No campo Query, cole sempre este texto, sem mudar nada:

query Historic($stationCode: String!, $startDate: String!, $endDate: String!, $interval: QueryInterval) {
  historic(
    system: Qualle_Hidrometeorologia
    client: "casa-militar-defesa-civil-rs"
    stationCode: $stationCode
    startDate: $startDate
    endDate: $endDate
    interval: $interval
    opts: { ordenacao: ASC }
  )
}

Na aba Variables, informe a estação, o período e o intervalo:

{
  "stationCode": "DCRS-00001",
  "startDate": "2026-10-13 12:00:00",
  "endDate": "2026-10-13 18:00:00",
  "interval": "HOUR_1"
}
VariávelObrigatóriaComo preencher
stationCodesimCódigo da estação, ex.: DCRS-00001
startDatesimAAAA-MM-DD HH:MM:SS, horário de Brasília, no máximo 3 meses atrás
endDatesimMesmo formato. Se for depois de agora, a API usa o horário atual
intervalnãoMIN_5, MIN_10, HOUR_1, HOUR_3, HOUR_6 ou HOUR_12. Sem ela, usa MIN_5

Exemplo de resposta (DCRS-00001, intervalo de 1 hora):

{
  "data": {
    "historic": {
      "items": [
        {
          "ts": "2026-10-14T09:00:00.000",
          "codigo": "DCRS-00001",
          "rio_nivel": 27.24,
          "rio_variacao": 0,
          "chuva_mm": 0,
          "chuva_total": 0,
          "chuva_taxa_med": 0,
          "chuva_taxa_max": 0,
          "temp_media": 22.425,
          "sens_termica": 24.79,
          "umid_rel": 72.39,
          "pres_atmos": 1010.21,
          "vento_vel_med": 1.61,
          "vento_vel_max": 4.14,
          "vento_dir": 268.31,
          "radiacao": 250.75
        }
      ],
      "totalCount": 1
    }
  }
}

ts é o horário do bloco em horário de Brasília e totalCount é o número de itens. Uma medida que a estação não tem vem como null. A mesma consulta repetida em menos de 30 segundos devolve a resposta guardada em cache.

Limiares de nível do rio

Cada estação com sensor de rio traz em data.rio.rio_alarmes.inundacao a situação do nível em relação às cotas de inundação definidas pela Defesa Civil. A API compara a cota medida (rio_nivel) com as cotas de atenção, alerta e inundação de cada estação.

ativostatusSituaçãoCor no mapa
true0Normalidadeverde #69a82f
true1Atenção Inundaçãoamarelo #faba00
true2Alerta Inundaçãolaranja #e67819
true3Inundaçãovermelho #e20228
truenullSem leitura de nível recentebranco
false0Estação sem limiar cadastradobranco
  • O status é o nível mais alto já atingido.
  • Os valores das cotas de cada estação não fazem parte da consulta permitida. Hoje eles só aparecem no mapa do site, pela cor da estação.

Ciclo de atualização

Os dados mudam uma vez a cada 5 minutos, normalmente entre 1 e 2 minutos depois de cada marco (:00, :05, :10…). Consultar mais vezes do que isso não traz dado novo e gasta o limite de 120 requisições por minuto.

Dicionário

Métricas e unidades

MétricaCampo em tags_dataCampo em historicUnidade
Nível do riorio.rio_nivelrio_nivelmetro (m)
Variação do nívelrio.rio_nivel_tendenciario_variacaometro (m)
Chuvachuva.acumulado.*chuva_mm (no bloco), chuva_totalmilímetro (mm)
Intensidade da chuva—chuva_taxa_med, chuva_taxa_maxmilímetro por hora (mm/h)
Temperaturatemperaturatemp_mediagrau Celsius (°C)
Sensação térmicasenstermicasens_termicagrau Celsius (°C)
Umidade relativaumidadeumid_relpor cento (%)
Pressão atmosféricapressaoatmospres_atmoshectopascal (hPa)
Vento: velocidadevento.velocidade_media, vento.velocidade_maximavento_vel_med, vento_vel_maxquilômetro por hora (km/h)
Vento: direçãovento.direcaovento_dirgrau (°), 0 = norte
Radiação solarradiacaosolarradiacaowatt por metro quadrado (W/m²)

Nas métricas de tags_data:

  • atual é o valor do último bloco de 5 minutos.
  • historico.diaatual e historico.diaanterior trazem a média (e, na temperatura, a máxima e a mínima) de hoje e de ontem.
  • tendencia é o valor atual menos a média da última hora: positivo subindo, negativo descendo.

Intervalos da consulta historic

Valor de intervalAgrupamento
MIN_55 minutos
MIN_1010 minutos (padrão)
HOUR_11 hora
HOUR_33 horas
HOUR_66 horas
HOUR_1212 horas