Skip to main content

CIMIS

The California Irrigation Management Information System (CIMIS) is a program managed by the California Department of Water Resources (DWR) that operates a network of over 150 automated weather stations throughout California. CIMIS provides free access to reference evapotranspiration (ETo) and weather data via a RESTful Web API, enabling agricultural professionals, water managers, irrigation consultants, and researchers to retrieve daily and hourly station data—including solar radiation, air temperature, soil temperature, relative humidity, precipitation, wind speed, wind direction, vapor pressure, dew point temperature, and grass reference evapotranspiration—as well as spatial ETo and solar radiation data across a statewide 2 km grid.

CIMIS icon

Power end-to-end data operations for your CIMIS API with Nexla. Our bi-directional CIMIS connector is purpose-built for CIMIS, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to CIMIS or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your CIMIS workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

To use the CIMIS Web API, you need a registered CIMIS account and a Web API AppKey. The AppKey is a unique application key that authenticates your requests to the CIMIS data services. CIMIS data access is free of charge, and registration is straightforward.

Register for a CIMIS Account and Obtain an AppKey

  1. Navigate to the CIMIS website at https://www.cimis.water.ca.gov and click the Register link to create a new account.

  2. Complete the registration form with your name, organization, email address, and a password. After submitting the form, you will receive a confirmation email at the address you provided.

  3. Confirm your email address by clicking the link in the confirmation email to activate your account.

  4. Log in to your CIMIS account at https://www.cimis.water.ca.gov using your registered email and password.

  5. Once logged in, navigate to your Account page and scroll to the end of the page.

  6. Click the Get AppKey button to generate your Web API application key. Your AppKey will be displayed on the page.

    Copy your AppKey immediately and store it securely. Your AppKey authenticates all API requests to CIMIS data services. Treat it like a password and do not share it publicly.

Note on API Transition

The CIMIS Web API at et.water.ca.gov will remain operational through July 31, 2026, running in parallel with the new CIMIS system. Registered users will be migrated to the new system and will receive an email with a temporary password and instructions. For additional information, visit https://www.cimis.water.ca.gov.

Authenticate

Create a credential in Nexla

  1. After selecting the data source type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter your CIMIS Web API AppKey in the App Key field. This is the application key you generated in Prerequisites. The AppKey is passed as a query parameter with every API request to authenticate your access to CIMIS data services.

    Your AppKey provides access to all CIMIS weather station data, spatial ETo data, and zip code data services. Ensure you are using the AppKey associated with your registered CIMIS account.

  4. Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source creation and can be selected for use with a new data source.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the CIMIS API connector tile, then select the credential that will be used to connect to the CIMIS API, and click Next; or, create a new CIMIS API credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common CIMIS API endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

Get Data

This endpoint retrieves evapotranspiration (ETo) and weather data from one or more CIMIS stations or zip code targets for a specified date range. Use it to ingest daily or hourly climate and irrigation reference data for agricultural planning, water management, or environmental reporting.

  • Sends a GET request to https://et.water.ca.gov/api/data. Required query parameters include targets (comma-separated station numbers or zip codes), startDate, and endDate (both in yyyy-MM-dd format).
  • Response data is extracted from $.data[*]. Each record represents a set of weather observations for one target and one time period. Use date/time macros for startDate and endDate to automate rolling date window ingestion.

The appKey parameter is managed automatically by the CIMIS API credential. The optional dataItems parameter lets you request specific data fields (e.g., day-asce-eto,day-precip,day-air-tmp-max) to reduce response size.

List Stations

This endpoint returns a list of all CIMIS weather stations with their metadata and geographic locations. Use it to enumerate available stations, identify station numbers for use in data requests, or build a reference dataset of California weather monitoring locations.

  • Sends a GET request to https://et.water.ca.gov/api/station. No additional query parameters are required.
  • Response data is extracted from $.stations[*]. Each record contains station number, name, county, elevation, latitude, longitude, and active/inactive status.

This endpoint returns both active and inactive stations. Filter on the IsActive field in your Nexla transform if you only want currently operating stations.

List Spatial Zipcodes

This endpoint returns spatial zipcode data representing CIMIS weather station coverage areas across California. Use it to map zip codes to spatial ET zones or to identify which zip codes are covered by CIMIS spatial data.

  • Sends a GET request to https://et.water.ca.gov/api/spatialzipcode. No additional query parameters are required.
  • Response data is extracted from $.spatialZipcodes[*]. Each record represents a zip code and its associated spatial coverage information.

Spatial zipcode data is used for zip-code-based ETo requests that derive values from interpolated spatial data rather than a specific physical station.

List Station Zipcodes

This endpoint returns the mapping between CIMIS weather stations and their associated zip codes. Use it to determine which zip codes are served by which stations, or to build lookup tables for geographic data enrichment.

  • Sends a GET request to https://et.water.ca.gov/api/stationzipcode. No additional query parameters are required.
  • Response data is extracted from $.stationZipcodes[*]. Each record contains a station number and its associated zip code.

This endpoint is useful as a reference dataset when you need to correlate station-based observations with zip-code-level geographic data.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

CIMIS API sources can also be manually configured to ingest data from any valid CIMIS Web API endpoint, including endpoints not covered by the pre-built templates or when custom query parameters are required. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time macros, path to data, metadata, and request headers.

The CIMIS Web API uses GET for all data retrieval requests, with a primary base URL of https://et.water.ca.gov/api/data. Required query parameters are targets (comma-separated CIMIS station numbers or zip codes—see the CIMIS station map for station numbers), startDate, and endDate (both yyyy-MM-dd); optional parameters include dataItems, unitOfMeasure (E for English, M for metric, or H in place of a date range unit for hourly data), and priorityCodes. The appKey parameter is added automatically from your CIMIS API credential.

Date/time macros such as {now-1} and {now} are especially useful for the startDate/endDate parameters, allowing rolling date windows (e.g., the previous day or a 7-day range) without manually updating the URL. Set the path to data to $.Data.Providers[*].Records[*] to treat each weather record as an individual row, and set the path to metadata to $.Data.Providers[0] to preserve provider-level context (data owner, record type) alongside each record. The CIMIS API supports both JSON and XML responses; add Accept:application/json as a request header to explicitly request JSON.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new CIMIS API data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.