Environmental Data API
The same data the Observatory shows, as JSON and CSV. Every response names its source; no key is needed for the public endpoints.
The same data the Observatory shows, as JSON and CSV. Every response names its source; no key is needed for the public endpoints.
/api/v1/. The older data routes above are frozen as they are; a breaking change will ship under /api/v2/…, never in place./api/statsstablepublic · CORS openNational summary: active-fire detections (24 h, 7 d, by province), reported incidents (7 d, 30 d, deaths, by type), earthquakes (30 d) and the fire-detection year to date against the average by this date.
{ ok, generated, fires, hazards, quakes, history }curl https://observatory.geosutra.com/api/stats
/api/hazardsstablepublicDisaster incidents reported to BIPAD for Nepal. Records are reported incidents; some points are district default locations, not incident sites. Future-dated records are dropped.
days 1–365 (default 30){ ok, source, days, from, to, fetched, fields, rows }; rows are arrays in fields order: id, lng, lat, day (NPT), hazard id, deaths, injured, missing, houses destroyed, titlecurl "https://observatory.geosutra.com/api/hazards?days=7"
/api/firmsstablepublicNASA FIRMS VIIRS S-NPP near-real-time active-fire detections for Nepal's bounding box (clip to the boundary yourself). A detection is a satellite-observed thermal anomaly, not a confirmed wildfire.
days 1–90 (default 2); windows over 5 days are stitched from 5-day requestscurl "https://observatory.geosutra.com/api/firms?days=5"
/api/projectionbetapublicAnnual mean 2 m temperature to 2050 from seven CMIP6 HighResMIP models (SSP5-8.5-like forcing) at the nearest 0.1° point. Use the change between periods, not the absolute level; models run warmer or cooler than the ground.
lat, lng (rounded to 0.1°){ years, models, byModel: { MODEL: [°C | null …] } }curl "https://observatory.geosutra.com/api/projection?lat=28.2&lng=84.0"
/api/askbetapublic · rate-limitedTurns a question into a registered method, an area and a period — the interpretation step only. It never computes an environmental number; run the method in the Observatory or through the engine.
{ "question": "flood extent in Bidur after 26 August 2026" }{ status, intent: { analysis, area, start_date, end_date, event_date, … } }curl -X POST https://observatory.geosutra.com/api/ask -H "content-type: application/json" -d '{"question":"tree cover loss in Chitwan since 2015"}'/api/statusstablepublic · CORS openLive health of every source the Observatory depends on, from checks made on request. Status: operational, delayed, degraded or unavailable.
{ checked_at, overall, components: [{ id, label, status, detail, latest_source_date, latency_ms }] }curl https://observatory.geosutra.com/api/status
/version.jsonstablepublicRelease manifest: Observatory version, commit, build time, recipe registry, catalogue, engine and methodology versions.
curl https://geosutra.com/version.json
/data/recipes.jsonstablepublicThe recipe registry: every analysis method with its data, algorithm, parameters, resolution, uncertainty, validation status, version, changelog and what it is not suitable for.
{ _meta, sources, recipes }curl https://observatory.geosutra.com/data/recipes.json
/api/v1/jobsbetaapproved account (Bearer token)The GeoSutra Engine: submit a heavy analysis as an asynchronous job and poll it. The result is the same Evidence object the Observatory shows, with provenance. A failed job carries error_info (code, reason, what to do).
{ recipe, geometry (GeoJSON Polygon/MultiPolygon, EPSG:4326, inside Nepal), period?: { start, end }, parameters? }; GET /api/v1/jobs/<id>{ decision, job: { id, status, stage, progress, evidence, output_refs, error_info } }curl -X POST https://observatory.geosutra.com/api/v1/jobs -H "Authorization: Bearer $TOKEN" -H "content-type: application/json" -d @job.json
fire_years · fire_series · hazard_years · hazard_seriesstableapproved account; fire_years('NP') is publicDaily history since 2012 of active-fire detections and reported incidents, for Nepal, a province (NP03) or a district (NP0301), through the Supabase REST RPC endpoint.
p_region, and for series p_from, p_to (YYYY-MM-DD)curl -X POST https://vxlkmpqfqwzzkpthzcna.supabase.co/rest/v1/rpc/fire_years -H "apikey: <publishable key>" -H "content-type: application/json" -d '{"p_region":"NP"}'