Skip to main content

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