API overview
The public, read-only Is The Mountain Out? API. No key, no account, just curl and a view of Tahoma.
Want the mountain's status on your dashboard, your Discord bot, or the e-ink frame by the coffee maker? The Is The Mountain Out? API shares what the community has reported, and the public endpoints need no API key, no account and no token.
curl https://api.isthemountainout.com/v1/statusMountain Status
The current answer to the big question.
Reports
Sightings submitted by the community.
Stats
Aggregate counts and visibility history.
Map & Images
Hexagon map data and rendered map images.
Content
Webcams and release notes.
Conventions
- Base URL:
https://api.isthemountainout.com/v1. Every path in this reference (/status,/reports, ...) hangs off it. - Versioning: The same endpoints also answer at the bare paths (
https://api.isthemountainout.com/status). Those are legacy: frozen, still working, but new integrations should use/v1. - Format: JSON, except the two PNG map-image endpoints.
- Wrapping: Resource endpoints wrap results in a top-level
datakey. Summary endpoints (/status,/stats,/status-stats,/status/rolling-stats,/visibility-history,/changelog/entries) return plain JSON. Each operation page shows its exact shape. - Timestamps: ISO 8601. Report
created_atandobserved_athave millisecond precision. - Days: "Today" and per-day figures follow the Pacific reporting day, not UTC.
- Mountain states:
mountain_not_out,mountain_peaking_out,mountain_halfway_out,mountain_mostly_out,mountain_out. A "sighting" meansmountain_mostly_outormountain_out.
Rate limits
Every request gets 60 requests per minute, counted per client IP for anonymous callers. /v1 and the legacy paths share the same allowance. The two map-image endpoints are tighter: 20 fresh renders per minute.
Go over and you'll get a 429 with a Retry-After header. There's also a coarser limit at the network edge whose 429 has no Retry-After, so back off on any 429 instead of hammering retry.
Caching and conditional requests
Several endpoints return a strong ETag. Send it back as If-None-Match and you'll get an empty 304 Not Modified when nothing has changed. That's fast for you and kind to our little server. Revalidation is ETag-only; If-Modified-Since isn't supported.
curl -i https://api.isthemountainout.com/v1/reports
# ...grab the ETag from the response, then:
curl -i -H 'If-None-Match: "<etag>"' https://api.isthemountainout.com/v1/reportsPagination
List endpoints use cursor pagination: 10 items per page, newest first. Follow links.next (or pass meta.next_cursor as ?cursor=) until it comes back null.
Be a good neighbor
The house rules
Poll politely (once a minute is plenty for almost everything), honor Retry-After, cache what you can, and credit Is The Mountain Out? with a link back to isthemountainout.com wherever you show our data.
FAQ
Quick answers about ITMO, including cost, how it works, location privacy, the iOS app, Android, and how to give feedback.
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`).