List recent reports
A cursor-paginated feed of community reports, newest first, 10 per page. Reports that are hidden or moderated are not included.
Use since to poll for new reports. Passing the highest id you have seen
is lossless and recommended; an ISO 8601 timestamp also works. since is
exclusive (strictly after).
Anonymous responses are publicly cacheable and support conditional GET with
ETag / If-None-Match. The response varies on the Authorization header.
since?|Only return reports newer than this marker. Either a positive integer
report id (returns id > since) or an ISO 8601 timestamp (returns
created_at > since).
cursor?stringOpaque pagination cursor. Take it from meta.next_cursor (or the query string of links.next) of the previous page.
If-None-Match?stringThe ETag from an earlier response. If the data has not changed you get an empty 304 Not Modified.
A page of reports.
application/json- response
A cursor-paginated page of reports.
data*array<>links*meta*curl -X GET 'https://api.isthemountainout.com/v1/reports?since=48120' \ -H 'If-None-Match: "5d41402abc4b2a76b9719d911017c592"'{ "data": [ { "id": 48120, "report_id": 48120, "share_slug": "7Hk2mQ9xWbRt", "share_url": "https://isthemountainout.com/s/7Hk2mQ9xWbRt", "state": "mountain_out", "state_string": "Mountain OUT!", "state_percentage": 100, "h3_index": "8628f015fffffff", "location_name": "Seattle", "source": "app", "webcam_thumb_url": null, "image_url": "https://example.com/media/reports/48120/medium.jpg", "thumb_url": "https://example.com/media/reports/48120/hero.jpg", "photo_id": 9021, "user": null, "created_at": "2026-08-15T20:10:00.123+00:00", "observed_at": "2026-08-15T20:08:00.000+00:00" } ], "links": { "first": "string", "last": "string", "prev": "string", "next": "string" }, "meta": { "path": "string", "per_page": 10, "next_cursor": "string", "prev_cursor": "string" }}Get the current mountain status GET
Returns the current answer to "Is the mountain out?", based on the most recent report created today (Pacific time). If nobody has reported yet today, both fields are the string `"unknown"`. Responses are cacheable for 60 seconds (`Cache-Control: public, max-age=60`).
Get a single report by share slug GET
Fetch one report using the opaque `share_slug` found on a report object (and in its `share_url`). This is the JSON counterpart of the public share page. Every failure to find a shareable report returns the same `404`: an unknown slug, a removed or moderated report, and a report with nothing to show all look identical on purpose.