---
title: AI detections
description: Not every satellite hotspot is a real fire. Deepfire's agentic detection system scores each hotspot cluster on how likely it is to be a real, new fire.
---

`deepfire:ai-detections` — hotspot [clusters](/api/clusters) scored by Deepfire's detection model.

Satellite hotspots include a lot of noise: industrial heat, sun glint, gas flares, agricultural
burns and sensor artefacts. Every time a cluster is created or grows, our model looks at the
cluster's hotspots, the satellite imagery around them, and the location's history, and returns a
probability that the cluster is a real fire.

The probability is compared with a threshold calibrated per country. Clusters at or above it are
marked `is_fire: true` and are the ones that trigger detection alerts in the web app.

Clusters that are already linked to a confirmed incident are not scored again: we already know
they are real fires.

## Attributes

| Field          | Type          | Notes                                                                                     |
| -------------- | ------------- | ----------------------------------------------------------------------------------------- |
| `cluster_id`   | string (UUID) | `id` of the feature in [`deepfire:clusters`](/api/clusters)                                |
| `confidence`   | string        | `LOW` (< 0.30), `MEDIUM` (0.30–0.80) or `HIGH` (≥ 0.80)                                   |
| `probability`  | number        | 0–1 model output                                                                          |
| `threshold`    | number        | Decision threshold that applied to this cluster's country                                  |
| `is_fire`      | boolean       | `probability >= threshold`                                                                |
| `model_version` | string        | Version of the model that produced the score                                              |
| `country`      | string        | ISO 3166-1 alpha-2 code of the cluster                                                    |
| `assessed_at`  | string        | UTC timestamp of the assessment; a cluster is re-scored as new hotspots arrive            |

Prefer `confidence` over reading precision into `probability`: the buckets are what we use in
the web app, and they stay stable across model versions.

## Examples

High-confidence detections inside a bounding box:

```bash
curl -sG -H "Authorization: Bearer $TOKEN" \
  "https://api.deepfire.co/ogc/features/v1/collections/deepfire:ai-detections/items" \
  --data-urlencode "bbox=-125,32,-114,42" \
  --data-urlencode "filter-lang=cql2-text" \
  --data-urlencode "filter=confidence = 'HIGH'" \
  --data-urlencode "limit=50"
```

Response (truncated):

```json
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": "ai-detections.4b0c…",
      "geometry": { "type": "Point", "coordinates": [-120.6143, 37.2207] },
      "properties": {
        "cluster_id": "65d45ca4-a7b5-4d7e-85f3-516163c2a31d",
        "confidence": "HIGH",
        "probability": 0.93,
        "threshold": 0.5,
        "is_fire": true,
        "model_version": "2026-09-30",
        "country": "US",
        "assessed_at": "2026-10-22T18:42:10Z"
      }
    }
  ],
  "numberReturned": 1
}
```

All scores for one cluster, to see how the model's view changed as it grew:

```bash
curl -sG -H "Authorization: Bearer $TOKEN" \
  "https://api.deepfire.co/ogc/features/v1/collections/deepfire:ai-detections/items" \
  --data-urlencode "filter-lang=cql2-text" \
  --data-urlencode "filter=cluster_id = '65d45ca4-a7b5-4d7e-85f3-516163c2a31d'"
```

**[See AI detections in the web app](https://app.deepfire.co/sign-up)**

Fires flagged by our detection model on satellite data.
