Quickstart
No signup, no key — every example on this page is copy-paste runnable.
Append f=application/json to get JSON; without it most endpoints render as HTML in a
browser (handy for exploring).
1. Explore the service
# Landing page — links to conformance, collections, and the OpenAPI definition
curl -s "https://ogc.deepfire.co/ogc/features/v1?f=application/json"
# What can this server do? (conformance classes)
curl -s "https://ogc.deepfire.co/ogc/features/v1/conformance?f=application/json"
# List collections
curl -s "https://ogc.deepfire.co/ogc/features/v1/collections?f=application/json"
2. First features
# The first 10 hotspots as GeoJSON
curl -s "https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items?f=application/json&limit=10"
3. Live fires 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 "https://ogc.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/json"
4. One feature by ID
Feature IDs look like hotspots.<uuid> and come from items responses:
id=$(curl -s "https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items?f=application/json&limit=1" \
| jq -r '.features[0].id')
curl -s "https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items/$id?f=application/json"
From code
The same live-fires query in Python and Node — plain HTTP, no SDK needed:
import requests
r = requests.get(
"https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items",
params={
"bbox": "-125,32,-114,42",
"filter-lang": "cql2-text",
"filter": "active = true",
"limit": 1000,
"f": "application/json",
},
timeout=60,
)
r.raise_for_status()
for feature in r.json()["features"]:
print(feature["id"], feature["properties"]["observed_at"])
const url = new URL(
"https://ogc.deepfire.co/ogc/features/v1/collections/deepfire:hotspots/items",
);
url.search = new URLSearchParams({
bbox: "-125,32,-114,42",
"filter-lang": "cql2-text",
filter: "active = true",
limit: "1000",
f: "application/json",
});
const { features } = await fetch(url).then((r) => r.json());
for (const feature of features) {
console.log(feature.id, feature.properties.observed_at);
}
Collection IDs contain a colon
Most HTTP clients accept the : in deepfire:hotspots as-is in a URL path.
Percent-encode it as deepfire%3Ahotspots if yours complains.
Where next
- Filtering — CQL2, bounding boxes, time windows.
- Paging & bulk export — result sets beyond one page.
- API Reference — every parameter, with runnable panels.