Free JSON · no key · open CORS

The Waterline Data API

Every number published on The Waterline (the-waterline.com) as free JSON: reservoirs, drought, allocations, streamflow, snowpack, history and heatmap. No key, no sign-up, callable from any website or script. The files are rebuilt every time the site rebuilds with new data, so they always match the pages.

Base URL
https://the-waterline.com/api/v1
Auth
None
Format
JSON, UTF-8, GET only
CORS
Access-Control-Allow-Origin: *
Series
58 · 11 key statistics
Data as of
Nov 9, 2026

Quick start

The newest reading of every series, from a terminal:

curl https://the-waterline.com/api/v1/latest.json

Or in JavaScript, from any page:

const res = await fetch("https://the-waterline.com/api/v1/latest.json");
const { data_as_of, data } = await res.json();
for (const row of data) console.log(row.title, row.headline, row.data_through);

Endpoints

GET /api/v1/index.json

API index. What this API is, its license and attribution, the sections it covers, and every endpoint.

Example: https://the-waterline.com/api/v1/index.json

Sample response
{
  "api": "The Waterline Data API",
  "version": "v1",
  "docs": "https://the-waterline.com/api",
  "data_as_of": "2026-11-09",
  "data_as_of_label": "Nov 9, 2026",
  "data_pulled_at": "2026-11-11T01:08:34.977Z",
  "generated_at": "2026-11-11T08:16:52.220Z",
  "attribution": "Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.",
  "name": "The Waterline Data API",
  "description": "Free JSON for every number published on The Waterline (the-waterline.com): reservoirs, drought, allocations, streamflow, snowpack, history, heatmap. Wet water, not paper water.",
  "publisher": {
    "name": "The Waterline",
    "url": "https://the-waterline.com"
  },
  "auth": "none",
  "cors": "*",
  "format": "application/json; charset=utf-8",
  "license": "Free to use and republish with attribution; no key or sign-up. The underlying figures are public records from the agencies named in each series' provenance; The Waterline collects, checks and publishes them.",
  "update_policy": "Static files rebuilt every time the site rebuilds with new data. data_as_of in each response is the newest observation it holds; data_pulled_at is when the site last pulled its sources.",
  "counts": {
    "series": 58,
    "stats": 11
  },
  "sections": [
    {
      "key": "reservoir",
      "label": "Reservoirs",
      "series": 24,
      "example": "https://the-waterline.com/api/v1/series/reservoir/blue-mesa-reservoir.json"
    },
    {
      "key": "drought",
      "label": "Drought",
      "series": 11,
      "example": "https://the-waterline.com/api/v1/series/drought/arizona.json"
    },
    {
      "key": "allocation",
      "label": "Allocations",
      "series": 1,
      "example": "https://the-waterline.com/api/v1/series/allocation/cvp-south-of-delta-agricultural.json"
    },
    {
      "key": "streamflow",
      "label": "Streamflow",
      "series": 13,
      "example": "https://the-waterline.com/api/v1/series/streamflow/american-river-at-fair-oaks.json"
    },
    {
      "key": "snowpack",
      "label": "Snowpack",
      "series": 5,
      "example": "https://the-waterline.com/api/v1/series/snowpack/california.json"
    },
    {
      "key": "history",
      "label": "History",
      "series": 3,
      "example": "https://the-waterline.com/api/v1/series/history/blue-mesa-reservoir.json"
    },
    {
      "key": "heatmap",
      "label": "heatmap",
      "series": 1,
      "example": "https://the-waterline.com/api/v1/series/heatmap/index.json"
    }
  ],
  "endpoints": [
    {
      "method": "GET",
      "path": "/api/v1/index.json",
      "url": "https://the-waterline.com/api/v1/index.json",
      "description": "What this API is, its license and attribution, the sections it covers, and every endpoint."
    },
    {
      "method": "GET",
      "path": "/api/v1/latest.json",
      "url": "https://the-waterline.com/api/v1/latest.json",
      "description": "The newest reading of every data page on The Waterline (58 series): the headline value as the site shows it, the newest point of each charted line with its date, whether it is current, and links to its page and full history."
    },
    {
      "method": "GET",
      "path": "/api/v1/stats.json",
      "url": "https://the-waterline.com/api/v1/stats.json",
      "description": "The 11 headline numbers on the the-waterline.com/stats page, each as a quotable sentence with its data date and a ready-made citation."
    },
    {
      "method": "GET",
      "path": "/api/v1/series/{section}/{slug}.json",
      "url": "https://the-waterline.com/api/v1/series/reservoir/lake-powell.json",
      "description": "Everything behind one data page: every charted point (date + value), the historical band where the page draws one, the page's tables exactly as shown, its source and citation. Find each series_url in latest.json."
    },
    {
      "method": "GET",
      "path": "/api/v1/openapi.json",
      "url": "https://the-waterline.com/api/v1/openapi.json",
      "description": "A machine-readable OpenAPI 3.1 description of these endpoints."
    }
  ]
}

GET /api/v1/latest.json

Latest readings. The newest reading of every data page on The Waterline (58 series): the headline value as the site shows it, the newest point of each charted line with its date, whether it is current, and links to its page and full history.

Example: https://the-waterline.com/api/v1/latest.json

Sample response
{
  "api": "The Waterline Data API",
  "version": "v1",
  "docs": "https://the-waterline.com/api",
  "data_as_of": "2026-11-09",
  "data_as_of_label": "Nov 9, 2026",
  "data_pulled_at": "2026-11-11T01:08:34.977Z",
  "generated_at": "2026-11-11T08:16:52.220Z",
  "attribution": "Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.",
  "count": 58,
  "data": [
    {
      "id": "reservoir/blue-mesa-reservoir",
      "section": "reservoir",
      "section_label": "Reservoirs",
      "title": "Blue Mesa Reservoir water level",
      "headline": "173,639 af",
      "unit": "acre-feet",
      "data_through": "2026-11-09",
      "frequency": "Daily",
      "status": "current",
      "values": [
        {
          "series": "Storage",
          "date": "2026-11-09",
          "value": 173639
        }
      ],
      "source": "US Bureau of Reclamation RISE",
      "page_url": "https://the-waterline.com/reservoir/blue-mesa-reservoir",
      "series_url": "https://the-waterline.com/api/v1/series/reservoir/blue-mesa-reservoir.json"
    },
    {
      "id": "reservoir/boysen-reservoir",
      "section": "reservoir",
      "section_label": "Reservoirs",
      "title": "Boysen Reservoir water level",
      "headline": "539,102 af",
      "unit": "acre-feet",
      "data_through": "2026-11-09",
      "frequency": "Daily",
      "status": "current",
      "values": [
        {
          "series": "Storage",
          "date": "2026-11-09",
          "value": 539102
        }
      ],
      "source": "US Bureau of Reclamation RISE",
      "page_url": "https://the-waterline.com/reservoir/boysen-reservoir",
      "series_url": "https://the-waterline.com/api/v1/series/reservoir/boysen-reservoir.json"
    }
  ]
}

Trimmed to 2 of 58 entries.

GET /api/v1/stats.json

Key statistics. The 11 headline numbers on the the-waterline.com/stats page, each as a quotable sentence with its data date and a ready-made citation.

Example: https://the-waterline.com/api/v1/stats.json

Sample response
{
  "api": "The Waterline Data API",
  "version": "v1",
  "docs": "https://the-waterline.com/api",
  "data_as_of": "2026-11-09",
  "data_as_of_label": "Nov 9, 2026",
  "data_pulled_at": "2026-11-11T01:08:34.977Z",
  "generated_at": "2026-11-11T08:16:52.220Z",
  "attribution": "Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.",
  "stats_page": "https://the-waterline.com/stats",
  "count": 11,
  "stats": [
    {
      "id": "total-storage",
      "label": "Total tracked storage",
      "sentence": "Across 22 tracked western reservoirs, total storage is 40.62M af, 6% below the combined 5-yr median for the date (data through Nov 9, 2026).",
      "data_date": "2026-11-09",
      "citation": "Across 22 tracked western reservoirs, total storage is 40.62M af, 6% below the combined 5-yr median for the date (data through Nov 9, 2026). The Waterline. https://the-waterline.com/stats#total-storage",
      "stats_url": "https://the-waterline.com/stats#total-storage",
      "page_url": null,
      "series_url": null,
      "provenance": null
    },
    {
      "id": "lake-powell",
      "label": "Lake Powell",
      "sentence": "Lake Powell storage is 6.39M af, 11% below its 5-yr median for the date.",
      "data_date": "2026-11-09",
      "citation": "Lake Powell storage is 11% below its 5-yr median for the date. The Waterline, data through Nov 9, 2026. https://the-waterline.com/reservoir/lake-powell",
      "stats_url": "https://the-waterline.com/stats#lake-powell",
      "page_url": "https://the-waterline.com/reservoir/lake-powell",
      "series_url": "https://the-waterline.com/api/v1/series/reservoir/lake-powell.json",
      "provenance": "US Bureau of Reclamation RISE · End-of-day reservoir storage · Lake Powell · through Nov 9, 2026"
    }
  ]
}

Trimmed to 2 of 11 statistics.

GET /api/v1/series/{section}/{slug}.json

One series, full history. Everything behind one data page: every charted point (date + value), the historical band where the page draws one, the page's tables exactly as shown, its source and citation. Find each series_url in latest.json.

Example: https://the-waterline.com/api/v1/series/reservoir/lake-powell.json

Sample response
{
  "api": "The Waterline Data API",
  "version": "v1",
  "docs": "https://the-waterline.com/api",
  "data_as_of": "2026-11-09",
  "data_as_of_label": "Nov 9, 2026",
  "data_pulled_at": "2026-11-11T01:08:34.977Z",
  "generated_at": "2026-11-11T08:16:52.220Z",
  "attribution": "Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.",
  "id": "reservoir/lake-powell",
  "section": "reservoir",
  "section_label": "Reservoirs",
  "title": "Lake Powell water level",
  "subtitle": "Live reservoir storage and water level in Colorado (Upper) basin, Arizona / Utah",
  "description": "Lake Powell water level: 3,539.1 ft on Nov 9, 2026, 160.9 ft below full pool. Storage 6.39M af, 26% of capacity, 11% below the 5-yr median.",
  "page_url": "https://the-waterline.com/reservoir/lake-powell",
  "headline": "6.39M af",
  "unit": "acre-feet",
  "data_through": "2026-11-09",
  "frequency": "Daily",
  "status": "current",
  "source": "US Bureau of Reclamation RISE",
  "provenance": {
    "source": "US Bureau of Reclamation RISE",
    "series": "End-of-day reservoir storage",
    "geography": "Lake Powell",
    "unit": "acre-feet",
    "period": "Daily reading",
    "lastObservation": "Nov 9, 2026",
    "frequency": "Daily"
  },
  "citation": "Lake Powell storage is 11% below its 5-yr median for the date. The Waterline, data through Nov 9, 2026. https://the-waterline.com/reservoir/lake-powell",
  "series": [
    {
      "label": "Storage",
      "unit": "acre-feet",
      "points": [
        {
          "date": "2026-11-07",
          "value": 6358610
        },
        {
          "date": "2026-11-08",
          "value": 6376110
        },
        {
          "date": "2026-11-09",
          "value": 6392400
        }
      ]
    }
  ],
  "tables": [
    {
      "caption": null,
      "columns": [
        "Period",
        "Current",
        "Prior",
        "Change"
      ],
      "rows": [
        [
          "Week over week",
          "6.39M af",
          "6.04M af",
          "+5.8%"
        ],
        [
          "Month over month",
          "6.39M af",
          "5.20M af",
          "+22.9%"
        ],
        [
          "Year over year",
          "6.39M af",
          "6.76M af",
          "-5.5%"
        ]
      ]
    }
  ]
}

Trimmed: the live response carries all 1971 points, all 5 tables.

GET /api/v1/openapi.json

OpenAPI description. A machine-readable OpenAPI 3.1 description of these endpoints.

Example: https://the-waterline.com/api/v1/openapi.json

Sample response
{
  "openapi": "3.1.0",
  "info": {
    "title": "The Waterline Data API",
    "version": "1.0.0",
    "description": "Free JSON for every number published on The Waterline (the-waterline.com): reservoirs, drought, allocations, streamflow, snowpack, history, heatmap. Wet water, not paper water. No key needed. Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.",
    "license": {
      "name": "Free to use with attribution",
      "url": "https://the-waterline.com/api"
    }
  },
  "servers": [
    {
      "url": "https://the-waterline.com/api/v1"
    }
  ],
  "externalDocs": {
    "description": "Docs",
    "url": "https://the-waterline.com/api"
  },
  "paths": {
    "/index.json": {
      "get": {
        "operationId": "getIndex",
  ...

First lines only.

What's in it

One series file per data page on the site, at https://the-waterline.com/api/v1/series/{section}/{slug}.json. Every valid pair is listed in latest.json (its id and series_url fields).

SectionSeriesExample
ReservoirsStorage vs the historical normal for major western reservoirs. 24 Blue Mesa Reservoir water level
DroughtDrought by western state, week over week, with the counties we track on each state's page. 11 Arizona drought
AllocationsCVP and SWP allocation announcements, as they land. 1 CVP and State Water Project allocations
StreamflowDaily mean discharge at basin-representative gauges. 13 American River at Fair Oaks streamflow
SnowpackSnow water equivalent vs the 1991-2020 median, by state and river basin. 5 California snowpack
HistoryThe full record behind the history guides, year by year. 3 Blue Mesa Reservoir water level history
heatmap 1 The West on one map

Fields every response carries

In latest.json and each series file, headline is the value exactly as the site shows it (with its unit), values / series carry the raw numbers with their dates, and status is current or not_current. A series that is out of season or not recently quoted says so, with last_quoted, rather than passing an old reading off as today's. See an example series.

Use, credit and limits

Free to use and republish with attribution; no key or sign-up. The underlying figures are public records from the agencies named in each series' provenance; The Waterline collects, checks and publishes them.

Attribution: Credit The Waterline (the-waterline.com) with a visible link to the page the figure came from; every record carries its page_url.

No rate limit is set and there is nothing to sign up for: the files are static and served from Cloudflare's network. Please cache responses rather than polling; they change only when the site rebuilds. Fields are only ever added within v1, never renamed or removed. Questions or a series you need: contact us. How each number is collected: methodology.