Deforestation Check¶
The /deforestation_check API call implements a combination of a change detection routine and publicly-available deforestation datasets
to provide a direct (i.e. plot-specific) deforestation assessment that is both comprehensive and high-confidence,
in order to ensure ease of auditability and verifiability in the context of the European Union Deforestation Regulation (EUDR).
Key Datasets¶
The change detection algorithms implemented and datasets are the following:
Change Data, i.e. data that identifies deforestation and degradation events:
-
Epoch's Dynamic World-CCDC change detection: The CCDC algorithm (Zhu et al., 2014) implemented in earth engine is applied to time series of Sentinel-2 imagery to provide 10m resolution detection of woody cover change. The CCDC algorithm is a peer-reviewed and open-source algorithm which is extremely versatile in terms of change detection in satellite imagery, and safe to say the most commonly used change detection algorithm for landscape disturbances detection like deforestation. In order to ensure that tree cover change is detected, Dynamic World's (Brown et al., 2022) "Trees" Probability time series is used in combination with Sentinel-2 red, red-edge, near-infrared and short-wave infrared bands. Running CCDC on a combination of tree cover probabilities and raw satellite bands which have sensitivity to woody perennial vegetation, has the benefits of reducing the false positive rates by reducing the detection of changes unrelated to tree cover loss. The Dynamic World "Trees" class is the most accurate of the classes as per different validation studies (Venter et al., 2023, Brown et al., 2022), and responds very well to real world disturbances in forests. Venter et al., 2023 reports accuracies of 72-87% across global forest biomes, which is similar to WorldCover (Zanaga et al., 2022) and other global land cover datasets, but has the advantage of being near-real time, i.e. a new prediction is made for every new sentinel-2 acquisition). The RADD deforestation alerts from GFW are tailored to detecting changes in canopy cover, but detects all changes, even those which are non-permanent and/or seasonal, also yielding high false positive rates due to its sensitivity. The RADD alerts were designed with near-real time applications in mind, and by design over-detection is better than under-detection for forest management and conservation applications. The CCDC approach avoids this problem of over-detection by looking at a time series starting 3 years prior to the user-provided date, so it can capture phenology (i.e; seasonality in forest growth) and separate anthropogenic change from natural or climate-driven change. CCDC is also a vetted algorithm by the EU Forest Observatory.
-
GFW-GLAD annual forest loss: This annual forest loss dataset (Hansen et al., 2013) available through Global Forest Watch is a well established dataset and has been typically used for reporting on deforestation and forest loss. The SCo2-API /deforestation_check/ leverages this dataset as it is accurate, but conservative (tendency to under-detect, partly due to a lower detection resolution of 30m, whereas the CCDC-Dynamic World detection outputs above is 10m). Moreover, the forest loss dataset only provides year of deforestation rather than specific dates, which may be useful for verification and auditing purposes, as well as support operational use of the data on the ground. The API call returns the GLAD detection alongside the CCDC detection, and provides the agreement between the two datasets, as a way to provide additional confidence in the results.
-
Epoch's Biomass change trends: Change detection approaches like the above two datasets are great at identifying clear-cuts and other major forest loss occurrences, but are not effective at identifying degradation taking place over timescales longer than a few months to a year. Indeed, a lot of perennial native vegetation is lost due to degradation and not deforestation (Bourgoin et al., 2024), which identifies a need for incorporating annual biomass stock change additionally to clear-cut events. Epoch's biomass emissions API is leveraged under the hood by the
/deforestation_checkendpoint to provide a complementary detection of forest degradation over timescales longer than a year (i.e. between EUDR cut-off date up until now). This ensures that all types of forest loss (deforestation and degradation) are captured, which aligns with the EU's definition of deforestation in the context of EUDR. -
JRC-TMF annual deforestation: This annual deforestation dataset (EU Forest Observatory) is a well established dataset and has been typically used for reporting on deforestation and forest loss. The SCo2-API /deforestation_check/ leverages this dataset as it is accurate, and more conservative in terms of mapping deforestation of natural forests only. Moreover, the deforestation dataset only provides detection for the humid tropics, and the year of deforestation until 2022 rather than specific dates, which may be useful for verification and auditing purposes, as well as support operational use of the data on the ground. The API call returns the TMF detection alongside the CCDC and GLAD detections, and provides the agreement between the three datasets, as a way to provide additional confidence in the results.
Natural Forest Mask, i.e. data that identifies reference natural forest cover at the time of the EUDR cut-off date (2020-12-31):
-
JRC-GFC2020 Forest Mask: This dataset has been promoted by the EU Forest Observatory as one of the baseline reference forest mask to use. For the sake of completeness, we overlay the detected changes with this forest mask, and compute the change areas that overlap with that mask from those that do not. This ensures that no information is lost, as we have seen that this JRC forest mask is qualitative, but conservative in certain areas (i.e. underestimates forest cover in tropical dry and semi-arid areas). This enables reporting of both figures (changes overlapping with the mask and not), and ensures optimal auditability.The JRC forest mask is not used anymore, as it is not sufficiently accurate at discerning between natural and commodity forests, thus yielding very high false positive rates. -
JRC-TMF2020 Forest Mask: This dataset has been promoted by the EU Forest Observatory as one of the baseline reference forest mask to use. The source of this data is the same as the JRC-TMF annual deforestation, but the forest extent of the year 2020 is extracted as a forest mask. This mask is more conservative than JRC-GFC2020 as it maps the extent of natural forest better. However, it is only available in the humid tropics. For the sake of completeness, we overlay the detected changes with this forest mask, and compute the change areas that overlap with that mask from those that do not. This ensures that no information is lost, as we have seen that this JRC forest mask is qualitative, but conservative in certain areas (i.e. underestimates forest cover in tropical dry and semi-arid areas). This enables reporting of both figures (changes overlapping with the mask and not), and ensures optimal auditability.
-
Google DeepMind Natural Forests of the World 2020: This global dataset (Nature Trace Catalog) provides a comprehensive 10-meter resolution map of natural forest probability for 2020, specifically developed to support initiatives like the European Union's Deforestation Regulation (EUDR). The dataset uses a multi-modal temporal-spatial vision transformer model that analyzes seasonal multi-temporal Sentinel-2 satellite imagery and topographical data to distinguish natural forests (including primary, naturally regenerating secondary, and managed natural forests) from planted forests, tree crops, and other land cover types. This probabilistic map allows for flexible threshold application to create binary natural forest maps tailored to specific regional needs, making it particularly valuable for global EUDR compliance assessments where other datasets may have geographic limitations.
-
Forest Data Partnership Forest Persistence: Due to the essential nature of distinguishing between natural forest cover and commodity forest cover for the purpose of EUDR compliance, and the geographic limitation of the JRC-TMF2020 Forest Mask (only available between the tropics), the FDP Forest Persistence layer is used to identify areas of forest stands that are natural (i.e. not commodity stands), using an adaptive probability threshold depending on the region.
-
Forest Data Partnership Commodity Probability Models: In order to improve the identification of natural forest cover in the reference year (2020), we further leverage the FDP Commodity Probability Models. These enable to reduce the false positive of the natural forest mask, by identifying areas that are likely to be commodity forests. The commodity layers are also used for automated identification of commodity plots for probabilistic deforestation risk assessment, an approach described in more detail in the probabilistic deforestation checks section.
-
WDPA protected areas: UNEP's world database on protected areas (WDPA), is used to check legality of a certain agricultural or forestry operation. This enables a quick assessment of whether the provided plots overlap with protected areas, and by how much. The WDPA areas are overlaid with the detected change, to provide information about the illegality of agricultural operations and/or deforestation events. We ensure that we make a distinction between protected areas falling into the definition of the IUCN/CBD, from those that do not fit the definition, as the latter may not be governed by a "legal or effective" means, which may question the illegality of the operation.
-
Other Datasets: As more datasets and detection approaches become available, both regional and global, either due to outstanding performance according to state-of-the-art, or because regulations and enforcing agencies require specific datasets or approaches, Epoch will implement these as per required, after thorough scrutiny of the fitness-for-purpose of these.
Key Considerations¶
See below a list of key considerations to keep in mind when using the /deforestation_check endpoint: 1. The area calculations are weighted, which means that the exact proportion of overlapping pixels are accounted for in the reported non-compliance areas. This avoids over- and under-accounting issues.
-
The results are as consistent as the plot boundaries (geometries) provided! If the input geometries are approximate, they WILL pick up changes surrounding the plot, which may not be managed by the supply chain actor. Therefore it is of utmost importance that the geo-referenced plots used as inputs to this API call are as accurate as possible.
-
The thumbnail shows changes in and around the plot, but the reported values in the response ONLY report changes WITHIN the plot. The change data surrounding the plot itself is shown in the thumbnail for reference, and to highlight potential risks around the plots themselves. For a more comprehensive statistical comparison to a reference area (supply shed, watershed, administrative unit), the Batch API should be used.
-
The deforestation_confidence attribute ranges from very low to very high (or no detection when there is no detected change). In some cases, the API may return
lowconfidence even whennoncompliance_area == 0if the plot overlaps natural forest and/or protected areas (WDPA), as a conservative “potential risk / needs review” flag. It is advised to visualize the thumbnails for very low, low and medium cases as it may be due to geo-referencing issues or false positives. -
The deforestation_alert attribute is the final assessment of the deforestation event, and can take no deforestation, non-critical or critical as values. This is a qualitative assessment of the deforestation event, and is based on the noncompliance_area, deforestation_confidence and agreement attributes.
Parameters and Headers¶
A request to /deforestation_check uses standard query parameters. Parameters that are hidden from the public OpenAPI schema are intentionally omitted here.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
geometry |
string (WKT) | Yes | - | Input geometry (WKT). |
area |
float | No | 4 |
Area in hectares when geometry is a POINT. |
date |
string | No | 2020-12-31 |
EUDR cut-off / baseline date (YYYY-MM-DD). |
end_date |
string | No | today (UTC) | Monitoring end date (YYYY-MM-DD). |
thumbnail |
bool | No | true |
Whether to return a thumbnail. |
map_tile |
bool | No | true |
Whether to return XYZ map tile URLs. |
degradation |
bool | No | false |
If true, include forest degradation detection based on biomass stock/trend signals in addition to abrupt change detection. |
A typical example of a payload for the /deforestation_check endpoint is the following:
- EUDR cut-off / baseline date (typically
2020-12-31) - Monitoring end date (defaults to “today” in UTC)
- Whether you want to return a thumbnail
- Whether you want dynamic XYZ map tiles to be returned
- Whether to include degradation (biomass-trend / stock-change based) detection in addition to abrupt change detection
With the headers being:
The Authorization header must be replaced by your user token. Check this page for more information on how to authenticate.
Python¶
In python, you can submit a request in the following way:
| deforestation_check.py | |
|---|---|
Javascript¶
| deforestation_check.js | |
|---|---|
Curl¶
Response¶
The response looks like this:
- all: deforestation detection (in hectare) agreement between Epoch's Dynamic World CCDC detection and Global Forest Watch's annual forest loss GLAD layer
- deforestation detection (in hectare) from Epoch's Dynamic World CCDC detection ONLY (10m resolution)
- deforestation detection (in hectare) from Global Forest Watch's annual forest loss GLAD layer ONLY (30m resolution)
- deforestation detection (in hectare) from JRC Tropical Moist Forest annual deforestation layer ONLY (30m resolution)
- The first deforestation date detected within the provided geometry
- The last deforestation date detected within the provided geometry
- Date and timestamp of API call generation
- End of monitoring period considered
- Start of monitoring period considered
- The proportion of the deforestation detection (in hectare) overlapping with the JRC-GFC2020 forest mask
- The proportion of the deforestation detection (in hectare) overlapping with the JRC-TMF2020 forest mask
- The proportion of the provided geometry (NOT the deforestation detection) overlapping with the WDPA protected areas database.
- The proportion of the provided geometry (NOT the deforestation detection) overlapping with the WDPA protected areas database fitting the IUCN/CBD definition.
- A uuid is generated, to ensure unique identification of the plot
- Commodity overlap areas in hectares (e.g.
palm,cocoa,rubber,coffee,soy,cattle,timber,sugar). Only some keys may be non-zero depending on what’s present in the plot/region. - Annual deforestation for the plot in hectares.
- RMSE for the deforestation detections. Only > 0 for the dynamic world ccdc detection. 0 for glad and tmf.
- The XYZ dynamic tile endpoint for an RGB satellite image corresponding to the monitoring_start timestamp
- The XYZ dynamic tile endpoint for an RGB satellite imagery corresponding to the monitoring_end timestamp
- XYZ dynamic tile endpoint for the GFW-GLAD forest loss corresponding to the monitoring period
- The XYZ dynamic tile endpoint for the CCDC-Dynamic World detection corresponding to the monitoring period
- The XYZ dynamic tile endpoint for the natural forest mask
- The XYZ dynamic tile endpoint for the WDPA protected areas database
- The input plot area size (in hectare)
- The original polygon geometry in WKT format
- Deforestation area detected and considered non-compliant (in hectare)
- Deforestation area detected and considered non-compliant (in percentage of plot area)
- The relative root mean square error of the CCDC harmonic fit, expressed in percentage. A higher values suggests a poorer fit, suggesting lower detection confidence. Typically, <20% is acceptable.
- An assessment of the confidence attached to the noncompliance, based on a number of met conditions described in the "Confidence" section below.
- A qualitative assessment of the deforestation event ("critical" or "non-critical"), based on the noncompliance_area, deforestation_confidence and agreement attributes.
Thumbnail Interpretation¶
This thumbnail is an example of what the /deforestation_check endpoint returns if the thumbnail flag is set to true.
The top image is the situation before any change took place in the defined monitoring period. The middle image is the situation after the detected changes took place. The image is always taken from the same time of the year in another year to the extent possible, as it ensures the season in which the images acquired are similar, making the vegetation conditions more comparable and the actual changes more visually appreciable.
The bottom image shows the change data layers used as part of the API request.
The color overlay uses three primary layers to visualize key relationships:
- Red: Forest change detection layer combining all deforestation alerts:
- GFW-GLAD Annual Forest Loss
- JRC-TMF (Tropical Moist Forest) deforestation alerts
- Epoch's Dynamic World-CCDC change detection
-
This layer shows all detected forest change events within natural forest areas (excluding water and built-up areas)
-
Blue: Commodity layer showing the target commodity presence:
- Displays the specific commodity type associated with the collection (e.g., palm oil, cocoa, rubber, cattle, soy, timber, coffee, sugar)
- Only shown when
collection_hashis provided and commodity information is available from the collection metadata -
Indicates where the target commodity is detected within the plot
-
Green: Natural forest baseline:
- JRC-GFC2020 Forest Mask, which is the reference for tree cover definition
- Shows the extent of natural forest in the area
Color Combinations: When these layers overlap, the colors blend as expected: - Cyan (Blue + Green): Commodity presence overlapping with natural forest - Yellow (Red + Green): Forest change overlapping with natural forest baseline - Magenta (Red + Blue): Forest change overlapping with commodity areas (most critical for EUDR compliance) - White (Red + Blue + Green): All three layers overlap - forest change in commodity areas within natural forest
The plot geometry outline is rendered on top of all colored layers for clear visualization of the plot boundaries.
The importance of investigating thumbnails rather than blindly trusting the returned noncompliance_area value is paramount, as this example shows. In spite of the confidence showing as high, the detection are along the borders of the plot, suggesting that the plot geo-referencing may be approximate, and/or that the detections happening on the edge of the plots are spilling over into the plot due to relatively coarse (10-30m) detection resolution.
That said, the fact that deforestation is happening in direct vicinity of the plot speaks to the risk attached of sourcing from this plot.
Confidence¶
Five confidence levels are generated in order to support the interpretation of the results. The logic below is the current implementation used across the API and batch outputs. Each confidence level threshold is explained below:
| Risk Level | Criteria |
|---|---|
very high |
noncompliance_area exceeds critical threshold (>0.5 ha) |
| - The plot overlaps with any natural forest or protected areas (natural forest check) | |
| - The target commodity is detected within the plot (commodity check) | |
→ critical alert |
|
high |
noncompliance_area exceeds critical threshold (>0.5 ha) |
| - The plot overlaps with any natural forest or protected areas (natural forest check) | |
| - Commodity detection is optional - large deforestation with natural forest is significant enough on its own | |
→ critical alert |
|
medium |
noncompliance_area exceeds critical area threshold (>0.5 ha) |
| - The target commodity is detected within the plot (commodity check) | |
| - No natural forest overlap (deforestation is in non-natural forest areas, e.g., existing plantations or degraded areas) | |
→ non-critical alert (critical alert requires forest overlap) |
|
low |
noncompliance_area exceeds non-critical threshold (>0.25 ha) OR has forest overlap (but not meeting critical threshold) |
| - OR critical threshold met (>0.5 ha) but missing both forest and commodity indicators | |
→ non-critical alert |
|
very low |
noncompliance_area is larger than 0 (but doesn't meet non-critical threshold) |
→ non-critical alert |
Note: agreement scores (e.g.
agreement.all) are returned for transparency and auditing, but the current confidence/alert classification is driven by absolute area thresholds, natural-forest / WDPA overlap, and commodity presence (for distinguishing very high vs high)—not by agreement.
Threshold Definitions:
The deforestation categorization follows the European Union Deforestation Regulation (EUDR) definition of forest and uses absolute area thresholds (no percentage-based checks) to ensure consistent classification across plots of varying sizes:
- Critical threshold:
noncompliance_area > 0.5 haAND natural forest overlap - Critical alert REQUIRES both conditions - area threshold AND forest overlap
- This ensures deforestation is actually in forested areas, not in existing plantations or degraded areas
- Non-critical threshold:
noncompliance_area > 0.25 ha(absolute area only) OR has natural forest overlap (but not meeting critical threshold)
Important distinction: - Critical alert = area > 0.5 ha AND natural forest overlap (both required) - Non-critical alert = area > 0.5 ha but NO natural forest overlap, OR area > 0.25 ha, OR has forest overlap but not meeting critical threshold - Large deforestation (>0.5 ha) without forest overlap is still significant but gets non-critical alert (e.g., deforestation in existing plantations, degraded areas, etc.)
EUDR Forest Definition:
The system adheres to the EUDR definition of forest, distinguishing between natural forests and commodity forests using multiple authoritative datasets:
- JRC-TMF2020 Forest Mask: Baseline reference for natural forest extent in the humid tropics
- Google DeepMind Natural Forests of the World 2020: Global 10-meter resolution probabilistic map of natural forest probability
- Forest Data Partnership Forest Persistence: Identifies natural forest stands using adaptive probability thresholds
- WDPA Protected Areas: Protected area overlaps are considered in the natural forest assessment
Examples: - Any plot size: Critical if deforestation > 0.5 ha, Non-critical if deforestation > 0.25 ha (but ≤ 0.5 ha) - The use of absolute thresholds ensures consistent EUDR compliance assessment regardless of plot size
Natural Forest Check: The natural forest check verifies that the plot actually overlaps with natural forest or protected areas. This check:
- Simply requires any overlap (> 0 ha) with natural forest or protected areas in the year 2020 (prior to EUDR cut-off)
- Does not impose strict percentage thresholds (previously required >25% overlap)
- Ensures the plot is actually in forested areas without being overly restrictive
- Combines natural forest overlap with WDPA protected areas overlap for comprehensive coverage
Commodity Check: The commodity check verifies that the target commodity (the crop type associated with the collection) is actually present within the plot. This check:
- Uses commodity-specific datasets (e.g., palm oil, cocoa, rubber, cattle, soy, timber, coffee, sugar) to detect commodity presence
- Commodity presence is OPTIONAL for "high" confidence - it acts as a confidence booster rather than a requirement
- Large deforestation (>0.5 ha) with natural forest overlap is significant enough to achieve
highconfidence even without commodity detection - Commodity presence helps distinguish
very high(with commodity) vshigh(without commodity) confidence for critical cases - This approach accounts for potential accuracy limitations in commodity detection layers - we don't want to miss critical deforestation due to imperfect commodity mapping
- Confidence hierarchy:
- Very high: Critical + forest + commodity (all indicators) → critical alert
- High: Critical + forest (forest is most reliable, even without commodity) → critical alert
- Medium: Critical + commodity (commodity present but forest missing) → non-critical alert
- Low: Critical only (missing both indicators) → non-critical alert
- This hierarchy reflects that forest overlap is more reliable than commodity detection
- If no commodity information is available (e.g.,
collection_hashnot provided), the system defaults to assuming commodity presence for backward compatibility
For confidence levels from low to high, it is recommended to manually inspect the thumbnails to get absolute certainty of the outputs.
The underlying values used to determine the confidence levels are available as part of the API response, so the user can leverage these to make
their own rule-based system for reporting.
Epoch provides the deforestation_alert value as its own interpretation of the confidence levels, and categorizes
deforestation events ranging from:
-
highandvery highascritical(both require forest overlap) -
medium,low, andvery lowasnon-critical
no deforestation is provided as a value when absolutely no detection has been identified,
neither from off-the-shelf datasets, nor from Epoch's change detection.
The deforestation_alert value remains indicative,
the idea being to simplify auditing by being as transparent as possible in how the verification takes place.

