agent

Plot polygon → deforestation verdict + evidence CID.

Hansen GFC + ESA WorldCover + JRC GFC2020 via emem.dev. Returns the verdict against the 2020-12-31 cut-off in Art. 2(13) Reg. (EU) 2023/1115.

post/v1/spatial/verify

Request

  • Base URL: https://eudr.dev
  • URL: https://eudr.dev/v1/spatial/verify
  • Auth: none declared

Request body

commodity'cattle' | 'cocoa' | 'coffee' | 'oil_palm' | 'rubber' | 'soya' | 'wood' required
countrystring required

ISO-3166-1 alpha-2.

quantity_kgnumber nullable
hs_codestring nullable
evidence_detail'cids' | 'anchor'

cids embeds every per-cell fact CID; anchor returns only the address and count, resolvable at /v1/evidence/{evidence_cid}. The verdict is identical either way. On a real plot the array is the large majority of the body.

Example request

{
  "polygon": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -6.11,
          5.2
        ],
        [
          -6.11,
          5.205
        ],
        [
          -6.105,
          5.205
        ],
        [
          -6.105,
          5.2
        ],
        [
          -6.11,
          5.2
        ]
      ]
    ]
  },
  "plots": [
    {
      "geojson": {
        "type": "Polygon",
        "coordinates": [
          [
            [
              -6.11,
              5.2
            ],
            [
              -6.11,
              5.205
            ],
            [
              -6.105,
              5.205
            ],
            [
              -6.105,
              5.2
            ],
            [
              -6.11,
              5.2
            ]
          ]
        ]
      }
    }
  ]
}

Response

Verdict + evidence

deforestation_freeboolean nullable
post_cutoff_loss_cellsinteger

Signed population tally of cells with post-cut-off canopy loss, not the shipped sample. This is loss OBSERVED, not deforestation found: see in_scope_loss_cells.

in_scope_loss_cellsinteger

Cells with post-cut-off loss on the plots that trip the Art. 2(13) gate — the loss the Regulation counts as deforestation. Below post_cutoff_loss_cells whenever the responder cleared a plot as non-forest at the cut-off, or under the 0.5 ha the Art. 2(4) forest definition requires. A row the responder cleared does not bar the consignment.

sub_mmu_loss_hanumber

Hectares of sub-floor loss across the consignment, present only when they reach the floor together and that is why the verdict is indeterminate. One patch below 0.5 ha is not forest; a clearing split across twenty plots is.

forest_baselinestring

The forest baseline the responder actually read, as it named it (e.g. jrc_gfc2020_v4).

precision_warningsobject[]

The responder's warnings, verbatim, that a plot's coordinates carry fewer than the six decimal digits Art. 2(28) requires of a geolocation. Omitted when there are none.

total_cellsinteger
verdict'negligible' | 'non_negligible' | 'not_in_scope' | 'indeterminate'

Consignment verdict. not_in_scope here means the commodity is outside Annex I. A per-plot row's not_in_scope means something else: the land was not forest at the 2020 cut-off, so the plot is deforestation-free by definition, and the consignment verdict can still be negligible.

risk_scorenumber nullable
country_tier'low' | 'standard' | 'high'
cut_off_datestring
loss_years_observedinteger[]

Distinct Hansen loss years in the shipped sample, ascending. Dates what was found; never counts it.

unresolved_checksstring[]

Checks this engine does not perform. Art. 3(b) legality is documentary and unobserved here.

enginestring

Example response

{
  "cut_off_date": "2020-12-31",
  "coverage": {
    "cell_size_m": 9.55
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.