---
title: "Ashrae Zones Endpoint"
method: POST
path: "/api/stations/ashrae-zones"
tags: ["Stations and data"]
---

# Ashrae Zones Endpoint

`POST /api/stations/ashrae-zones`

## Request

- Base URL: `https://epw.tools`
- URL: `https://epw.tools/api/stations/ashrae-zones`
- Auth: none declared

Best-effort ASHRAE 169-2021 zone tagging for a page of stations.

Deliberately a separate endpoint from nearby_stations_endpoint, not an
inline tag like Köppen: unlike koppen_at_points() (one ~60ms local
raster read), ashrae_zone_at_points() makes real NASA POWER network
calls (climatology has no batch-point API) plus a per-grid-cell
nearest-station snap against an 11.5k-row table -- grid-deduplicated
and parallelized, but still ~2-5s for a page of 80 stations. Folding
that into the map's initial station search would make every map click
feel slow; instead the frontend renders markers immediately from
nearby_stations_endpoint and calls this endpoint after, filling in
zones as they arrive. Any failure degrades to all-None, same
best-effort contract as the Köppen tag.

## Request body

- AshraeZoneRequest
  - `points` AshraeZonePoint[], required
    - `id` string, required
    - `lat` number, required
    - `lon` number, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/epw/apis/epw-tools-api.md) · [All operations](https://skmtc.dev/epw/apis/epw-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/epw/apis/epw-tools-api/revisions/e6b60fc7a6d7?raw)
