GISFirePro API

Every GISFire Pro account can create one or more API keys to query its data programmatically: detections in its zones, settings, alerts sent, reports and history. This page documents the endpoints that exist today; none are promised for later.

Authentication

Every request carries an Authorization header with a key shaped like gfp_ followed by hexadecimal characters. Keys are created, named and revoked from the subscriber area, with no limit per account.

A key grants access to the data of the account that created it, never another subscriber's. A compromised key must be revoked from the subscriber area: deleting it from a configuration file is not enough once it has leaked.

Authorization: Bearer gfp_...

Endpoints

GET/api/pro/export

The detections inside your zones, as GeoJSON or CSV.

Returns the satellite detections that fell inside your monitored zones over the requested window. This export is bounded to your zones: worldwide data remains the job of the public map and NASA FIRMS.

format
"geojson" (default) or "csv".
heures
Window in hours, from 1 to 168 (7 days). Defaults to 24.

A GeoJSON FeatureCollection of points (position, acquisition time, FRP, satellite, source, zone), or an equivalent CSV file. Capped at 50,000 rows; beyond that, narrow the window.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/export?format=csv&heures=48"
GET/api/pro/zones

The list of your monitored zones.

Without a parameter, returns your zone inventory (name, area, alert settings). With `format=geojson`, returns the full FeatureCollection of footprints, the one loaded by the subscriber area and a GIS tool.

format
"geojson" for the full FeatureCollection of footprints.

An array of zones ({ id, name, surfaceKm2, alert settings, last alert }), or a GeoJSON FeatureCollection when `format=geojson`.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/zones"
POST/api/pro/zones

Create a zone.

Creates a zone from a GeoJSON Polygon or MultiPolygon in geographic coordinates (EPSG:4326). Area is capped at 25,000 km², roughly the size of a large French département: beyond that, it stops being a site to monitor and becomes a data harvest, which the footprint export serves better.

name
The zone's name (JSON body).
geometry
A GeoJSON Polygon or MultiPolygon, EPSG:4326 (JSON body).

The created zone, with its id, as 201 Created.

curl -X POST -H "Authorization: Bearer gfp_..." -H "Content-Type: application/json" \
  -d '{"name":"East range","geometry":{"type":"Polygon","coordinates":[[...]]}}' \
  "https://gisfire.saro.app/api/pro/zones"
GET/api/pro/alertes

The log of alerts and notices sent.

Returns the account's log: zone-detection alerts and personal smoke or lightning notices, together, sorted by date. Useful for catching up after a missed webhook.

limite
Maximum number of entries, from 1 to 500. Defaults to 100.

An array of entries ({ type: feu | fumee | foudre, zone, period, detections, peak FRP, sent by email/webhook/SMS, date }).

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/alertes?limite=50"
GET/api/pro/bilan

The account's report over a period.

The full report over a window: alerts received, fires archived around your zones, monthly series, per-zone exposure, aerial assets engaged. This is the material behind the monthly email summary.

periode
"30j", "saison", "12m" or "tout".
debut
Start date YYYY-MM-DD, for a custom window (overrides periode).
fin
End date YYYY-MM-DD, inclusive.
zones
Comma-separated zone ids; if absent, all zones.
detail
"0" to omit the detailed log and timeline.

An object with the period's report, plus the fire-start log, the timeline, alert delays and the aerial-assets summary when `detail` is not 0.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/bilan?periode=saison"
GET/api/pro/historique

Where fire strikes most, over time.

Rankings by French département and municipality over a period, and archived fires as points for a map. Used to measure how often fire returns around a site.

periode
"30j", "saison", "12m" or "tout".
debut
Start date YYYY-MM-DD, for a custom window.
fin
End date YYYY-MM-DD, inclusive.

An object { periode, classements, foyers }.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/historique?periode=12m"
GET/api/pro/alertes/cap

Your alert log as CAP 1.2.

The same log as /api/pro/alertes, in the OASIS CAP 1.2 format (XML) read by monitoring tools and on-call automation. The envelope is a plain <alertes> element: each <alert> inside it is a complete, detachable CAP document. Severity is always declared Unknown, on purpose: GISFire measures radiative power and a pixel count, which say nothing about what is at stake on the ground. The measurement is carried in the <parameter> elements.

limite
Maximum number of alerts, from 1 to 500. Defaults to 50.

An XML document (application/xml) in UTF-8. Each alert carries its area: the zone polygon, your alert-margin polygon, and a circle for the watch distance. Wording follows your notification language.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/alertes/cap?limite=20"
GET/api/pro/alertes/{id}/cap

A single alert as CAP 1.2.

The CAP document for one entry. A bare id (12) means a fire detection; a notice is written with its type (fumee-3, foudre-7), since the two logs have their own counters. Returns 404 if the alert does not exist or belongs to another account.

An XML document (application/xml) holding a single <alert> element.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/pro/alertes/feu-21/cap"

Loading the map into GIS software (OGC API Features)

Without writing a line of code: GISFire also speaks a standard exchange format for geographic data (OGC API Features), which mapping software such as QGIS or ArcGIS can read directly. All they need is an address and your key.

Three datasets: satellite detections (hot pixels from the last forty-eight hours), fire footprints (fires grouped into a single outline) and your monitored zones. The first two are the same data as the public map, presented in a form your software understands natively.

GET/api/ogc

The starting point of the feed.

This standard data-exchange format (OGC API Features) is understood directly by mapping software: no code to write, an address is enough. This page only holds links to the rest; a GIS program reads it first to find out where to go next.

A JSON document with links to the conformance declaration and the list of collections.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/ogc"
GET/api/ogc/conformance

What this service actually supports.

The list of standard rules this service really applies: the common core for geographic data, and the GeoJSON format. GIS software checks this list before trusting the rest; a subscriber normally has nothing to do with it.

A JSON document listing the rules supported.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/ogc/conformance"
GET/api/ogc/collections

The three available datasets.

The list of collections on offer: satellite detections, fire footprints, and your monitored zones. This is what GIS software shows so you can pick what to load on the map.

A JSON document with, for each collection, its name, description and a link to its data.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/ogc/collections"
GET/api/ogc/collections/{id}

One collection's own page.

The detail of one named collection: "detections" (hot pixels from the last forty-eight hours, all satellites combined), "emprises" (fires grouped into events) or "zones" (yours, the only one of the three tied to your account).

id
"detections", "emprises" or "zones", in the address.

A JSON document describing the collection and a link to its data.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/ogc/collections/zones"
GET/api/ogc/collections/{id}/items

The data itself, ready to load.

The collection's features, in the standard GeoJSON format any mapping software can read. A long response is split into pages: a "next" link leads to the following one, until nothing is left.

bbox
A rectangular extent: min longitude, min latitude, max longitude, max latitude, comma-separated.
datetime
A single instant, or a "start/end" interval (".." for an open end), in ISO 8601 format.
limit
Features per page, 200 by default, 2000 at most.
offset
Features to skip, for the next page (already filled in on the "next" link).

A GeoJSON FeatureCollection, with numberMatched (the total), numberReturned (this page) and a "next" link when features remain.

curl -H "Authorization: Bearer gfp_..." \
  "https://gisfire.saro.app/api/ogc/collections/detections/items?bbox=-1.6,44.6,-0.5,45.2&limit=500"

Step by step in QGIS

  1. 1Menu Layer, then Add Layer, then Add OGC API - Features Layer.
  2. 2New connection: give it a name, and as the URL use https://gisfire.saro.app/api/ogc
  3. 3Under Authentication Configurations, create one of type HTTP Header (or API Header, depending on the version), with the header Authorization set to Bearer followed by your key, e.g. Bearer gfp_....
  4. 4Save, select the connection, then Connect: the three collections (detections, emprises, zones) appear in the list.
  5. 5Tick the one you want and click Add: the layer loads onto the QGIS map, ready to be styled, filtered or combined with your own data.

Outgoing webhook

A zone can carry a webhook address: GISFire then posts JSON to it as soon as a fire detection falls inside the zone or its margin. The address is set from the subscriber area. Only detection alerts use this channel; smoke and lightning notices are personal and go out by email and SMS only.

The delivery is a single POST, with Content-Type application/json, a five-second timeout and NO retry: a failure shows in the alert log (envois.webhook false) and is caught up through GET /api/pro/alertes or its CAP equivalent, which return the same alert. Any non-2xx response counts as a failure, and redirects are not followed.

The address must be HTTPS and resolve to a public host: an internal address (127.0.0.1, 10.x, 169.254.169.254) is refused, redirects included. Timestamps are those of the detection database, written with their UTC offset ("2026-09-14 11:34:00+02") rather than strict ISO 8601. position_approximative is true when only the geostationary satellite saw the fire: the position then carries three to four kilometres of uncertainty.

{
  "type": "alerte_feu",
  "zone": { "id": 8, "nom": "Massif de Saumos" },
  "periode": {
    "debut": "2026-09-14 11:34:00+02",
    "fin": "2026-09-14 11:34:00+02"
  },
  "detections": 6,
  "frpMaxMw": 25.77,
  "position_approximative": false,
  "carte": "https://gisfire.saro.app/#11/44.8700/-1.0500"
}

What the API does not (yet) do

There is no real-time stream (websocket or SSE): each endpoint answers a one-off request. To be notified as soon as a detection occurs, use the email, SMS or webhook alerts configured on your zones, rather than repeatedly polling the API.

Export is bounded to your monitored zones and to 50,000 rows per request; beyond that, narrow the window or export zone by zone. There is no endpoint for raw worldwide data, which remains the public map's and NASA FIRMS's job.

Frequently asked questions

Do I need a specific plan to use the API?
The API is included in the Pro plan and the Organisation plan; see the plan comparison on the GISFire Pro page.
What is the rate limit?
It is not published on this page for now; reasonable use (a few requests per minute) is not a problem. Write to us if your integration has particular needs.
Are responses versioned?
Not yet by a version number in the URL. A change that would break an existing field would be announced to subscribers before being deployed.

Go further

© 2026 SARO · Gistin. All rights reserved. The interface, its presentation and the contents of GISFire are protected; reproducing or imitating them requires written permission. The source data remain the property of their respective producers, see the credits.

Legal notice · Privacy policy · GISFire v2.1.0