Skip to content
PiSky docs ← Back to pisky.space
Docs · 2 min read

Public data API

A read-only JSON API for embedding a station's weather, sky and aircraft data elsewhere.

Every PiSky station publishes a read-only public data API at /api/v1/ on that station's own address — for example http://your-station-address/api/v1/weather. It's not a centralized service; each installation serves its own data.

It publishes nothing beyond the visitor pages: a reading hidden in the administration interface is absent from the API too, and there is no write surface at all.

Resources

  • GET /api/v1/ — index of available resources.
  • GET /api/v1/station — station profile and capabilities.
  • GET /api/v1/weather — current conditions and forecast.
  • GET /api/v1/aircraft — locally received aircraft.
  • GET /api/v1/sky — camera/sky status.
  • GET /api/v1/history — recorded weather history.

Access and rate limits

Access is open, because the data is already public on the station's own pages — an API key isn't required to read it. Keys exist only to raise the rate limit for callers who need to poll harder than an anonymous visitor should:

  • Anonymous callers: 600 requests/hour by default (station-configurable).
  • With a key (sent as an X-PiSky-Key header or ?key= query parameter): 6,000 requests/hour by default.

Every response includes X-RateLimit-Limit and X-RateLimit-Remaining headers; exceeding the limit returns 429 with a Retry-After header. Only GET and OPTIONS are accepted — anything else returns 405.

Cross-origin access

CORS is opt-in per origin. A station owner can allow specific origins, or * for any site, from their own configuration — responses carry no credentials either way.

A station owner can also disable the API entirely, in which case every resource returns 404.