---
title: "`GET /v1/weather/frames/gfs/{run}/{field}/{file}`: one frame file, verbatim."
method: GET
path: "/v1/weather/frames/gfs/{run}/{field}/{file}"
tags: ["live"]
---

# \`GET /v1/weather/frames/gfs/{run}/{field}/{file}\`: one frame file, verbatim.

`GET /v1/weather/frames/gfs/{run}/{field}/{file}`

## Request

- Base URL: `https://api.mapmap.ai`
- URL: `https://api.mapmap.ai/v1/weather/frames/gfs/{run}/{field}/{file}`
- Auth: one of:
  - HTTP bearer
  - API key in query parameter `api_key`

One forecast frame file, served verbatim: a global equirectangular PNG for `rain`, `temp`, `cloud`, `gust` or `mslp`, or a wind PNG with its JSON sidecar. `file` is `fHHH.png`, `fHHH.json` or the `.half` variants. The run must be one `GET /v1/weather/frames` lists. Run-keyed and never rewritten, so it is cached as immutable (`private`, because the resource is key-gated), with an `ETag`; `If-None-Match` answers 304. PMTiles frames are not served here; use the `tiles` template. A forecast, not an observation; derived from NOAA GFS and modified by MapMap. One Standard unit per file requested.

## Path parameters

- `run` string, required
- `field` string, required
- `file` string, required

## Response `200`

The file's bytes

## Other responses

- `304`: Not modified (If-None-Match matched the ETag)
- `404`: `not-found`: unknown shape, unlisted run or no such file. Not billed
- `501`: Weather frames not enabled (`SN_WEATHER_DIR` unset). Not billed

---

[API](https://skmtc.dev/mapmap/apis/sn-gateway.md) · [All operations](https://skmtc.dev/mapmap/apis/sn-gateway/llms.txt) · [OpenAPI document](https://skmtc.dev/mapmap/apis/sn-gateway/revisions/2293be8b4c38?raw)
