Quickstart
Fetch satellite wildfire data from our low-latency API and run a fire spread.
1. Get a token
Create an API client under Settings → API clients at app.deepfire.co. See Authentication for the details.
export TOKEN=$(curl -s -X POST "https://api.deepfire.co/v1/token" \
-H "Content-Type: application/json" \
-d "{\"client_id\": \"$DEEPFIRE_CLIENT_ID\", \"client_secret\": \"$DEEPFIRE_CLIENT_SECRET\"}" \
| jq -r .access_token)
2. Fetch hotspots
Get 10 hotspots.
curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items?f=application/geo%2Bjson&limit=10"
The response is a GeoJSON FeatureCollection — one Point feature per detection
(truncated):
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "hotspots.3f9c2a1e-8b4d-4c7a-9e2f-1d5b6a7c8e90",
"geometry": { "type": "Point", "coordinates": [-120.4512, 38.7734] },
"properties": {
"cluster_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"observed_at": "2026-09-09T13:42:00Z",
"source": "VIIRS_NOAA20_NRT",
"confidence": "HIGH",
"fire_radiative_power": 42.7,
"country": "US",
"active": true
}
},
...
],
"numberReturned": 10,
"timeStamp": "2026-09-09T14:00:12Z",
"links": [
{ "rel": "next", "type": "application/geo+json", "href": "https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items?f=application/geo%2Bjson&limit=10&startIndex=10" }
]
}
See Hotspots for what each property means.
3. Active hotspots in a bounding box
Combine a spatial filter (bbox, WGS84 lon/lat) with an attribute filter
(CQL2). Example: currently active detections over California.
curl -sG -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items" \
--data-urlencode "bbox=-125,32,-114,42" \
--data-urlencode "filter-lang=cql2-text" \
--data-urlencode "filter=active = true" \
--data-urlencode "limit=1000" \
--data-urlencode "f=application/geo+json"
4. Fetch hotspot by ID
Feature IDs look like hotspots.<uuid> and come from items responses:
id=$(curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items?f=application/geo%2Bjson&limit=1" \
| jq -r '.features[0].id')
curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items/$id?f=application/geo%2Bjson"
5. Run a fire spread
Take the cluster_id of an active hotspot and simulate 12 hours of spread from it. This
example picks one in Larimer County, Colorado (bbox + country = 'US') — widen the bbox if
nothing is burning there right now:
cluster_id=$(curl -sG -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items" \
--data-urlencode "bbox=-106.2,40.25,-104.94,41.0" \
--data-urlencode "filter-lang=cql2-text" \
--data-urlencode "filter=active = true AND country = 'US'" \
--data-urlencode "limit=1" \
--data-urlencode "f=application/geo+json" \
| jq -r '.features[0].properties.cluster_id')
sim_id=$(curl -s -X POST "https://api.deepfire.co/v1/fire-spread/simulations" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d "{\"clusterId\": \"$cluster_id\", \"durationHours\": 12}" \
| jq -r .id)
curl -s -H "Authorization: Bearer $TOKEN" \
"https://api.deepfire.co/v1/fire-spread/simulations/$sim_id"
Poll the last call until status is COMPLETED; result then holds one spread polygon per
hour. See Fire spread for models, ensembles and ignition options.
